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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.