Преобразование широковещательного пакета в одноадресный пакет с помощью iptables и ebtables
Я боролся с этой проблемой уже несколько месяцев, и мои ограниченные знания в области сетевых технологий не позволяют мне продвигаться дальше, поэтому я прошу совета.
У меня есть маршрутизатор OpenWRT с двумя подсетями: 192.168.1.x и 192.168.2.x. На 192.168.1.x у меня есть клиентский компьютер, на котором работает приложение, исходных кодов которого у меня нет, а на 192.168.2.x работает сервер с тем же программным обеспечением. Чтобы обнаружить другие серверы, клиент отправляет широковещательную рассылку в локальную сеть, которая, очевидно, не будет пересекать подсеть. Но поскольку я знаю, где находится сервер, мне хотелось бы каким-то образом «преобразовать» такую трансляцию в одноадресный UDP-пакет с адресом назначения этого сервера.
Я знаю, что проще всего было бы разместить и клиента, и сервер в одной подсети, но поскольку сервер также доступен в Интернете, и разные люди входят в систему с помощью 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 Traverse Test"
Я также добавил
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
Таким образом, пакет фактически достигает сервера, который, в свою очередь, отправляет ответ. К сожалению, что-то все еще не так, поскольку я вижу эти записи журнала в цепочке, относящиеся к самому ответу:
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 proto=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 proto=17 SPT=10308 DPT=51719
я бы ожидал
[NEW] 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
[UPDATE] 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
[UPDATE] 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 [ASSURED]
Итак... Есть ли у меня шанс как-то добиться своего результата?