Я пытаюсь настроить 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 предоставит вам синтаксис
Должен пережить перезагрузку, но вы никогда не сможете сказать, пока не попробуете.