Điểm:0

tại sao chuyển hướng cổng và DNAT không hoạt động với vxlan

lá cờ jp

Tôi cần tạo kết nối VXLAN giữa hai máy tính A (trên Debian với IP 192.168.30.1) và B (trên archlinux với IP 192.168.30.3) Đối với điều đó, tôi đã làm:

  • Trên A:
  Sudo ip link add vxlan1 type vxlan id 1 nolearning remote 192.168.30.3 dstport 33333 dev ens4
  liên kết sudo ip thiết lập vxlan1 lên
  Sudo ip addr add 10.0.0.106/24 dev vxlan1
  • Trên B:
  Sudo ip link add vxlan2 type vxlan id 1 nolearning remote 111.111.111.111 dstport 33333 dev ens3
  liên kết sudo ip thiết lập vxlan2 lên
  Sudo ip addr add 10.0.0.107/24 dev vxlan2

Hơn nữa, trên PC B, tôi tạo quy tắc DNAT:

  Sudo iptables -w -t nat -A OUTPUT -s 192.168.30.3 -d 111.111.111.111 -p udp --dport 33333 -j DNAT --to-destination 192.168.30.1:33333

Sau đó, tôi đã làm:

  • Trên máy tính A: ping 10.0.0.107. Điều này hoạt động như mong đợi với ping trả lời.
  • Trên máy tính B: ping 10.0.0.106. Điều này hoạt động như mong đợi với ping trả lời.
  • Trên máy tính A: nc -u -lp 12345. Trên máy tính B: nc -u 10.0.0.106 12345. Tôi dự kiến ​​sẽ đọc dữ liệu trên ứng dụng netcat trên PC A khi gửi dữ liệu bằng lệnh netcat từ PC B. Tuy nhiên tôi không đọc được gì.

Vấn đề của tôi sau đó là ở điểm cuối cùng. Tại sao trình nghe netcat của tôi không nhận được gì. Bằng cách sử dụng Wireshark trên PC A, tôi nhận được:

[kết xuất Wireshark trên PC A1

Một số thông tin bổ sung

  • PC A chạy với 'Linux debian 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux' (đây là kết quả của uname -a chỉ huy)

  • PC A IP trên ens4 là 192.168.30.1/24

  • PC B chạy với 'Linux archlinux 5.13.9-arch1-1 #1 SMP PREEMPT Sun, 08 Tháng 8 năm 2021 11:25:35 +0000 x86_64 GNU/Linux' (đây là kết quả của uname -a chỉ huy)

  • PC B IP trên ens3 là 192.168.30.3/24

  • hai máy là máy ảo Qemu bắt đầu với GNS3

  • bảng nat và filter của netfilter trên PC A trống:

seb@debian:~$ Sudo iptables -t nat -L ; Sudo iptables -t bộ lọc -L
PREROUTING chuỗi (CHẤP NHẬN chính sách)
đích prot opt ​​nguồn đích         

ĐẦU VÀO 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         

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

Chuỗi FORWARD (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    
  • Trên PC B, tôi chỉ có quy tắc DNAT và quy tắc hủy gói ICMP thuộc loại 'không thể truy cập cổng' (Đây là quy tắc tôi đã thêm cho mục đích khác):
[seb@archlinux vxlan]$ sudo iptables -t nat -L -n ; Sudo iptables -t bộ lọc -L -n
PREROUTING chuỗi (CHẤP NHẬN chính sách)
đích prot opt ​​nguồn đích         

ĐẦ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         
DNAT udp -- 192.168.30.3 111.111.111.111 udp dpt:33333 tới:192.168.30.1:33333

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

Chuỗi FORWARD (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         
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 3
Michael Hampton avatar
lá cờ cz
Tại sao bạn sử dụng NAT chứ không phải định tuyến bình thường?
sebastien dontneedtoknowthat avatar
lá cờ jp
Tại sao tôi không thể sử dụng NAT thay vì định tuyến thông thường? Tất nhiên, sử dụng NAT ở đây là vô ích nhưng thực sự câu hỏi của tôi là một phiên bản đơn giản hóa những gì tôi thực sự cần làm và nơi tôi cần NAT. Về cơ bản, trong trường hợp hoàn chỉnh, một trong các máy tính của tôi nằm sau NAT (một hộp ISP của tôi). Do đó, máy tính khác không thể truy cập trực tiếp vào máy tính đầu tiên và tôi không thể sửa đổi các quy tắc NAT trên hộp. Vì vậy, tôi đang làm việc trên vấn đề này. Hiện tại, tôi chỉ thành công trong việc làm cho ping hoạt động bằng cách chơi với thời gian của hộp conntrack của tôi. Cuối cùng, tôi muốn sử dụng nó để thực hiện tổng hợp liên kết.
sebastien dontneedtoknowthat avatar
lá cờ jp
Tôi nhận ra rằng câu hỏi của tôi cũng có thể là: làm thế nào để thực hiện các kết nối VXLAN giữa hai máy tính A và B với hai giả định. Đầu tiên, mọi gói được gửi bởi A đều đi qua một máy NAT làm thay đổi thông tin nguồn của gói. Thứ hai, tôi không muốn sửa đổi máy thực hiện NAT (vì vậy tôi không muốn thêm quy tắc tĩnh vào máy).Tuy nhiên, tôi vẫn thắc mắc tại sao sử dụng DNAT không hoạt động với VXLAN.
A.B avatar
lá cờ cl
A.B
Mặc dù ban đầu tôi không hiểu nhưng tôi đã gặp sự cố. Theo linh cảm, điều này dường như đã giải quyết được vấn đề: `ethtool --offload vxlan2 tx-checksum-ip-generic off` (và bật lại công cụ này sẽ khắc phục được sự cố). Không có lời giải thích thực sự tốt ở đây.
sebastien dontneedtoknowthat avatar
lá cờ jp
Điều này thực sự làm việc cho tôi quá. Tôi thực sự không biết tại sao vì tôi không thấy sự khác biệt giữa hai gói được gửi có và không có tx-checksum-ip-generic. Nhưng hiện tại, đây là câu trả lời tốt nhất mà tôi có.
A.B avatar
lá cờ cl
A.B
Nếu bạn xem xét kỹ, Wireshark sẽ cho biết nó *không* xác thực tổng kiểm tra cho giao thức được đóng gói. Tôi chỉ có thể cho rằng tổng kiểm tra là sai và nếu nó đã xác thực nó, nó sẽ báo tổng kiểm tra sai.

Đă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.