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

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

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

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

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

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

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

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

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

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

(Примечание: похоже, что опция net.ipv4.conf.все.bc_forwarding не работает)

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

Есть отличное решение с использованием инструмента socat, упомянутый в этой теме StackExchange:

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

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

Решение, упомянутое Красный смокинг (https://serverfault.com/a/267343/323199) не работает, iptables не предназначен для широковещательной передачи пакета. Это объясняется в упомянутой выше теме StackExchange.

# 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

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

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 предоставит вам синтаксис

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