如何使用iptables将接口限制为某些IP和端口?

时间:2014-10-18 14:23:46

标签: iptables

我想将基于Linux的路由器上的接口(eth2)限制为某些IP和端口。 eth1主要是不受限制的。

  • 路由器执行DHCP,因此我想允许这些。
  • 路由器进行NATing。
  • 路由器没有NTP,所以我想允许任何IP。
  • 路由器没有DNS,所以我想允许这个到任何IP。
  • 接口eth1背后的设备不应该对互联网进行任何限制
  • 只允许接口eth2后面的设备与某些互联网IP通信

我的配置目前看起来像这样:

iptables -F
iptables -X
iptables -t nat -F
# eth1 is 192.168.1.0/24, eth2 is 192.168.2.0/24, so I forward 192.168.0.0/16 
iptables -A FORWARD -o ppp0 -s 192.168.0.0/16 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 
sysctl -w net.ipv4.ip_forward=1 

使用这些规则一切正常,但是,即使DHCP失败

# restrict eth2
iptables -i eth2 -A INPUT -j DROP
iptables -i eth2 -A FORWARD -j DROP
iptables -i eth2 -A INPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT
iptables -i eth2 -A INPUT -p udp --dport 53 -j ACCEPT
iptables -i eth2 -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -i eth2 -A INPUT -p tcp --dport 123 -j ACCEPT
iptables -i eth2 -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -i eth2 -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -i eth2 -A FORWARD -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -i eth2 --dst 1.2.3.4 -j ACCEPT
iptables -A FORWARD -i eth2 --src 1.2.3.4 -j ACCEPT
iptables -A FORWARD -i eth2 --dst 2.3.4.5 -j ACCEPT
iptables -A FORWARD -i eth2 --src 2.3.4.5 -j ACCEPT

我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

如果使用" -j DROP"在配置的早期,他们没有机会用" -j ACCEPT"处理语句。把它们移到最后。