如何使用 IPTABLES 允许一定范围的 IP?

如何使用 IPTABLES 允许一定范围的 IP?

这是我的 iptables,我怎样才能允许 ETH1(10.51.xx)上的一系列 IP

# Generated by iptables-save v1.4.4 on Thu Jul  8 13:00:14 2010
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A INPUT -i lo -j ACCEPT 
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 
-A INPUT -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -j ACCEPT 
-A fail2ban-ssh -j RETURN 
COMMIT

答案1

如果您只想允许 10.50.0.0 内的某个范围的 IP 地址(例如从 10.50.10.20 到 10.50.10.80),您可以使用以下命令:

iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-10.50.10.80 -j ACCEPT

如果您想允许整个范围,您可以使用这个:

iptables -A INPUT -i eth1 -s 10.50.0.0/16 -j ACCEPT

iptables 手册页ServerFault 上有这个问题: 使用 iptables 将允许的 IP(进/出)列入白名单

答案2

对于特定端口,例如 22:

iptables -A INPUT -p tcp  -m iprange --src-range  10.50.10.20-10.50.10.80  --dport 22  -j ACCEPT

答案3

好吧,您确实看到了要允许这些 IP 的内容,但 CIDR 中的 10.51.xx 转换为10.50.0.0/16。因此,它将类似于具有 的环回接口的行127.0.0.0/8

答案4

iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-80 -j ACCEPT

可能会报如下错误:

iptables: Applying firewall rules: xt_iprange: range 10.50.10.20-80 is reversed and will never match

要纠正这个问题,只需像这样输入完整的 IP 地址:

iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-10.50.10.80 -j ACCEPT

參考文獻:http://blog.capitar.com/iptables-ip-range-reversed/

相关内容