Điểm:0

Chuyển tiếp cổng WireGuard từ Máy khách trong Máy chủ

lá cờ us

Tôi đang cố gắng kết nối một cổng từ máy khách bảo vệ dây với mạng máy chủ của máy chủ.

Tôi đã cố gắng làm điều đó với IPtables nhưng tôi luôn nhận được câu trả lời là "không thể truy cập được"

Có vẻ như cấu hình của tôi có thể là vấn đề?

Cảm ơn!


Kiểm tra kết nối

root@wiretest3:~# curl -I 10.7.0.2:6060
HTTP/1.1 200 OK
Máy chủ: nginx/1.20.1
Ngày: CN, 18 tháng 7 năm 2021 10:37:38 GMT
Loại nội dung: văn bản/html
Độ dài nội dung: 988
Sửa đổi lần cuối: Thứ bảy, ngày 17 tháng 7 năm 2021 10:07:05 GMT
Kết nối: giữ nguyên
Thẻ: "60f2abc9-3dc"
Phạm vi chấp nhận: byte

root@wiretest3:~# curl -I 192.168.1.180:6060
curl: (28) Không thể kết nối với cổng 192.168.1.180 6060: Đã hết thời gian kết nối
root@wiretest3:~# curl -I 127.0.0.1:6060
curl: (7) Không thể kết nối với cổng 127.0.0.1 6060: Kết nối bị từ chối

Cấu hình máy chủ:

Máy chủ: 192.168.1.183 Mạng bảo vệ dây: 10.7.0.1

root@wiretest3:~# mèo /etc/wireguard/wg0.conf
# Không thay đổi các dòng nhận xét
# Chúng được sử dụng bởi wireguard-install
# ENPOINT wireguard.demo.net

[Giao diện]
Địa chỉ = 10.7.0.1/24
Khóa riêng tư = QAOETAJYMK3PcDhN/y+xFJKcJetm4...........
Cổng nghe = 51823

# khách hàng BEGIN_PEER
[Ngang nhau]
Khóa công khai = YxM7cwbmBm7VIyNcRdDBhtiEwFWL........
PresharedKey = W9Y0qCku0Fv1uFiMpy5ImStbs+.........
IP được phép = 10.7.0.2/32, 192.168.1.183/32
# END_PEER khách hàng

địa chỉ IP một

root@wiretest3:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 trạng thái qdisc noqueue nhóm UNKNOWN mặc định qlen 1000
    liên kết/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    máy chủ phạm vi inet 127.0.0.1/8 lo
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    inet6 ::1/128 máy chủ phạm vi 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
2: eth0@if47: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc trạng thái noqueue Nhóm UP mặc định qlen 1000
    liên kết/ether 2e:f5:1e:38:32:06 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.1.183/24 brd 192.168.1.255 phạm vi toàn cầu eth0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    inet6 fe80::2cf5:1eff:fe38:3206/64 liên kết phạm vi 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
3: wg0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1420 qdisc mq trạng thái nhóm UNKNOWN mặc định qlen 500
    liên kết/không có 
    inet 10.7.0.1/24 phạm vi toàn cầu wg0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    inet6 fe80::6613:2cc4:bb7d:6bd4/64 liên kết phạm vi quyền riêng tư ổn định 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi

Quy tắc IPtables:

    iptables -P FORWARD DROP;
    iptables -A FORWARD -i eth0 -j CHẤP NHẬN;
    iptables -t nat -A PREROUTING -p tcp --dport 6060:6060 -j DNAT --to-destination 10.7.0.2;
    iptables -w -t nat -A POSTROUTING -o eth0 -j MASQUERADE;

IPtables: (iptables-lưu)

root@wiretest3:~# iptables-save
# Được tạo bởi iptables-save v1.8.7 vào Chủ nhật ngày 18 tháng 7 13:17:28 năm 2021
*lọc
:INPUT CHẤP NHẬN [0:0]
:GIẢM VỀ PHÍA TRƯỚC [0:0]
:CHẤP NHẬN ĐẦU RA [0:0]
-A INPUT -p udp -m udp --dport 51823 -j CHẤP NHẬN
-A FORWARD -m state --state LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
-A VỀ PHÍA TRƯỚC -s 10.7.0.0/24 -j CHẤP NHẬN
-A VỀ PHÍA TRƯỚC -i eth0 -j CHẤP NHẬN
LÀM
# Hoàn thành vào CN 18/07 13:17:28 2021
# Được tạo bởi iptables-save v1.8.7 vào Chủ nhật ngày 18 tháng 7 13:17:28 năm 2021
*tự nhiên
:CHẤP NHẬN TRƯỚC [0:0]
:INPUT CHẤP NHẬN [0:0]
:CHẤP NHẬN ĐẦU RA [0:0]
:POSTROUTING CHẤP NHẬN [0:0]
-A PREROUTING -p tcp -m tcp --dport 6060 -j DNAT --to-destination 10.7.0.2
-A POSTROUTING -s 10.7.0.0/24 ! -d 10.7.0.0/24 -j SNAT --to-source 192.168.1.183
-A POSTROUTING -o eth0 -j MASQUERADE
LÀM
# Hoàn thành vào CN 18/07 13:17:28 2021
root@wiretest3:~# 

IPtables: iptables -L -n -t nat (hiện tại)

root@wiretest3:~# Sudo iptables -L -n -t nat
PREROUTING chuỗi (CHẤP NHẬN chính sách)
đích prot opt ​​nguồn đích         
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:6060 tới:10.7.0.2

ĐẦU VÀO chuỗi (chính sách CHẤP NHẬN)
đích prot opt ​​nguồn đích         

ĐẦU RA chuỗi (chính sách CHẤP NHẬN)
đích prot opt ​​nguồn đích         

Chuỗi POSTROUTING (CHẤP NHẬN chính sách)
đích prot opt ​​nguồn đích         
SNAT tất cả -- 10.7.0.0/24 !10.7.0.0/24 đến:192.168.1.183
GIẢ MẠO tất cả -- 0.0.0.0/0 0.0.0.0/0 

Cấu hình máy khách:

root@wiredocker:/etc/wireguard# mèo /etc/wireguard/wg0.conf
[Giao diện]
Địa chỉ = 10.7.0.2/24
DNS = 8.8.8.8, 8.8.4.4
Khóa riêng tư = GAF31cqwu2YSWQPdiSvlWie2Pma.........

[Ngang nhau]
Khóa công khai = 3VMnaI8JvoXZ6DthLcDy5MnVmNq..............
PresharedKey = W9Y0qCku0Fv1uFiMpy5ImStbs+...............
IP được phép = 0.0.0.0/0, ::/0, 192.168.1.0/24
Điểm cuối = wireguard.demo.net:51823
Kiên trì Keepalive = 25

địa chỉ IP một

root@wiredocker:/etc/wireguard# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 trạng thái qdisc noqueue nhóm UNKNOWN mặc định qlen 1000
    liên kết/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    máy chủ phạm vi inet 127.0.0.1/8 lo
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    inet6 ::1/128 máy chủ phạm vi 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
2: eth0@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc trạng thái noqueue nhóm LÊN mặc định qlen 1000
    liên kết/ether 76:d3:5b:64:b4:f0 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.178.178/24 brd 192.168.178.255 phạm vi toàn cầu eth0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    liên kết phạm vi inet6 fe80::74d3:5bff:fe64:b4f0/64 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 trạng thái qdisc noqueue UP nhóm mặc định 
    liên kết/ether 02:42:bb:9b:28:90 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 phạm vi toàn cầu docker0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    liên kết phạm vi inet6 fe80::42:bbff:fe9b:2890/64 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
10: veth508c767@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 trạng thái Nhóm UP mặc định 
    liên kết/ether ea:cd:96:6e:33:0b brd ff:ff:ff:ff:ff:ff link-netnsid 1
    liên kết phạm vi inet6 fe80::e8cd:96ff:fe6e:330b/64 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
15: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 trạng thái qdisc noqueue nhóm UNKNOWN mặc định qlen 1000
    liên kết/không có 
    inet 10.7.0.2/24 phạm vi toàn cầu wg0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
lá cờ us
@MichaelHampton đã thêm, xin lỗi.
Tom Yan avatar
lá cờ in
Luôn sử dụng `iptables-save` để chia sẻ quy tắc của bạn
Tom Yan avatar
lá cờ in
Tôi khuyên bạn nên rời khỏi bảng `bộ lọc` ngay bây giờ. Trước tiên, tốt hơn hãy để `nat` hoạt động như bạn mong muốn.
lá cờ us
@TomYan hiện đã thêm iptables-save, bộ lọc bảng?
Điểm:0
lá cờ in

Hóa ra làm ADNT như thế cho 127.0.0.1 dường như là không khả thi (tốt, ít nhất là đối với trường hợp ĐẦU RA), có lẽ là do thực tế là 127.0.0.0/8 là của máy chủ phạm vi hoặc những lý do tương tự.

Tuy nhiên, sau đây nftables bộ quy tắc sẽ giúp bạn đạt được những gì bạn muốn:

bảng ip viết lại {
        mở chuỗi {
                loại bộ lọc ưu tiên đầu ra hook route; chính sách chấp nhận;
                ip Daddr 127.0.0.1 tcp dport 80 ip Daddr bộ 10.7.0.2 ip saddr bộ 10.7.0.1
        }

        lặp lại chuỗi {
                loại đầu vào móc bộ lọc ưu tiên 101; chính sách chấp nhận;
                ip Saddr 10.7.0.2 tcp sport 80 ip Saddr bộ 127.0.0.1 ip Daddr bộ 127.0.0.1
        }
}
bảng ip realnat {
        chuỗi đích {
                gõ bộ lọc ưu tiên đầu ra nat hook; chính sách chấp nhận;
                ip Daddr 192.168.1.183 tcp dport 80 dnat thành 10.7.0.2
        }

        chuỗi nguồn {
                gõ nat hook postrouting ưu tiên srcnat; chính sách chấp nhận;
                ip Daddr 10.7.0.2 tcp dport 80 chuyển sang 10.7.0.1
        }
}

Thay vì thực hiện NAT đích "thích hợp", thay vào đó, bạn cần thực hiện loại viết lại "không bị theo dõi" của địa chỉ đích (và nguồn). Với sự giúp đỡ của một loại tuyến đường chuỗi, một tra cứu tuyến đường mới sẽ được thực hiện. Ngoài ra, bạn sẽ cần làm cho các lưu lượng truy cập trả lời có nguồn của chúng địa chỉ đích thay đổi trở lại 127.0.0.1 để có thể Xoăn có thể nhận ra các giao dịch.

Với đầu vào móc, nó Nên (nghĩa là KHÔNG ĐƯỢC KIỂM TRA) tránh ghi lại không mong muốn đối với các lưu lượng truy cập không dành cho chính máy chủ lưu trữ (tức là trả lời lưu lượng truy cập cho các lưu lượng được chuyển tiếp). Mặt khác, ưu tiên 101 (I E. 1 to hơn srcnat / tất cả các ưu tiên tiêu chuẩn) sẽ tránh việc ghi lại không mong muốn vào các câu trả lời đang phản hồi các yêu cầu đã được NAT'd đúng cách.

Như bạn có thể thấy, đối với 192.168.1.183 trường hợp, một bảng khác thực hiện NAT bình thường theo bảng cho 127.0.0.1 trương hợp đặc biệt.

Lưu ý rằng bộ quy tắc này chỉ dành cho Xoăning từ bên trong vùng chứa (hoặc nhiều nhất là máy chủ của nó; tôi không quen thuộc với vùng chứa và theo như tôi biết, có thể có cách tiếp cận mạng khác cho chúng). Ví dụ, nếu bạn cần vùng chứa để chuyển tiếp cho một số máy chủ khác trong 192.168.1.0/24, bạn cũng sẽ cần như vậy không cai trị trong một chuỗi gõ nat hook prerouting ưu tiên dstnat. Chuyển tiếp IP cũng sẽ cần được bật và cho phép. Và như tôi đã nói, tôi KHÔNG chắc liệu các thủ thuật viết lại ở trên có dành cho 127.0.0.1 sẽ mâu thuẫn với điều đó.

lá cờ us
iptables-restore-translate -f rules.txt cho tôi "iptables-translate-restore: dòng 1 không thành công"
Tom Yan avatar
lá cờ in
`nft -f quy tắc.txt`
lá cờ us
nó chạy tốt!!, làm cách nào tôi có thể sử dụng cái này cho nhiều cổng hơn? ví dụ 80,6060,6061,6062, tôi cần thực hiện quy tắc này cho mỗi cổng hoặc tôi có thể thực hiện cho nhiều cổng không?
lá cờ us
khi tôi cố gọi 192.168.1.183:6060 từ một máy tính khác trong cùng một mạng thì lại không thể truy cập được:/
Tom Yan avatar
lá cờ in
Vui lòng đọc câu trả lời cẩn thận hơn. Tôi đã đề cập đến những gì cần phải làm thêm cho trường hợp đó. Điều chỉnh/mở rộng bộ quy tắc cho các nhu cầu khác. Lưu ý rằng các chuỗi không thể có cùng tên trong cùng một bảng. Ngoài ra, trước khi bạn đọc tệp bộ quy tắc mới bằng `nft -f`, hãy chạy `nft flush ruleset` để xóa tệp cũ. Bạn cũng có thể tạo các quy tắc để áp dụng trên nhiều cổng hơn. IIRC, bạn có thể sử dụng một cái gì đó như `{80, 6060-6062}`. Cố gắng tìm/đọc một số tài liệu về nftables. Lướt qua `man nft` sẽ giúp ích.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.