2014-10-18 78 views
0

我想限制我的基於Linux的路由器上的接口(eth2)到某些IP和端口。 eth1主要是不受限制的。如何使用iptables將接口限制在某些IP和端口?

  • 該路由器確實是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

如果帶有「-j DROP」的語句早於配置,他們沒有機會使用「-j ACCEPT」處理語句。將它們移動到最後。