在 dd-wrt ​​路由器上配置 iptables

在 dd-wrt ​​路由器上配置 iptables

我正在尝试设置一个 dd-wrt ​​路由器作为一些定制的 arduino 设备的子网。

这个想法是让路由器的 LAN/WIFI 对 arduino 设备开放,并且只允许流量离开 WAN 端口到公司 LAN(如果它是用于控制服务器)。

我尝试应用以下规则:

echo“允许所有路由器连接”
iptables -A 输入 -s 127.0.0.1 -j 接受
iptables -A 输出 -d 127.0.0.1 -j 接受

echo“允许所有 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“允许所有 ntp(时间)”
iptables -A OUTPUT -p udp --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A 输入 -p udp --sport 123 -m 状态 --状态 ESTABLISHED -j 接受

回显“允许 DNS”
iptables -A OUTPUT -p udp -d 10.80.91.2 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A 输入 -p udp -s 10.80.91.2 --sport 53 -m 状态 --状态 ESTABLISHED -j 接受
iptables -A OUTPUT -p tcp -d 10.80.91.2 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A 输入 -p tcp -s 10.80.91.2 --sport 53 -m 状态 --状态 ESTABLISHED -j 接受

回显“允许网络服务器”
iptables -A OUTPUT -p tcp -d 10.80.91.2 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A 输入 -p tcp -s 10.80.91.2 --sport 80 -m 状态 --状态 ESTABLISHED -j 接受

echo“放弃其他一切”
iptables -A 输入 -j DROP
iptables -A 输出 -j DROP

iptables -P 输入删除
iptables -P 转发删除
iptables -P 输出删除

不幸的是,每次我到达“iptables -A INPUT -j DROP”时,我都会失去与路由器的 telnet 连接,就像我之前设置的所有规则都被忽略一样。

这是我第一次使用 iptables,我在网上看到的所有信息似乎都表明我做得正确。

该路由器是 Linksys E2000,带有 DD-WRT v24-sp2(08/12/10)std-usb-ftp(SVN 修订版 14929)。

答案1

您尚未允许建立您在连接中使用的类型的连接。这就是为什么当您添加最后一行时连接断开的原因。

你可能想要这样一行:

-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 连接开始

希望这可以帮助。

PS 我必须检查,但您不应该使用“-P”行(最后三行),因为我认为它们会刷新表格。但我必须重新检查一下。

相关内容