Назад | Перейти на главную страницу

Перенаправить трансляцию на фиксированный IP-адрес с помощью IPTables

Мне нужно пересылать (маршрутизировать) широковещательные пакеты от нескольких беспроводных клиентов на один сервер в фиксированной сети. Беспроводная и фиксированная сеть не соединены мостом из соображений безопасности.

В следующих строках пакеты отображаются в журнале цепочки INPUT

iptables -I INPUT -i $IF_WIFI -p udp --dport 6000 -j LOG --log-prefix "I " 
iptables -I FORWARD -i $IF_WIFI -p udp --dport 6000 -j LOG --log-prefix "F "

Теперь добавляю следующее правило

iptables -t nat -A PREROUTING -p udp -d 255.255.255.255 --dport 6000 -j DNAT --to 10.0.0.10:6000

Теперь пакеты не будут отображаться ни в журнале INPUT, ни в журнале FORWARD и не будут перенаправлены в фиксированную сеть. Я ожидал увидеть пакет в журнале FORWARD

Правило PREROUTING выполняется согласно

iptables -t nat -v --list

Chain PREROUTING (policy ACCEPT 466 packets, 28575 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  404 25819 DNAT       udp  --  any    any     anywhere             255.255.255.255     udp dpt:6000 to:10.0.0.10:6000 

(обновлено) IP-переадресация включена

# cat /proc/sys/net/ipv4/ip_forward 
1

Я что-то упустил?

Более простое решение - настроить мост, но использовать ebtables вместо iptables, чтобы обеспечить соблюдение правила «только широковещательные пакеты могут проходить через мост». Вы хотите установить для политики FORWARD значение DROP, а затем использовать такое правило, как:

ebtables -A FORWARD -s FF:FF:FF:FF:FF:FF -j DROP

Это будет иметь тот же эффект, но поможет обойти трудности, с которыми вы сталкиваетесь.

(На самом деле я не уверен, что разрешение только широковещательной передачи намного безопаснее, чем разрешение всего пройти, независимо от того, как вы это реализуете)