Existe alguma maneira fácil de descobrir todos os IPs que o Facebook, Myspace, Snapchat etc. usam?
Usando o Facebook como exemplo ... Nós policiamos a largura de banda de uma pequena fração do total diretamente no nosso ASA (porque outro grupo da empresa possui o proxy da Web).
Eu normalmente procuro o ASN da empresa (o Facebook é 32934), depois vou http://as.robtex.com/as32934.html#bgp
e encontro seus prefixos.
A partir dessa lista, construo um grupo de objetos Cisco ASA, que posso usar para classificar o tráfego ... É isso que estou usando agora ... O Facebook é acelerado para uma pequena quantidade de largura de banda ... Funciona muito bem.
De vez em quando, você precisa voltar e verificar as informações AS do robtex para ver se adicionaram ou removeram prefixos. Eu geralmente tento pegar o maior bloco agregado que eles têm, mesmo que eles estejam apenas anunciando blocos menores desse agregado maior.
object-group AS32934_Facebook
network-object 31.13.24.0 255.255.248.0
network-object 31.13.64.0 255.255.192.0
network-object 66.220.144.0 255.255.240.0
network-object 69.63.176.0 255.255.240.0
network-object 69.171.224.0 255.255.224.0
network-object 74.119.76.0 255.255.252.0
network-object 103.4.96.0 255.255.252.0
network-object 173.252.64.0 255.255.192.0
network-object 204.15.20.0 255.255.252.0
O código python que eu uso para gerar a lista é trivial ...
from ipaddr import IPv4Network, CollapseAddrList
fb_nets = list()
with open('facebook_nets.txt') as fh:
for line in fh:
net = IPv4Network(line.strip())
fb_nets.append(net)
print "object-group AS32934_Facebook"
for net in sorted(CollapseAddrList(fb_nets)):
print " network-object %s %s" % (net.network, net.netmask)
O código pressupõe que você coloque todos os seus prefixos em um arquivo de texto chamado "facebook_nets.txt", com um prefixo por linha ...
(py26_dfl)[mpenning@Bucksnort ~]$ head facebook_nets.txt
31.13.24.0/21
31.13.64.0/18
31.13.64.0/19
31.13.64.0/24
31.13.65.0/24
31.13.66.0/24
31.13.67.0/24
31.13.68.0/24
31.13.69.0/24
31.13.70.0/24
(py26_dfl)[mpenning@Bucksnort ~]$
Na verdade, meu script raspa automaticamente as informações todas as semanas, mas essa é uma versão simplificada.