ฉันได้ตั้งค่าอุปกรณ์ TUN บนคอมพิวเตอร์แม่ข่ายโดยใช้สคริปต์นี้:
echo 1 > /proc/sys/net/ipv4/ip_forward
#do NAT on packets from our 'local' net
iptables -t nat --flush POSTROUTING
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
#initialise the tun device (tun0)
ip tuntap add dev tun0 mode tun
#give the tun device IP 10.0.0.1
ifconfig tun0 10.0.0.1 netmask 255.255.255.0 up
#disable IPv6 on tun device
sysctl net.ipv6.conf.tun0.disable_ipv6=1
#some firewall rules
iptables -A INPUT -i tun0 -d 127.0.0.0/8 -j DROP
ฉันกำลังพยายามส่งแพ็กเกจ UDP จากคอมพิวเตอร์โฮสต์ผ่าน WiFi ไปยังแล็ปท็อปของฉัน แอปพลิเคชันที่เชื่อมต่อกับอุปกรณ์ TUN เป็นแอปพลิเคชันเซิร์ฟเวอร์ที่ใช้โปรโตคอลที่คล้ายกับ SOCKS5 เพื่อใช้แพ็คเก็ต TCP ที่จัดรูปแบบแล้วสร้างแพ็คเก็ต UDP / IP และส่งไปยังที่อยู่ที่ระบุด้วย src IP (ด้วยเหตุผลบางประการ)
การส่งแพ็กเกจ UDP ผ่าน TUN ด้วยที่อยู่ src ที่ 10.0.0.2 ทำงานได้ดี ฉันสามารถรับได้มากถึง 10.0.0.0/8 โดยการเปลี่ยน netmask แต่เมื่อฉันตั้งค่า src (!) ip ของแพ็กเก็ต IP ฉันต้องการส่งผ่านอุปกรณ์ TUN เป็น 192.168.2.112 (IP จริงของโฮสต์ของฉัน) อุปกรณ์ TUN จะมารับ แต่ไม่ได้รับบนแล็ปท็อปของฉัน การใช้หลามเพื่อส่งดาตาแกรม UDP นั้นทำงานได้ตามปกติและอ่าน src IP ที่ถูกต้องบนแล็ปท็อปของฉัน อุปกรณ์ TUN ส่งแพ็กเก็ตที่สร้างขึ้นเมื่อ src IP อยู่ในช่วง 10.0.0.0/8 แต่ไม่ใช่เมื่อเป็น 192 *
iptables ว่างเปล่าบนทั้งสองเครื่องก่อนที่จะใช้สคริปต์ ฉันพลาดอะไรไป
/proc/sys/net/ipv4/conf/all/rp_filter: 1
/proc/sys/net/ipv4/conf/default/rp_filter: 1
/proc/sys/net/ipv4/conf/enp0s31f6/rp_filter: 1
/proc/sys/net/ipv4/conf/lo/rp_filter: 0
/proc/sys/net/ipv4/conf/tun0/rp_filter: 1
/proc/sys/net/ipv4/conf/wlp4s0/rp_filter: 1
/proc/sys/net/ipv4/conf/wwp0s20f0u3c2/rp_filter:1
/proc/sys/net/ipv4/conf/*/rp_filter
คืออะไร?