Я пытаюсь настроить маршрутизатор dd-wrt в качестве подсети для некоторых специально созданных устройств Arduino.
Идея состоит в том, чтобы маршрутизаторы LAN / WIFI были открыты для устройств Arduino и позволяли трафику покидать порт WAN в локальной сети компании, только если это для управляющего сервера.
Я пробовал применять следующие правила:
echo "allow all router connections" iptables -A INPUT -s 127.0.0.1 -j ACCEPT iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT echo "allow all ping" iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT echo "allow all ntp (time)" iptables -A OUTPUT -p udp --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p udp --sport 123 -m state --state ESTABLISHED -j ACCEPT echo "allow dns" iptables -A OUTPUT -p udp -d 10.80.91.2 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p udp -s 10.80.91.2 --sport 53 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -d 10.80.91.2 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -s 10.80.91.2 --sport 53 -m state --state ESTABLISHED -j ACCEPT echo "allow webserver" iptables -A OUTPUT -p tcp -d 10.80.91.2 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -s 10.80.91.2 --sport 80 -m state --state ESTABLISHED -j ACCEPT echo "drop everything else" iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP
К сожалению, каждый раз, когда я достигаю "iptables -A INPUT -j DROP", я теряю соединение telnet с маршрутизатором, как и все правила, которые я установил ранее, которые игнорируются.
Я впервые использую iptables, и вся информация, которую я вижу в Интернете, похоже, указывает на то, что я делаю это правильно.
Маршрутизатор - Linksys E2000 с DD-WRT v24-sp2 (08/12/10) std-usb-ftp (версия SVN 14929).
Вы не разрешили устанавливать соединения того типа, который вы уже используете в соединении. Вот почему, когда вы добавляете последнюю строку, соединение разрывается.
Вам нужна такая строка:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Это говорит о том, что брандмауэр должен разрешать уже установленные и работающие соединения. (т.е. прошли все другие правила в брандмауэре.)
С учетом сказанного вам также понадобится правило, разрешающее вход ssh, например:
-A INPUT -s <source> -p tcp -m state --state NEW -m tcp --dport ssh -j ACCEPT
Это сообщает брандмауэру разрешить подключения ssh. началось.
Надеюсь это поможет.
P.S. Мне нужно будет проверить, но строки "-P" (последние три) вы не должны использовать, поскольку я думаю, что они сбрасывают таблицы. Но придется перепроверить.