ฉันต้องการสร้างการเชื่อมต่อ VXLAN ระหว่างคอมพิวเตอร์สองเครื่อง A (บน Debian ที่มี IP 192.168.30.1) และ B (บน archlinux ที่มี IP 192.168.30.3)
สำหรับสิ่งนั้น ฉันได้:
ลิงค์ sudo ip เพิ่ม vxlan1 ประเภท vxlan id 1 nolearning ระยะไกล 192.168.30.3 dstport 33333 dev ens4
ลิงค์ sudo ip ตั้งค่า vxlan1 ขึ้น
sudo ip addr เพิ่ม 10.0.0.106/24 dev vxlan1
ลิงค์ sudo ip เพิ่ม vxlan2 ประเภท vxlan id 1 nolearning ระยะไกล 111.111.111.111 dstport 33333 dev ens3
ลิงค์ sudo ip ตั้งค่า vxlan2 ขึ้น
sudo ip addr เพิ่ม 10.0.0.107/24 dev vxlan2
นอกจากนี้ บน PC B ฉันสร้างกฎ 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
จากนั้นฉันก็:
- บนพีซี A:
ปิง 10.0.0.107
. สิ่งนี้ทำงานได้ตามที่คาดหวังด้วย ping ตอบกลับ
- บนพีซี B:
ปิง 10.0.0.106
. สิ่งนี้ทำงานได้ตามที่คาดหวังด้วย ping ตอบกลับ
- บนพีซี A:
nc -u -lp 12345
. บนพีซี B: nc -u 10.0.0.106 12345
. ฉันคาดว่าจะอ่านข้อมูลบนแอปพลิเคชัน netcat บน PC A เมื่อส่งข้อมูลด้วยคำสั่ง netcat จาก PC B อย่างไรก็ตาม ฉันไม่ได้อ่านอะไรเลย.
ปัญหาของฉันอยู่ที่จุดสุดท้ายแล้ว ทำไมผู้ฟัง netcat ของฉันไม่ได้รับอะไรเลย
เมื่อใช้ wireshark บนพีซี AI ฉันจะได้รับ:
[
ข้อมูลเพิ่มเติมบางอย่าง
PC A ทำงานด้วย 'Linux debian 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux' (นี่คือผลลัพธ์ของ ชื่อ -a
สั่งการ)
PC A IP บน ens4 คือ 192.168.30.1/24
PC B ทำงานด้วย 'Linux archlinux 5.13.9-arch1-1 #1 SMP PREEMPT อา. 08 ส.ค. 2564 11:25:35 +0000 x86_64 GNU/Linux' (นี่คือผลลัพธ์ของ ชื่อ -a
สั่งการ)
PC B IP บน ens3 คือ 192.168.30.3/24
ทั้งสองเครื่องคือ Qemu VM ที่เริ่มต้นด้วย GNS3
ตาราง nat และตัวกรองของ netfilter บน PC A ว่างเปล่า:
seb@debian:~$ sudo iptables -t nat -L ; sudo iptables -t ตัวกรอง -L
ห่วงโซ่ PREROUTING (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ห่วงโซ่โพสต์ (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ส่งต่อไปข้างหน้า (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
- บน PC B ฉันมีเพียงกฎ DNAT และกฎที่จะปล่อยแพ็กเก็ต ICMP ประเภท 'พอร์ตที่ไม่สามารถเข้าถึงได้' (นี่เป็นกฎที่ฉันเพิ่มเพื่อจุดประสงค์อื่น):
[seb@archlinux vxlan]$ sudo iptables -t nat -L -n ; sudo iptables -t กรอง -L -n
ห่วงโซ่ PREROUTING (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
DNAT udp -- 192.168.30.3 111.111.111.111 udp dpt:33333 ถึง:192.168.30.1:33333
ห่วงโซ่โพสต์ (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ส่งต่อไปข้างหน้า (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ดรอป icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 3