Tuyên bố miễn trừ trách nhiệm: đăng lại từ stackoverflow: https://stackoverflow.com/questions/67917278/site2site-wireguard-with-docker-routing-problems
Tôi đang cố gắng có hai vùng chứa, chạy trên hai RPI, hoạt động như một VPN site-to-site giữa Mạng 1 và Mạng 2.
Với thiết lập bên dưới, tôi có thể ping từ bên trong container mạng khác:
- từ docker container 1 Tôi có thể ping địa chỉ 192.168.1.1
- từ docker container 2 tôi có thể ping địa chỉ 192.168.10.1
Nhưng nếu tôi thử ping 192.168.1.1 từ máy chủ System1 (192.168.10.100) thì tôi gặp lỗi (xem hình ảnh bên dưới để hình dung những gì tôi đang cố gắng thực hiện).
Tôi hiểu rằng tôi phải thêm một tuyến tĩnh trên máy chủ system1 (192.168.10.100) để điều hướng lưu lượng truy cập cho 192.168.1.0/24 thông qua bộ chứa bảo vệ dây (172.17.0.5), do đó tôi chạy:
$i p route thêm 192.168.1.0/24 qua 172.17.0.5
tuyến đường $ ip
mặc định qua 192.168.10.1 dev eth0 proto dhcp src 192.168.10.100 số liệu 100
172.17.0.0/16 liên kết phạm vi dev docker0 proto kernel src 172.17.0.1
172.18.0.0/16 dev br-e19a4f1b7646 liên kết phạm vi hạt nhân proto liên kết src 172.18.0.1
172.19.0.0/16 dev br-19684dacea29 liên kết phạm vi hạt nhân proto src 172.19.0.1
172.20.0.0/16 dev br-446863cf7cef liên kết phạm vi hạt nhân proto src 172.20.0.1
172.21.0.0/16 dev br-6800ed9b4dd6 liên kết phạm vi hạt nhân proto liên kết src 172.21.0.1
172.22.0.0/16 dev br-8f8f439a7a28 liên kết phạm vi hạt nhân proto liên kết src 172.22.0.1
192.168.1.0/24 qua 172.17.0.5 dev docker0
192.168.10.0/24 dev eth0 liên kết phạm vi kernel proto src 192.168.10.100
192.168.10.1 dev eth0 proto liên kết phạm vi dhcp src 192.168.10.100 số liệu 100
nhưng ping tới 192.168.1.1 vẫn bị lỗi.
bằng cách chạy tcpdump trên vùng chứa 2, tôi thấy rằng một số gói thực sự đang đến vùng chứa:
root@936de7c0d7eb:/# tcpdump -n -i bất kỳ
tcpdump: đầu ra dài dòng bị chặn, sử dụng -v hoặc -vv để giải mã giao thức đầy đủ
nghe trên bất kỳ loại liên kết nào LINUX_SLL (Linux cook), chụp kích thước 262144 byte
10:11:19.885845 IP [publicIPsystem1].56200 > 172.17.0.6.56100: UDP, độ dài 128
10:11:30.440764 IP 172.17.0.6.56100 > [publicIPsystem1].56200: UDP, độ dài 32
10:11:35.480625 ARP, Yêu cầu ai có 172.17.0.1 cho biết 172.17.0.6, độ dài 28
10:11:35.480755 ARP, Trả lời 172.17.0.1 is-at 02:42:24:e5:ac:38, độ dài 28
vì vậy tôi đoán đó không phải là sự cố định tuyến trên hệ thống 1.
Bất cứ ai có thể cho tôi biết làm thế nào để chẩn đoán điều này hơn nữa?
CHỈNH SỬA 1:
Tôi đã làm bài kiểm tra sau:
- chạy 'tcpdump -ni any' trên vùng chứa 2
- đã gửi một lệnh ping từ Hệ thống 1 (từ hệ thống máy chủ) 'ping -c 1 192.168.1.1 .
Trên container 2 tcpdump ghi như sau:
tcpdump: đầu ra dài dòng bị chặn, sử dụng -v hoặc -vv để giải mã giao thức đầy đủ
nghe trên bất kỳ loại liên kết nào LINUX_SLL (Linux cook), chụp kích thước 262144 byte
15:04:47.495066 IP [publicIPsystem1].56200 > 172.17.0.3.56100: UDP, chiều dài 128
15:04:58.120761 IP 172.17.0.3.56100 > [publicIPsystem1].56200: UDP, chiều dài 32
- đã gửi ping từ vùng chứa (trong vùng chứa) 'ping -c 1 192.168.1.1 .
Trên container 2 tcpdump ghi như sau:
# tcpdump -ni bất kỳ
tcpdump: đầu ra dài dòng bị chặn, sử dụng -v hoặc -vv để giải mã giao thức đầy đủ
nghe trên bất kỳ loại liên kết nào LINUX_SLL (Linux cook), chụp kích thước 262144 byte
15:05:48.120717 IP [publicIPsystem1].56200 > 172.17.0.3.56100: UDP, chiều dài 128
15:05:48.120871 IP 10.13.18.2 > 192.168.1.1: ICMP echo request, id 747, seq 1, độ dài 64
15:05:48.120963 IP 172.17.0.3 > 192.168.1.1: ICMP echo request, id 747, seq 1, độ dài 64
15:05:48.121955 IP 192.168.1.1 > 172.17.0.3: ICMP echo reply, id 747, seq 1, độ dài 64
15:05:48.122054 IP 192.168.1.1 > 10.13.18.2: ICMP echo reply, id 747, seq 1, độ dài 64
15:05:48.122246 IP 172.17.0.3.56100 > [publicIPsystem1].56200: UDP, chiều dài 128
15:05:53.160617 ARP, Yêu cầu ai có 172.17.0.1 cho biết 172.17.0.3, độ dài 28
15:05:53.160636 ARP, Yêu cầu ai có 172.17.0.3 cho biết 172.17.0.1, độ dài 28
15:05:53.160745 ARP, Trả lời 172.17.0.3 is-at 02:42:ac:11:00:03, độ dài 28
15:05:53.160738 ARP, Trả lời 172.17.0.1 is-at 02:42:24:e5:ac:38, chiều dài 28
15:05:58.672032 IP [publicIPsystem1].56200 > 172.17.0.3.56100: UDP, chiều dài 32
vì vậy, có vẻ như các gói được xử lý khác với vùng chứa 2 tùy thuộc vào thứ mà tôi hiện đang thiếu.. nó có thể là một vấn đề iptables?
|
Trang web 1 |
Trang web 2 |
Mạng 1 dải IP |
192.168.10.0/24 |
192.168.1.0/24 |
địa chỉ hệ thống máy chủ |
192.168.10.100 |
192.168.1.100 |
cầu docker0 phạm vi |
172.17.0.0/16 |
172.17.0.0/16 |
địa chỉ vùng chứa |
172.17.0.5 |
172.17.0.6 |
Hệ thống 1 - wg0.conf
[Giao diện]
Địa chỉ = 10.13.18.2
Khóa riêng = *khóa riêng*
Cổng nghe = 56200
PostUp = iptables -A FORWARD -i %i -j CHẤP NHẬN; iptables -A FORWARD -o %i -j CHẤP NHẬN; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j CHẤP NHẬN; iptables -D CHUYỂN ĐI -o %i -j CHẤP NHẬN; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Ngang nhau]
Khóa công khai = *khóa công khai*
Điểm cuối = *system2address*:56100
IP được phép = 10.13.18.1/32 , 192.168.1.0/24
Hệ thống 2 - wg0.conf
[Giao diện]
Địa chỉ = 10.13.18.1
Cổng nghe = 56100
Khóa riêng = *khóa riêng*
PostUp = iptables -A FORWARD -i %i -j CHẤP NHẬN; iptables -A FORWARD -o %i -j CHẤP NHẬN; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j CHẤP NHẬN; iptables -D CHUYỂN ĐI -o %i -j CHẤP NHẬN; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Ngang nhau]
# đồng đẳng_casaleuven
Khóa công khai = *khóa công khai*
IP được phép = 10.13.18.2/32 , 192.168.10.0/24
Điểm cuối = *system1address*:56200