obtém todos os endereços IP da máscara de sub-rede

0

Eu tenho esta lista de IPs mostrada abaixo. Como eu posso calcular todos os endereços IP do Linux? Existem algumas ferramentas que podem calcular isso para mim? Eu preciso verificar se eu não bani alguns IPs do cloudflare. Como firewall estou usando shorewall e estou banindo com fail2ban IP único. Como eu sei, então eu não consigo detectar subent máscara de endereço IP, certo?

204.93.240.0/24
204.93.177.0/24
199.27.128.0/21
173.245.48.0/20
103.22.200.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
    
por Guntis 15.09.2012 / 18:46

2 respostas

1

Não tenho certeza de que entendi sua pergunta, mas se você quiser expandir uma lista de intervalos de IP para todos os IPs que esses intervalos contêm, tente o seguinte:

$ perl -ne '/(.+)\.(\d+)\/(\d+)$/; print "$1.$_\n" foreach($2..$3)' iplist.txt > IPs

Isso criará um arquivo chamado IPs contendo:

204.93.240..0
204.93.240..1
204.93.240..2
204.93.240..3
 ...

188.114.96..18
188.114.96..19
188.114.96..20

Você pode percorrer o arquivo e aplicar a ferramenta necessária (ping, por exemplo) para cada IP:

$ while read ip; do ping $ip; done < IPs

Você também pode combinar os dois comandos se não quiser criar um arquivo com todos os IPs:

$ perl -ne '/(.+)\.(\d+)\/(\d+)$/; print "$1.$_\n" foreach($2..$3)' iplist.txt | while read ip; do ping $ip; done
    
por 16.09.2012 / 15:59
0

Não, desde que CIDR foi introduzido, não é possível derivar a máscara de rede do endereço IP. Você pode calcular o endereço de broadcast (o endereço mais alto na sub-rede) convertendo o endereço de rede em um inteiro, adicionar 2 ^ (32-netmask) e converter o resultado de volta para decimal com quatro pontos .

    
por 16.09.2012 / 15:55

Tags