Configurando múltiplas conexões Ethernet em um servidor Linux

Configurando múltiplas conexões Ethernet em um servidor Linux

Eu tenho a seguinte topologia

                                                                                        .───────────────.        
   ┌──────────────────┐                                                             _.─'                 `──.    
   │                  │                                                          ,─'                         '─. 
   │    ISP Router    │ Dynamic IP                                              ;                               :
   │     with NAT     ├─────────────────────────────────────────────────────────:           Internet            ;
   │                  │                                                          ╲                             ╱ 
   └─────────┬────────┘                                                           '─.                       ,─'  
             │                                                                       `──.               _.─'     
             │  10.0.0.1                                                                 `──────┬──────'         
             │                                                                                  │                
      .──────┴────.                                                                       .─────┴─────.          
   ,─'             '─.                   ┌─────────────────────────┐                   ,─'             '─.       
 ,'                   `.                 │                         │                 ,'                   `.     
;          LAN          :  Static DHCP┌──┴───┐                  ┌──┴───┐ Static IP  ;      Public Net       :    
:                       ;─────────────┤ eth1 │     My Server    │ eth0 ├────────────:                       ;    
 ╲     10.0.0.0/24     ╱     10.0.0.5 └──┬───┘                  └──┬───┘  1.2.3.5    ╲     1.2.3.4/20      ╱     
  `.                 ,'                  │       Debian Buster     │    mydomain.com  `.                 ,'      
    '─.           ,─'                    │                         │                    '─.           ,─'        
       `─────────'                       └─────────────────────────┘                       `─────────'

Por motivos históricos, meu ISP usa uma rede separada para fornecer IPs estáticos. Isso significa que tenho que conectar meu servidor diretamente a uma conexão especial que esteja diretamente exposta à internet (no diagrama isso está eth0com IP 1.2.3.5).

No entanto, eu uso esse mesmo servidor como NAS em minha casa e, como é uma rede totalmente separada, eu o conecto usando uma interface diferente eth1e crio uma alocação de DHCP estática com address 10.0.0.5. Dessa forma, outros dispositivos da rede doméstica poderão localizá-lo e acessar as montagens da rede.

Por último, tenho um registro DNS com meu domínio, neste exemplo mydomain.com, apontando para 1.2.3.5.

Estou enfrentando alguns problemas:

  • Quando tento acessar mydomain.comda minha LAN, não funciona. Acredito que isso ocorre porque o servidor está recebendo o pacote da interface, eth0mas depois responde eth1e o outro dispositivo está descartando a resposta, pois é de um IP diferente.
  • Na inicialização, o servidor deve escolher 1.2.3.4a rede para direcionar o tráfego da Internet para que o acesso externo funcione mydomain.com. Porém, como ambos eth0possuem eth1acesso à internet através dos respectivos gateways, às vezes ele inicializa e escolhe 10.0.0.1como gateway padrão e o acesso mydomain.comnão funciona. Acredito que este seja um problema semelhante com o tráfego que entra, eth0mas sai eth1.

Embora eu esteja familiarizado com coisas básicas de rede, não tenho experiência em ter um servidor conectado a várias redes ao mesmo tempo. Idealmente, gostaria de configurar o servidor para que:

  • Todo o tráfego da Internet sai atravéseth0
  • Todo o tráfego de entrada eth0é respondido atravéseth0
  • Todo o tráfego de entrada eth1é respondido atravéseth1

Meu servidor roda Debian, agradeceria qualquer ajuda.

EDITAR: Então, depois de desabilitar o gateway eth1 e brincar um pouco com tcpdumpele, consegui confirmar que o tráfego está entrando pela eth0 e saindo da eth1. O problema é que o ISP não está fazendo NAT no tráfego que vai para o endpoint 1.2.3.5e então o servidor está identificando os 10.0.0.Xendereços como localizados na interface eth1.

Responder1

Este é um problema de roteamento que pode ser resolvido com roteamento baseado na origem ou roteamento por política. Isto envolve duas tabelas de roteamento, uma para cada endereço de origem:

Verhttp://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.htmlpara mais detalhes.

Responder2

Acredito que isso ocorre porque o servidor está recebendo o pacote da interface eth0, mas respondendo através da eth1.

O roteador ISP com NAT fará o NAT do endereço 10.0.0.0 do seu cliente para um endereço dinâmico do ISP, portanto, seu servidor responderá a esse endereço em vez do interno. Existem exceções como FTP que não são necessariamente compatíveis com NAT, pois passarão seu endereço IP interno para a outra extremidade da conexão, porém, para o caso geral, seu tráfego NAT permanecerá na eth0.

Verifique seus logs para confirmar se os clientes estão saindo para 1.2.3.4 e se o servidor está obtendo conexões dos endereços NAT ip.ip.ip.ip.

Na inicialização, o servidor deve escolher 1.2.3.4 como a rede para direcionar o tráfego da Internet para que o acesso externo funcione através de mydomain.com. No entanto, como tanto a eth0 quanto a eth1 têm acesso à Internet através dos respectivos gateways

Não faça isso. Ter vários gateways padrão em configurações multi-homed raramente funciona como as pessoas pretendem. Basicamente, vários gateways padrão só devem ser usados ​​quando ambos os caminhos fornecem acesso a redes idênticas, como para redundância/alta disponibilidade de roteador em um ambiente corporativo. Como o seu roteador ISP para a Internet e sua conexão direta com a rede pública não são idênticos, você deve removê-lo. eth0 deve ter uma rota padrão, eth1 deve ter uma rota para 10.xxx Você ainda pode fazer isso com DHCP, porém eu abordaria isso como uma reserva/exclusão para 10.0.0.5 e configuraria o IP do servidor manualmente.

Além da rota padrão estranha, o que você descreveu é a operação padrão normal. Certifique-se de procurar outros problemas não descritos acima:

  • Arquivos host diferentes do DNS (você tentou fazer com que os clientes se conectassem a 10.0.0.5 em vez de 1.2.3.4? Gosto de usar um nome técnico internamente, como webserver1.internalfqdn.com, e um nome amigável externamente, comowww.externalfqdn.com)
  • Tabelas de rotas manuais não refletidas acima (você tentou atalho 10.0.0.x para 1.2.3.4 a 10.0.0.5 como roteador? - isso pode funcionar, mas requer configuração extra)
  • Protocolos de roteamento (por exemplo, RIP) (na verdade, uma variação dos anteriores, mas se você tiver o RIP ou outra publicação de rota ativada, poderá estar publicando rotas incorretas

Responder3

Acabei resolvendo o problema usando umdividir DNSabordagem, implantando um servidor DNS em meu host e fazendo com que toda a LAN o use como servidor DNS padrão. Lá, adicionei regras personalizadas de reescrita de DNS para mydomain.comredirecionar 10.0.0.5em vez do endereço público. Dessa forma, os hosts na LAN resolvem meu domínio para o IP interno e os hosts fora da LAN o resolvem para o IP público, com a vantagem de o tráfego local não precisar sair pela rede do ISP como antes.

Outra alternativa que acredito que deveria ser capaz de resolver este problema éroteamento em gancho. No entanto, o roteador fornecido pelo meu ISP não parece suportar isso.

informação relacionada