LINUX.ORG.RU
ФорумAdmin

iptables пробросить UDP broadcast

 ,


0

3

Есть две машины. Первая живёт в подсетке 172.31.92.0/24, вторая в 192.168.0.0/24. Обе машины связаны междо собой ppp линком (сеть 10.0.0.0). В сети 172.31.92.0/24 есть хитрые желки, которые отправляют данные в своей сети бродкастом (172.31.92.255). Требуется пробросить это бродкаст на конкретную машину в сети 192.168.0.0/24 так, что бы получатель знал, что отправитель из сети 172.31.92.0/24.

Роуты настроены, т. е. с машины из подсети 192.168.0.0/24 могу пинговать машины из подсети 172.31.92.0/24 et vice vera. ssh/telnet между ними так же работает.

Пробовал на роутере из сети 172.31.92.0/24 сделать так:

iptables -t nat -I PREROUTING --dport 10026 -j DNAT --to-destination 192.168.0.84:10026

(10026 - порт, на который бродкастом шлются данные, 192.168.0.84 - тот, кто должен получать данные).

После этого на роутере в сети 172.31.92.0/24 бродкаст перестаёт приниматься, но на 192.168.0.84 ничего не приходит.

Кто может подсказать какие волшебные слова надо ещё сказать iptables, что бы всё заработало?

Гляди в сторону socat. Повесить слушать порт, ответы слать в 192.168.0.255. Что-нибудь вида socat UDP4-RECVFROM:10026,fork UDP4-SENDTO:192.168.0.255:10026 должно сработать.

BOOBLIK
()
Ответ на: комментарий от BOOBLIK

socat, как и netcat принимает только первый udp пакет и дальше глохнет.

marsijanin
() автор топика

iptables -t nat -I PREROUTING --dport 10026 -j DNAT --to-destination 192.168.0.84:10026

А покажи iptables -t nat -L, что там у тебя надобавлялось.
Да, и iptables -L FORWARD покажи.

thesis 😊😊😊😊😊
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от marsijanin

при чем тут ssh и telnet? бродкасты - это 2 уровень, iptables - это 3 . так понятнее и никаким правилом в Iptables ситуацию не поправить

xeon_greg
()
Ответ на: комментарий от thesis

iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination root:/> iptables -L -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT udp  — anywhere anywhere udp dpt:10026 to:192.168.0.84:10026

Chain INPUT (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Chain POSTROUTING (policy ACCEPT) target prot opt source destination

marsijanin
() автор топика
Ответ на: комментарий от marsijanin
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
root:/> iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       udp  --  anywhere             anywhere             udp dpt:10026 to:192.168.0.84:10026

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
marsijanin
() автор топика
Ответ на: комментарий от marsijanin

Ну вроде как надо. Или я чего-то не догоняю.

А как проверял, что пакет не прилетает к получателю? tcpdump'ом?
Покажи команду, если не лень.

thesis 😊😊😊😊😊
()
Ответ на: комментарий от thesis

господа, не путайте праведное с грешным. не ищите того чего нет. бродкасты - 2 уровень, а iptables - 3, не будет оно работать никакими правилами из iptables

xeon_greg
()
Ответ на: комментарий от xeon_greg

Ну побьемся, чего нет.
Надо же убедиться, что это стена и она бетонная.
Еще хочу задать два вопроса по понравившемуся мне утверждению:

бродкасты - 2 уровень

DHCP бродкасты точно работают именно на втором уровне?

а iptables - 3

Действие iptables SNAT/DNAT (например) точно вносит изменения именно на третьем уровне?

thesis 😊😊😊😊😊
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

Делаю

iptables -t nat -I PREROUTING -p udp --dport 10026 -j DNAT --to-destination 192.168.0.84:10026

После этого бродкаст на этой машине не принимается, т.е. куда-то эти пакеты всётаки перенаправляются.

Запускаю на принимающей машине tcpdump

sudo tcpdump -vvv 'udp and port 10026'

И тишина.

Если отправить неткатом с той машины, что должна перенаправлять бродкаст пакет вручную, то его видно

18:54:28.397919 IP (tos 0x0, ttl 63, id 29207, offset 0, flags [DF], proto UDP (17), length 33)
    10.0.0.209.54864 > mars.local.10026: [udp sum ok] UDP, length 5
10.0.0.209 - адрес шлюза.

Но ни одного бродкаст пакета

marsijanin
() автор топика

а разве броадкасты натить это норм?
вроде openvpn с tap интерфейсом работает на 2м уровне. Наверное, он сможет продавить броадкасты.
Ну да, вроде ж даже виндовые шары заводили, а у них там тоже зачем-то броадкасты

ii343hbka
()
Ответ на: комментарий от DALDON

Я пытаюсь перенаправить по признаку порт получателя, а не поризнаку бродкаста. При этом как я уже писал если сначала сделать

iptables -t nat -I PREROUTING -p udp --dport 10026 -j DNAT --to-destination 192.168.0.84:10026
, а потом запустить бродкаст, то он на роутере не принимается. Значит куда-то iptables их всё таки пихает, но до получателя они не доходят.

marsijanin
() автор топика
Ответ на: комментарий от marsijanin

а зачем так «192.168.0.84:10026» ? --dport отвечает за порт назначения

anonymous
()
Ответ на: комментарий от marsijanin

Ну фиг знает, стало быть.
Я тут подумал - может, ядро просто отказывается роутить пакеты, для которых ip указан, а mac - нет. В общем, костыль не удался.

thesis 😊😊😊😊😊
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

Ядро самосборное, потому что buildroot. Пока я не включил что-то в недрах menuconfig'а бродкаст вообще не принимался. Как вариант может нужно сделать echo 1 > /proc/куда-то там?

marsijanin
() автор топика
Ответ на: комментарий от marsijanin

Понятия не имею. А может быть, такой костыль действительно _в принципе_ недостижим.

thesis 😊😊😊😊😊
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.