ทำไมอุปกรณ์ TUN ของฉันไม่ส่ง UDP / IP ไปที่ 192.168.2.x


0

ฉันได้ตั้งค่าอุปกรณ์ 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คืออะไร?
grawity

@grawity ฉันได้อัปเดตคำถามของฉันแล้ว
Minix

คำตอบ:


1

เมื่อต้องการทำซ้ำแอปพลิเคชันของคุณจะสร้างแพ็คเก็ตที่มีที่อยู่บางแห่งใส่ไว้ในอินเตอร์เฟสอินเตอร์เฟสคอมพิวเตอร์โฮสต์ของคุณส่งต่อทำการปลอมeth0และเปิดใช้งานจากนั้น eth0 จะส่งผ่าน WLAN ไปยังแล็ปท็อปของคุณ สิ่งนี้ใช้ได้กับ 10.0.0.2 เป็นแหล่งข้อมูล แต่ไม่ใช่สำหรับ 192.168.2.112

แต่ในความเป็นจริงคุณไม่ได้มีeth0อินเตอร์เฟซ แต่อินเตอร์เฟซที่มีenp0s31f6, และwlp4s0wwp0s20f0u3c2

ถูกต้องหรือไม่

ถ้าใช่ผู้ร้ายน่าจะเป็นที่คุณต้องสวมหน้ากากในส่วนต่อประสาน WLAN แทนeth0และคุณต้องสวมหน้ากากสำหรับแหล่งที่อยู่ทั้งหมดไม่เพียง 10.0.0.0/8 คำถามจริงคือวิธีการทำงานสำหรับ 10.0.0.2 ในตอนแรก แต่นั่นอาจอธิบายได้โดยส่วนหนึ่งของการกำหนดค่าของคุณคุณไม่ได้บอกเรา

คุณอาจจำเป็นต้องสวมหน้ากาก WLAN เพราะไม่เช่นนั้นคุณจะต้องกำหนดเส้นทางในส่วนอื่น ๆ ของเครือข่ายของคุณ

เครื่องมือในการตรวจแก้จุดบกพร่อง: ip route get 1.2.3.4เพื่อตรวจสอบเส้นทางและtcpdump -ni wlp4s0อื่น ๆ บนอินเทอร์เฟซทั้งหมดที่อาจน่าสนใจเพื่อดูว่าแพ็คเก็ตไปที่ใด


ฉันซ่อมสคริปต์แล้ว เมื่อถึงจุดหนึ่งฉันก็เปลี่ยนeth0เป็นwlp4soแต่ไม่แน่ใจว่าฉันเปลี่ยนไปมากแค่ไหน ฉันจะตรวจสอบสิ่งที่คุณแนะนำเมื่อฉันกลับบ้าน ฉันไม่แน่ใจว่าส่วนใดของการกำหนดค่าที่ฉันหักห้ามนอกเหนือจากซอร์สโค้ดของโปรแกรมที่เกี่ยวข้อง
Minix

หาก masquerade ทำงานบน wlp4so เมื่อทำงานแล้วนั่นควรจะเป็น สิ่งที่คุณอาจต้องการคือกฎที่หลอกลวงทุกสิ่งที่มาจากtunไปwlp4soไม่ว่าจะมาจากแหล่งใด คุณอาจต้องยอมรับทิศทางย้อนกลับสำหรับการเชื่อมต่อที่มีอยู่ทั้งนี้ขึ้นอยู่กับนโยบายเริ่มต้น ดูที่นี่สำหรับตัวอย่างที่ชัดเจน
dirkt

ดูเหมือนว่าฉันเปลี่ยนสายผิดเวลาผิดและไม่ได้ชุดค่าผสมที่เหมาะสม หลังจากเปลี่ยนอินเทอร์เฟซเป็นwlp4soและทำให้ src IP 10.0.0.2ทำงานได้ในขณะนี้ ขอบคุณมาก. ฉันได้เรียนรู้เกี่ยวกับ NAT และiptablesในกระบวนการ
Minix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.