Roteador Linux - como enviar mensagens icmp inacessíveis para clientes de rede local

1

Eu tenho um roteador doméstico Linux com eth0 (192.168.0.2/24) e bridge br0 para clientes de rede local (192.168.1.1/24). A ponte br0 contém eth1 (com fio) e eth2 (sem fio).

O roteador encaminha todo o tráfego da LAN via eth0 (192.168.0.2) para um roteador ADSL (192.168.0.1) via SNAT e de lá para a Internet. (No momento eu me pergunto se eu posso fazer isso sem o SNAT, mas esse não é o problema por enquanto.)

Gostaria de saber como os clientes da rede local podem obter mensagens icmp para hosts inacessíveis. Se um cliente de LAN pings um IP não utilizado em sua própria sub-rede (por exemplo, 192.168.1.123), eu vejo mensagens de destino inacessível do host. Como posso obter essas mensagens para outros endereços inacessíveis que não estão dentro da sub-rede do cliente de rede local? Devo adicionar todas as redes unroutable, desconhecidas como regras iptables ou talvez adicioná-las com iproute2 como endereços inacessíveis, no roteador linux?

Por exemplo, 10.0.0.1 é um endereço que não uso. Se eu fizer um traceroute de um cliente lan para 10.0.0.1, eu vejo esses pacotes viajando como tal:

# traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 52 byte packets
 1  linuxrouter (192.168.1.1)  0.247 ms  0.143 ms  0.126 ms
 2  adslrouter (192.168.0.1)  0.526 ms  0.526 ms  0.322 ms
 3  isp.hop1 (194.109.w.x)  33.250 ms  33.376 ms  33.337 ms
 4  isp.hop2 (194.109.y.z)  61.811 ms !N  32.700 ms !N  32.639 ms !N

(Eu não sei porque o primeiro salto do meu provedor o encaminha)

Em vez disso, prefiro que o roteador linux rejeite qualquer endereço rfc1918. Quais são as melhores práticas?

    
por drumfire 04.09.2011 / 16:48

1 resposta

3

Pacotes ICMP Inalcançáveis são uma raça especial; eles só serão jogados de volta em seus sistemas quando um roteador não puder rotear para aquele destino, se o roteador estiver se comportando corretamente; você também precisará garantir que eles não sejam descartados por um firewall com excesso de zelo.

No caso de 10.0.0.1, o ISP provavelmente não está filtrando os intervalos do RFC 1918 até o hop 3 - mas se o descarte for devido a um filtro ACL, ele simplesmente descartará os pacotes sem enviar uma resposta Inacessível .

Para fazer com que seu roteador linux derrube os pacotes e envie inalcançáveis, adicione uma rota reject :

route add -net 10.0.0.0 netmask 255.0.0.0 reject

Você vai querer tornar isso persistente - onde você precisa fazer isso depende do sabor do linux do seu roteador.

    
por 04.09.2011 / 18:03