Tôi đã vật lộn với vấn đề này trong nhiều tháng và kiến thức về mạng hạn chế của tôi không cho phép tôi tiến xa hơn, vì vậy tôi xin lời khuyên ở đây.
Tôi có Bộ định tuyến OpenWRT với hai mạng con là 192.168.1.x và 192.168.2.x. Trên 192.168.1.x, tôi có một PC khách đang chạy ứng dụng mà tôi không có nguồn và trên 192.168.2.x chạy một máy chủ của cùng một phần mềm. Để khám phá các máy chủ khác, máy khách sẽ gửi một quảng bá trên mạng cục bộ mà rõ ràng là sẽ không đi qua mạng con. Nhưng vì tôi biết máy chủ ở đâu, tôi muốn bằng cách nào đó "biến đổi" chương trình phát như vậy thành gói UDP unicast có địa chỉ đích của máy chủ đó.
Tôi biết điều đơn giản nhất cần làm là đưa cả máy khách và máy chủ vào cùng một mạng con, nhưng vì máy chủ cũng được hiển thị trên Internet với những người khác nhau đăng nhập bằng TeamViewer nên tôi thực sự muốn giữ nó tách biệt như khả thi.
Vì vậy, giá vé tôi đã đưa ra
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 Thử nghiệm đi ngang"
Tôi cũng đã thêm một bảng ebtables
ghi đè lên MAC đích để nó không được coi là quảng bá:
ebtables -t nat -A PREROUTING -p ip --ip-protocol udp -d ff:ff:ff:ff:ff:ff/ff:ff:ff:ff:ff:ff --ip-destination-port 10308 - j dnat --to-destination 9c:c9:eb:15:dd:ce
Bằng cách này, gói thực sự đến được máy chủ, máy chủ này sẽ gửi phản hồi của nó. Thật không may, vẫn có gì đó không ổn, vì tôi thấy các mục nhật ký này trong ĐẦU RA
chuỗi, liên quan đến chính câu trả lời:
IN= OUT=wlan0 Nguồn MAC = 9c:c9:eb:15:dd:ce MAC đích = 50:2f:9b:2a:ba:9d proto = 0x0800 IP SRC=255.255.255.255 IP DST=192.168.1.227, IP tos=0x00, IP nguyên mẫu=17 SPT=10308 DPT=51719
IN= OUT=wlan0 Nguồn MAC = 9c:c9:eb:15:dd:ce MAC đích = 50:2f:9b:2a:ba:9d proto = 0x0800 IP SRC=255.255.255.255 IP DST=192.168.1.227, IP tos=0x00, IP nguyên mẫu=17 SPT=10308 DPT=51719
tôi đã mong đợi IP SRC
được 192.168.2.36
, và gói đi qua PHÍA TRƯỚC
chuỗi chứ không phải ĐẦU RA
chuỗi. Tôi e rằng điều này bằng cách nào đó có liên quan đến theo dõi
, người đăng ký mục này ngay khi nhận được yêu cầu từ bộ định tuyến:
[MỚI] udp 17 60 src=192.168.1.227 dst=255.255.255.255 sport=65137 dport=10308 [UNREPLIED] src=192.168.2.36 dst=192.168.1.227 sport=10308 dport=65137
[CẬP NHẬT] 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
[CẬP NHẬT] 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 [ĐẢM BẢO]
Vậy... Tôi có bất kỳ cơ hội nào để đạt được kết quả của mình không?