ฉันต่อสู้กับปัญหานี้มาหลายเดือนแล้ว และความรู้ด้านเครือข่ายที่จำกัดของฉันก็ไม่อนุญาตให้ฉันก้าวหน้าต่อไป ดังนั้นฉันจึงขอคำแนะนำจากที่นี่
ฉันมีเราเตอร์ OpenWRT ที่มีสองซับเน็ต 192.168.1.x และ 192.168.2.x บน 192.168.1.x ฉันมีไคลเอนต์พีซีที่ใช้งานแอปพลิเคชันที่ฉันไม่มีแหล่งที่มา และบน 192.168.2.x ใช้งานเซิร์ฟเวอร์ของซอฟต์แวร์เดียวกัน เพื่อที่จะค้นหาเซิร์ฟเวอร์อื่น ๆ ไคลเอ็นต์จะส่งการออกอากาศบนเครือข่ายท้องถิ่นที่เห็นได้ชัดว่าจะไม่ผ่านเครือข่ายย่อย แต่เนื่องจากฉันรู้ว่าเซิร์ฟเวอร์อยู่ที่ไหน ฉันจึงต้องการ "แปลง" การออกอากาศดังกล่าวในแพ็กเก็ต UDP แบบ unicast ด้วยที่อยู่ปลายทางของเซิร์ฟเวอร์นั้น
ฉันรู้ว่าสิ่งที่ง่ายที่สุดที่ต้องทำคือนำทั้งไคลเอนต์และเซิร์ฟเวอร์มาไว้บนเครือข่ายย่อยเดียวกัน แต่เนื่องจากเซิร์ฟเวอร์ถูกเปิดเผยบนอินเทอร์เน็ตด้วยโดยที่ผู้คนต่างเข้าสู่ระบบด้วย TeamViewer ฉันจึงต้องการแยกมันออกจากกัน เป็นไปได้.
ค่าโดยสารที่ฉันคิดขึ้นมา
iptables -t mangle -A PREROUTING -p udp -s 192.168.1.0/24 -d 255.255.255.255 -m udp --dport 10308 -j TTL --ttl-set 128 -m comment --comment "Broadcast Traverse Test TTL"
iptables -t nat -A zone_lan_prerouting -p udp -s 192.168.1.0/24 -d 255.255.255.255 -m udp --dport 10308 -j DNAT --to-destination 192.168.2.36:10308 -m comment --comment "Broadcast การทดสอบการเคลื่อนที่"
ฉันยังได้เพิ่ม ebtables
กฎการเขียนทับ MAC ปลายทางเพื่อไม่ให้ถือว่าเป็นการออกอากาศ:
ebtables -t nat -A PREROUTING -p ip --ip-protocol udp -d ff:ff:ff:ff:ff:ff/ff:ff:ff:ff:ff:ff --ip-ปลายทางพอร์ต 10308 - j dnat --to-ปลายทาง 9c:c9:eb:15:dd:ce
วิธีนี้แพ็กเก็ตจะไปถึงเซิร์ฟเวอร์จริงๆ ซึ่งจะตอบกลับไป ขออภัย มีบางอย่างผิดปกติ เนื่องจากฉันเห็นรายการบันทึกเหล่านี้ใน เอาต์พุต
ห่วงโซ่ที่เกี่ยวข้องกับการตอบกลับ:
IN= OUT=wlan0 MAC source = 9c:c9:eb:15:dd:ce MAC dest = 50:2f:9b:2a:ba:9d proto = 0x0800 IP SRC=255.255.255.255 IP DST=192.168.1.227, IP tos=0x00, IP โปรโต=17 SPT=10308 DPT=51719
IN= OUT=wlan0 MAC source = 9c:c9:eb:15:dd:ce MAC dest = 50:2f:9b:2a:ba:9d proto = 0x0800 IP SRC=255.255.255.255 IP DST=192.168.1.227, IP tos=0x00, IP โปรโต=17 SPT=10308 DPT=51719
ฉันจะได้คาดหวัง ไอพีเอสอาร์ซี
เป็น 192.168.2.36
และแพ็กเก็ตจะผ่าน ซึ่งไปข้างหน้า
ห่วงโซ่และไม่ใช่ เอาต์พุต
โซ่. ฉันเกรงว่าสิ่งนี้จะเกี่ยวข้องกับ คอนแทรค
ผู้ที่ลงทะเบียนรายการนี้ทันทีที่ได้รับคำขอจากเราเตอร์:
[ใหม่] udp 17 60 src=192.168.1.227 dst=255.255.255.255 sport=65137 dport=10308 [ไม่ได้ตอบ] src=192.168.2.36 dst=192.168.1.227 sport=10308 dport=65137
[อัพเดท] udp 17 60 src=192.168.1.227 dst=255.255.255.255 sport=65137 dport=10308 src=192.168.2.36 dst=192.168.1.227 sport=10308 dport=65137
[อัพเดท] udp 17 60 src=192.168.1.227 dst=255.255.255.255 sport=65137 dport=10308 src=192.168.2.36 dst=192.168.1.227 sport=10308 dport=65137 [มั่นใจ]
ดังนั้น... ฉันมีโอกาสที่จะบรรลุผลสำเร็จหรือไม่?