有没有什么方法可以获取特定 ISP 的网络 IP,以便我可以使用 iptables 允许/阻止该 IP 后面的整个网络。
答案1
也许这样的事情可以帮助到你。
block_as.sh:
/bin/bash #!/bin/bash ASLIST="$@" 对于 $ASLIST 中的 ASNO;执行 后缀="$ASNO"; #SUFFIX="" # 启用此功能将所有规则收集到一个链中 回显“iptables -N rejection_as$SUFFIX”; 回显“ip6tables -N rejection_as$SUFFIX”; whois -B -i 来源 "AS$ASNO" \ | grep ‘^route’ \ | 同时读取 proto 前缀 rest;执行 案例“$proto” 路由:)prog=iptables; ;; route6:) prog=ip6tables; ;; *)程序=回声; ;; 埃萨克 回声“$prog -A“reject_as$SUFFIX”-s $prefix -j REJECT”; 完毕; 完毕
它通过 whois 获取所有网络并生成适当的 ip[6]tables 规则。也许你必须调整你的 whois-Query,因为我只针对成熟的数据库运行测试。
看起来像这样:
$./block_as.sh 3320 6724 iptables -N 拒绝_as3320 ip6tables -N 拒绝_as3320 iptables -A rejection_as3320 -s 193.103.152.0/22 -j 拒绝 [...] iptables -A rejection_as3320 -s 134.97.128.0/17 -j 拒绝 iptables -A rejection_as3320 -s 194.156.246.0/24 -j 拒绝 iptables -A rejection_as3320 -s 91.222.232.0/22 -j 拒绝 ip6tables -A rejection_as3320 -s 2003:0000::/19 -j 拒绝 ip6tables -A rejection_as3320 -s 2003:0000::/20 -j 拒绝 iptables -N 拒绝_as6724 ip6tables -N 拒绝_as6724 iptables -A rejection_as6724 -s 192.67.198.0/24 -j 拒绝 [...] iptables -A rejection_as6724 -s 85.214.0.0/15 -j 拒绝 iptables -A rejection_as6724 -s 81.169.128.0/17 -j 拒绝 ip6tables -A rejection_as6724 -s 2a01:238::/32 -j 拒绝