6 月 30 日更新我有一个 ips.txt 列表,我希望 iptables 接受任何格式的任何 ip 或范围。例子:
# IPs List
199.59.243.120
157.60.1.0/24
91.190.0.0/16
192.168.2.1-192.168.2.25
我的规则:
for ip in $(sed '/#.*/d' ips.txt); do
if echo $ip | grep -q "-" >/dev/null; then
iptables -w -A FORWARD -i eth1 -p tcp --dport 80 -m iprange --dst-range "$ip" -j ACCEPT
else
iptables -w -A FORWARD -i eth1 -p tcp --dport 80 -d $ip -j ACCEPT
fi
done
iptables接受ip 199.59.243.120和范围192.168.2.1-192.168.2.25,但是如何让iptables接受范围157.60.1.0/24或91.190.0.0/16???
谢谢
答案1
由于iptables -d
接受 CIDR 表示法中的网络,您可能只需更改grep
为使用 a 指定的查找范围-
,然后交换命令(或否定 grep 的结果)。
答案2
157.60.1.0/24 位于其他条件中,如 -d 157.60.1.0/24 -j Accept。它不适合第一个条件 --dst-range,如错误所述。所以命令是 echo $ ip l grep -q "-"