Есть ли способ получить сетевой IP-адрес конкретного интернет-провайдера, чтобы я мог разрешить / заблокировать всю сеть за этим IP-адресом с помощью iptables.
Может быть, что-то подобное может вам помочь.
block_as.sh:
#!/bin/bash ASLIST="$@" for ASNO in $ASLIST; do SUFFIX="$ASNO"; #SUFFIX="" # enable this to gather all rules in one chain echo "iptables -N reject_as$SUFFIX"; echo "ip6tables -N reject_as$SUFFIX"; whois -B -i origin "AS$ASNO" \ | grep '^route' \ | while read proto prefix rest; do case "$proto" in route:) prog=iptables; ;; route6:) prog=ip6tables; ;; *) prog=echo; ;; esac echo "$prog -A "reject_as$SUFFIX" -s $prefix -j REJECT"; done; done
Он извлекает всю сеть через whois и генерирует соответствующие правила таблиц ip [6]. Возможно, вам придется настроить свой whois-Query, поскольку я проводил тесты только для зрелой базы данных.
Выглядит примерно так:
$ ./block_as.sh 3320 6724 iptables -N reject_as3320 ip6tables -N reject_as3320 iptables -A reject_as3320 -s 193.103.152.0/22 -j REJECT [...] iptables -A reject_as3320 -s 134.97.128.0/17 -j REJECT iptables -A reject_as3320 -s 194.156.246.0/24 -j REJECT iptables -A reject_as3320 -s 91.222.232.0/22 -j REJECT ip6tables -A reject_as3320 -s 2003:0000::/19 -j REJECT ip6tables -A reject_as3320 -s 2003:0000::/20 -j REJECT iptables -N reject_as6724 ip6tables -N reject_as6724 iptables -A reject_as6724 -s 192.67.198.0/24 -j REJECT [...] iptables -A reject_as6724 -s 85.214.0.0/15 -j REJECT iptables -A reject_as6724 -s 81.169.128.0/17 -j REJECT ip6tables -A reject_as6724 -s 2a01:238::/32 -j REJECT