Consegui colocar na lista de permissões todos os endereços IP usados pelo Steam. As chances são de que eles não se apliquem em sua área (tudo por aqui passa pelos canos da Level 3), mas vou mostrar como eu fiz isso.
Primeiro, tenho uma cadeia personalizada que é chamada da cadeia FORWARD:
# Create chain to filter IP addresses
iptables -N zone_lan_filter
# Filter TCP and UDP traffic
iptables -A FORWARD -p tcp -j zone_lan_filter
iptables -A FORWARD -p udp -j zone_lan_filter
# Reject everything else
iptables -A FORWARD -p tcp -j REJECT
iptables -A FORWARD -p udp -j REJECT
A cadeia personalizada é literalmente apenas um enorme intervalo de endereços IP:
# When a packet is sent to this chain, accept it if it matches any of the rules below
#
# Addresses in these ranges are registered to Valve Corporation and are used by Steam
iptables -A zone_lan_filter -p tcp -m iprange --dst-range 208.64.200.0-208.64.203.255 -j ACCEPT
iptables -A zone_lan_filter -p udp -m iprange --dst-range 208.64.200.0-208.64.203.255 -j ACCEPT
iptables -A zone_lan_filter -p tcp -m iprange --dst-range 205.196.6.0-205.196.6.255 -j ACCEPT
iptables -A zone_lan_filter -p udp -m iprange --dst-range 205.196.6.0-205.196.6.255 -j ACCEPT
Esse primeiro grupo é usado pelo Steam ao fazer login. Eventualmente, temos outra lista de endereços IP que pertencem aos CDNs usados pelo Steam para fazer download de jogos e correções:
# Addresses in these ranges are registered to Highwinds Network Group and are used by Steam
iptables -A zone_lan_filter -p tcp -m iprange --dst-range 205.185.217.0-205.185.217.255 -j ACCEPT
iptables -A zone_lan_filter -p udp -m iprange --dst-range 205.185.217.0-205.185.217.255 -j ACCEPT
iptables -A zone_lan_filter -p tcp -m iprange --dst-range 205.185.201.0-205.185.201.255 -j ACCEPT
iptables -A zone_lan_filter -p udp -m iprange --dst-range 205.185.201.0-205.185.201.255 -j ACCEPT
Em seguida, chegamos a uma lista de endereços IP que pertencem aos principais ISPs da minha área. Estes são obrigados a ser diferentes em qualquer lugar fora do Colorado:
# Addresses in these ranges are registered to Level 3 Communications and are used by Steam
iptables -A zone_lan_filter -p tcp -m iprange --dst-range 162.97.0.0-162.97.255.255 -j ACCEPT
iptables -A zone_lan_filter -p udp -m iprange --dst-range 162.97.0.0-162.97.255.255 -j ACCEPT
iptables -A zone_lan_filter -p tcp -m iprange --dst-range 204.245.0.0-204.245.63.255 -j ACCEPT
iptables -A zone_lan_filter -p udp -m iprange --dst-range 204.245.0.0-204.245.63.255 -j ACCEPT
Por fim, tudo o que não foi incluído na lista de permissões é retornado:
# If none of the rules above matched, return to previous chain
iptables -A zone_lan_filter -j RETURN
Então, como eu criei esses endereços IP? Registrando tudo no netfilter:
iptables -I FORWARD -j LOG --log-prefix "iptables_log: "
Estes são colocados no log do sistema, que você pode visualizar da seguinte forma:
dmesg | grep iptables_log
Com um endereço IP de destino do dmesg, você pode usar o whois para obter o CIDR em uso pela organização em que o endereço IP está registrado.
whois também lhe dará um link para uma página no ARIN que lista um monte de outros endereços IP usados por essa organização. Por exemplo, whois 208.64.200.0
imprime as seguintes informações:
OrgName: Valve Corporation
OrgId: VC-2
Address: 10900 NE 4th St, Suite 500
City: Bellevue
StateProv: WA
PostalCode: 98004
Country: US
RegDate: 2010-11-12
Updated: 2010-11-12
Ref: http://whois.arin.net/rest/org/VC-2
Siga o link na parte inferior da página ARIN e vá para redes relacionadas . Você pode colocar na lista de permissões todos esses intervalos de rede.