Как переадресовать порт UDP Wake-on-Lan для широковещательной передачи IP с IPTABLES?

Я пытаюсь настроить Wake-on-Lan для некоторых компьютеров локальной сети дома, и кажется, что мне нужно открыть порт UDP (7 или 9 является наиболее распространенным) и перенаправить все запросы на широковещательный IP, который в мой случай 192.168.1.255.

Проблема в том, что мой маршрутизатор не позволяет мне перенаправлять что-либо на широковещательный IP.

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

Может ли кто-нибудь помочь мне с правильными командами iptables сделать то, что я хочу? Кроме того, в случае, если это не сработает, команды для того, чтобы все вернуть, тоже подойдут.

И последнее: перезагрузка маршрутизатора сохранит те записи iptables, которые были добавлены вручную, или мне нужно будет запускать их каждый раз?

3 ответа

# iptables -A PREROUTING -t nat -p udp --dport 6  -d <original destination> -j DNAT --to-destination 192.168.1.255

Это возьмет предназначенный для WOL пакет и перенаправит его на широковещательную передачу вашей сети.

Также, если вы используете производную систему Red Hat, вам нужно сохранить запись iptables, используя

# service iptables save

Есть отличное решение с помощью инструмента socatУпоминается в этой теме StackExchange:

Преобразовать одноадресный пакет UDP в широковещательную рассылку?

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

Решение, упомянутое Red Tux ( /questions/148032/kak-pereadresovat-port-udp-wake-on-lan-dlya-shirokoveschatelnoj-peredachi-ip-s-i/148041#148041), не работает, iptables не сделан для трансляции пакета. Это объясняется в теме StackExchange, которую я упоминал выше.

Некоторые маршрутизаторы (Cisco) могут пересылать направленную широковещательную передачу UDP.

Ядро Linux, начиная с версии 5.0, может это делать. Вам просто нужно указать параметр для конкретного сетевого интерфейса:

sudo sysctl -w net.ipv4.conf.eth1.bc_forwarding=1

(Примечание: это кажется вариант net.ipv4.conf.Все.bc_forwarding не работает)

Вы можете сохранить этот параметр в /etc/sysctl.conf

Добавьте что-то вроде этого:

iptables -A IN_FILTER -p udp -d 10.11.11.255 -j ACCEPT -m comment --comment "Depicus WoL"

http://linux.die.net/man/8/iptables даст вам синтаксис

Должен пережить перезагрузку, но вы никогда не сможете сказать, пока не попробуете.

Другие вопросы по тегам