ฉันกำลังทำงานกับเราเตอร์ระหว่างวิทยุ/โมเด็มภายนอกและอุปกรณ์ของฉัน โดยที่เราเตอร์ทำการเชื่อมต่อผ่านสายโทรศัพท์โดยใช้โปรโตคอล ppp ไปยังวิทยุ และตั้งกฎ iptables ระหว่าง IP ของวิทยุที่ได้รับและ IP ของอุปกรณ์ของฉัน
ฉันมีเส้นทางดังต่อไปนี้:
เกตเวย์ปลายทาง Genmask ตั้งค่าสถานะการอ้างอิงเมตริก ใช้ Iface
เริ่มต้น 192.168.1000.101 0.0.0.0 UG 0 0 0 ppp0
192.168.100.101 * 255.255.255.255 UH 0 0 0 ppp0
192.168.164.0 * 255.255.255.0 คุณ 0 0 0 eth0
และนี่คือกฎ iptables ต่อไปนี้ของฉัน:
iptables -A อินพุต -j ยอมรับ
iptables -A OUTPUT -j ยอมรับ
iptables -A ส่งต่อ -j ยอมรับ
iptables -A INPUT -i lo -j ยอมรับ
iptables -A OUTPUT -o lo -j ยอมรับ
iptables -t nat -A PREROUTING -i ppp0 -p tcp -j DNAT --to 192.168.0.110
iptables -t nat -A PREROUTING -i ppp0 -p udp -j DNAT --to 192.168.0.110
iptables -t nat -A POSTROUTING --source 0/0 -o ppp0 -j MASQUERADE
ด้วยกฎเหล่านี้ ฉันสามารถเข้าถึงทุกอย่างบนอุปกรณ์ของฉัน เช่น telnet เว็บเซิร์ฟเวอร์ และการสื่อสารอื่นๆ โดยใช้พอร์ตสูง
ปัญหาของฉันคือฉันต้องเชื่อมต่อกับอุปกรณ์ของฉันโดยใช้พอร์ตต้นทางกับพอร์ตปลายทาง และนี่ไม่ใช่ปัญหา แต่อุปกรณ์ของฉันต้องตอบสนองโดยใช้พอร์ตอื่นที่สร้างขึ้นเพื่อให้การสื่อสารนี้ดำเนินต่อไปได้
ตัวอย่างเช่น ฉันพยายามเชื่อมต่อโดยใช้พอร์ตต้นทาง 2000 กับพอร์ตปลายทาง 2001 และการตอบสนองของอุปกรณ์ของฉันกลับมาโดยใช้พอร์ตต้นทาง 21550 และพอร์ตปลายทาง 2000 แต่การตอบสนองไม่ส่งกลับไปยังไคลเอนต์ที่เชื่อมต่อกับอีกด้านหนึ่งของวิทยุ .
เมื่อใช้ tcpdump ภายในเราเตอร์ ฉันเห็นการตอบสนองของอุปกรณ์ แต่ฉันไม่สามารถหาวิธีจัดการกับการเปลี่ยนแปลงพอร์ตนี้ในกฎ iptables เพื่อส่งกลับไปยังไคลเอนต์ที่เชื่อมต่อกับอีกฝั่งของวิทยุ
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!