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