Ubuntu 10.04: Duas interfaces em uma mesma sub-rede com um mesmo gateway

1

Meu ISP me forneceu uma sub-rede 187.x.x.224 / 29. O gateway é 187.x.x.225 Eu tenho um servidor Ubuntu com 6 portas ethernet. O servidor faz o roteamento NAT e também atua como um servidor web. Meu plano é que eth1 e eth2 tenham os ips da WAN separados: 187.x.x.226 e 187.x.x.227, respectivamente. Eu quero que o tráfego NAT passe por 187.x.x.226 e o servidor web e outros aplicativos locais devem escutar em 187.x.x.227. Mas o gateway para ambos será o mesmo que é 187.x.x.225. eth0 , eth3 e eth4 enfrentam 3 redes NAT diferentes. O NAT funciona bem a partir de agora, mas o tráfego da rede NAT e do tráfego do servidor da Web é encaminhado somente via eth1 . Então, minha pergunta é como definir o gateway route e defualt para rotear o tráfego do servidor web através de eth2 .

EDIT 1: Eu faço o tráfego pesado na eth1, que funciona como um uplink para as redes NAT. Eu não quero que o servidor seja afetado por ele. Meus usuários fazem downloads bittorrent pesados e sempre visitam sites desonestos. Como o eth1 ip tem um domínio associado a ele, acho muito arriscado. Estou planejando mover o ip do domínio anexado para eth2 e dar um ip anônimo para eth1 (link WAN para a rede NAT). A solução que estou procurando é, se um requisito para o servidor web vier através de eth2 , a resposta deve sair da mesma interface.

    
por nixnotwin 16.07.2011 / 19:20

3 respostas

2

Como mencionado anteriormente, a única maneira pela qual você realmente conseguirá realizar o que está tentando fazer é usar o roteamento de políticas - ele permitirá que você configure várias tabelas de roteamento. Sem "virtualizar" a tabela de roteamento, por si só, você não conseguirá realmente obter o resultado desejado, já que não pode ter dois NICs com IPs na mesma sub-rede dentro da mesma tabela de roteamento. Você pode ter apenas um gateway padrão ativo em uma tabela de roteamento por vez e sempre tentará sair da interface especificada.

Isso exigirá que seu kernel linux suporte o roteamento de políticas. Você também precisará dos utilitários iproute2 (provavelmente incluídos na sua distribuição ou instalados através do gerenciamento de pacotes).

Aqui estão algumas referências decentes que encontrei:

Como automatizar tudo na inicialização depende da distribuição Linux usada.

Divulgação completa - eu copiei a maior parte do primeiro link que postei. Eu testei um pouco em uma VM e ela pareceu funcionar, mas sua milhagem pode variar, especialmente porque você já está fazendo NAT e modelagem de tráfego.

Se você tem os utilitários iproute2 em seu sistema, pode configurar a nova tabela de roteamento. Em / etc / iproute2 / rt_tables, você adicionaria algo semelhante à seguinte linha:

1 servers

Isso efetivamente cria uma nova tabela de roteamento chamada "servidores" (para este exemplo, pelo menos). Para configurar sua tabela de roteamento, você precisará definir a rota de sub-rede local e sua rota padrão.

ip route add 187.x.x.224/29 dev eth2 src 187.x.x.227 table servers
ip route add default via 187.x.x.225 dev eth2 table servers

Ele deve ser configurado, mas você precisará adicioná-lo ao roteamento de políticas usando o comando ip rule :

ip rule add from 187.x.x.227/32 table servers
ip rule add to 187.x.x.227/32 table servers

Depois de fazer tudo isso, você poderá executar ip rule show e ver os conjuntos de regras de roteamento de políticas acima das regras padrão da tabela de roteamento. Você pode então executar o cache de liberação da regra ip para garantir que as alterações sejam confirmadas.

    
por 17.07.2011 / 09:11
2

Defina a métrica em eth1 para ser maior do que em eth2 . Você pode fazer isso com ifconfig eth1 metric XX .

Não está claro qual é o seu objetivo aqui, por isso, observe que isso fará com que o sistema use eth2 em vez de eth1 para todo o tráfego de saída. O balanceamento de carga e a agregação de links entre duas interfaces é mais complicado. Além disso, AFAIK, a menos que seus aplicativos possam se vincular a endereços específicos que você não conseguirá controlar até o nível que determinado aplicativo responderá em um determinado endereço.

    
por 16.07.2011 / 19:32
0

Eu acho que para fazer o que você quiser, você precisará criar duas tabelas de roteamento separadas. Uma tabela de roteamento (para o tráfego NAT) especifica a interface mais preferida para acessar o gateway como eth1; você usaria o roteamento de políticas para usar a segunda tabela de roteamento para o tráfego com origem do IP do servidor da web. A segunda tabela seria a mesma que a primeira, mas tem uma métrica que prefere a interface eth2 para chegar ao seu gateway.

    
por 17.07.2011 / 05:07