如何在Linux上的iptables源或目标中使用或指定多个IP地址
时间:2020-01-09 10:39:51 来源:igfitidea点击:
如何使用Linux脚本在iptables中指定多个IP地址。
如何创建使用多个源或目标IP地址的规则?
您可以使用以下易于使用的语法设置多个源(" -s"或" --source"或目标(" -d"或" --destination")IP范围。
本教程向您展示如何在Linux上的IPtables中使用源或目标中的多个IP地址。
如何在单个iptables命令中添加多个源
语法为:
iptables -A INPUT -s ip1,ip2,ip3 -j ACCEPT iptables -A INPUT -s ip1,ip2,ip3 -j DROP iptables -I INPUT -s ip1,ip2,ip3 -d ip2 -j DROP
要接受92.168.1.5和192.168.1.6,请运行:
iptables -A INPUT -s 192.168.1.5,192.168.1.6 -d 192.168.1.254 -j ACCEPT
另一个例子:
iptables -A INPUT -s 192.168.1.5,192.168.1.6 -d 192.168.1.254 -p tcp --dport 443 -j ACCEPT
在此示例中,两个IP地址的端口80的DROP数据包:
iptables -A INPUT -s 192.168.1.5,192.168.1.6 -d 192.168.1.254 -p tcp --dport 80 -j DROP
在此示例中,将流量转发到内部主机以获取两个源IP地址:
source="139.59.1.155,23.239.7.187" dest="104.20.187.5" port=443 redirect="10.105.28.43:443" iptables -A PREROUTING -s ${source} -d ${dest} -p tcp --dport ${port} -j DNAT --to-destination ${redirect}
可以使用新链来删除给定的IP地址,如下所示:
#!/bin/bash _input="/root/block.ip.address.list.txt" IPT=/sbin/iptables $IPT -N droplist egrep -v "^#|^$" x | while IFS= read -r ip do $IPT -A droplist -i eth1 -s $ip -j LOG --log-prefix " myBad IP BlockList " $IPT -A droplist -i eth1 -s $ip -j DROP done < "$_input" # Drop it $IPT -I INPUT -j droplist $IPT -I OUTPUT -j droplist $IPT -I FORWARD -j droplist
如何在单个iptables命令中添加多个目标
语法为:
iptables -A INPUT -d ip1,ip2,ip3 -j ACCEPT iptables -A INPUT -d ip1,ip2,ip3 -j DROP iptables -I INPUT -d ip1,ip2,ip3 -s ip2 -j DROP
一些例子:
iptables -A INPUT -d 192.168.1.5,192.168.1.6 -j ACCEPT iptables -A INPUT -d 192.168.1.5,192.168.1.6 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -d 192.168.1.5,192.168.1.6 -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
要查看添加的规则运行:
iptables -t filter -L INPUT -n -v
输出示例:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 5632 6156K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 1 80 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 553 128K INPUT_direct all -- * * 0.0.0.0/0 0.0.0.0/0 553 128K INPUT_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0 553 128K INPUT_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID 551 128K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 0 0 ACCEPT tcp -- * * 192.168.1.0/24 192.168.1.5 tcp dpt:22 0 0 ACCEPT tcp -- * * 192.168.1.0/24 192.168.1.6 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.5 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.6 tcp dpt:22 0 0 ACCEPT all -- * * 0.0.0.0/0 192.168.1.5 0 0 ACCEPT all -- * * 0.0.0.0/0 192.168.1.6 0 0 ACCEPT tcp -- * * 192.168.1.5 192.168.1.254 tcp dpt:443 0 0 ACCEPT tcp -- * * 192.168.1.6 192.168.1.254 tcp dpt:443
关于用户定义链的注释
可以如下创建新的用户定义链:
iptables -N ALLOWED iptables -A ALLOWED -d 127.0.0.0/8 -j RETURN iptables -A ALLOWED -d 192.168.1.0/24 -j RETURN iptables -A ALLOWED -d 205.54.1.5 -j RETURN iptables -A INPUT -j ALLOWED