Рейтинг:0

Преобразование широковещательного пакета в одноадресный пакет с помощью iptables и ebtables

флаг in

Я боролся с этой проблемой в течение нескольких месяцев, и мои ограниченные сетевые знания не позволяют мне двигаться дальше, поэтому здесь я прошу совета.

У меня есть маршрутизатор 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 "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 Траверс-тест"

Я также добавил блюда правило для перезаписи 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-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-протокол=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

я бы ожидал IP SRC быть 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 [УВЕРЕН]

Итак... Есть ли у меня шанс как-то добиться своего результата?

joeqwerty avatar
флаг cv
Вопрос, который может привести к решению: сервер «открыт» для Интернета с единственной целью подключения к нему с помощью Teamviewer?
флаг in
Нет, это общедоступный игровой сервер. Я не знаю, есть ли у меня лучший выбор, но разделение его на собственную зону брандмауэра, подсеть и VLAN кажется наиболее эффективным способом достижения минимальной безопасности...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.