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

Настройка iptables на роутере dd-wrt

Я пытаюсь настроить маршрутизатор 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" (последние три) вы не должны использовать, поскольку я думаю, что они сбрасывают таблицы. Но придется перепроверить.