Temos o serviço de Internet AT&T U-Verse, que possui um gateway DSL extremamente desossado.
Temos 5 IPs (máscara de rede 248), mas o gateway não pode fazer nada além de um único IP -> mapeamento de endereço MAC único.
Temos uma única máquina de firewall e redirecionamos diferentes combinações de IP / porta para diferentes locais dentro de uma DMZ.
Até agora, nossa solução é ter uma máquina virtual VMWare no firewall com 4 NICs adicionais, para obter os outros 4 endereços IP ... no entanto, temos um problema.
O gateway está basicamente executando um ping no ARP para verificar se o IP está respondendo no MAC esperado. Com 4 NICs todas na mesma LAN, o linux está respondendo às solicitações de ARP para TODOS OS IPs usando uma única interface. Não é isso que o gateway espera e está atrapalhando as outras 3 placas de rede. O gateway se recusa a rotear o tráfego de entrada para IPs onde os resultados de ping do ARP não são o MAC esperado.
Como podemos obter as respostas do ARP para o IP do eth0 sair eth0, o IP do eth1 sair eth1, etc?
EDITAR
A resposta de Christopher Cashell não funciona nessa situação. Eu tinha grandes esperanças de lê-lo, mas ... não.
EDIT 2
Resolvido! Veja minha resposta abaixo.
Respostas:
Sua solução escolhida funciona, mas existem alternativas que não envolvem arptables. (Christopher Cashell estava no caminho certo, originalmente, mas estava fora de controle.)
Em resumo, você deseja definir estes parâmetros:
Eles devem estar disponíveis ao executar um kernel Linux moderno da série 2.6. Verifique e verifique se '/ proc / sys / net / ipv4 / conf / / arp_announce' e / proc / sys / net / ipv4 / conf / / arp_ignore 'existem em seu sistema.
O parâmetro 'arp_filter' funciona apenas quando seus vários endereços IP compartilham um segmento de LAN, mas usam sub-rede IP diferente. Se eles também compartilham a sub-rede IP, você precisa usar 'arp_ignore' e 'arp_announce', como acima.
(Acredito que você também pode precisar definir 'arp_filter' para '0' também.)
fonte
Ok, aqui está a solução. Primeiro, uma recapitulação:
Aqui está o meu plano de rede básico:
Todas as interfaces se sobrepõem. Isso é tecnicamente errado, e a fonte de todos os meus problemas ... mas eu tenho que fazê-lo por causa desse gateway residencial idiota.
Primeiro, as solicitações de transmissão ARP vão para todos eles. Como todos os 4 IPs são endereços locais válidos, todas as 4 interfaces tentarão responder.
1) instale arptables . Adicione isso em algum lugar durante a inicialização ( /etc/rc.local aqui):
Isso impedirá que as transmissões entrem na interface errada. Portanto, a interface correta agora será a única resposta.
Isso por si só não é suficiente. O próximo bit é um problema da tabela ARP. O PC solicitante provavelmente já possui uma entrada na tabela ARP e, portanto, o Linux usará a interface associada a isso. Até que a entrada da tabela ARP expire, ele tentará enviar respostas ARP usando a interface dessa entrada, não a associada à solicitação ARP.
A opção sysctl rp_filter parece estar rejeitando pacotes de resposta ARP de saída se eles estiverem na interface errada. Então...
2) Desative rp_filter .
No Debian / Ubuntu, isso significa comentar as duas linhas rp_filter em /etc/sysctl.d/10-network-security.conf .
Esta opção foi ativada por um motivo ... ou seja, para ajudar a impedir ataques de falsificação entre interfaces. Eu li que verifica se o pacote é legal para a interface que está entrando ou saindo (trocando MACs e IPs e ver se ele ainda roteia pela mesma interface). Portanto, normalmente seria uma má idéia desativá-lo. No meu caso, todas as interfaces estão na mesma rede ... para que a verificação não importe realmente.
Se eu adicionar outra interface e precisar da proteção contra falsificação, talvez seja possível criar algumas entradas arptables / iptables para fazer a mesma coisa.
fonte
Isso tem a ver com a maneira como o Linux lida com IPs e NICs. Basicamente, trata um endereço IP como se pertencesse à caixa e não apenas à NIC específica. O resultado é que você pode obter respostas ARP de endereços IP em interfaces que você não esperaria.
A solução é uma opção sysctl. Pelo que me lembro, o que você está procurando é:
Isso resolverá o problema para você. Apenas adicione-os ao /etc/sysctl.conf e execute '
sysctl -p
' (ou execute cada linha como argumento para 'sysctl -w
'.Isso fará com que o Linux responda apenas às solicitações de ARP na interface à qual um endereço IP está realmente atribuído.
fonte
A resposta aceita em combinação com isso: http://www.linuxquestions.org/questions/linux-networking-3/multiple-interfaces-all-traffic-flows-through-just-one-538701/
onde as rotas estáticas são usadas para se comunicar apenas com os IPs desejados em determinadas interfaces, criaram uma solução poderosa e simples para um problema semelhante que tive.
fonte
Você pode conectar o gateway e fazer com que o firewall lide com os IPs?
fonte