
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á eth0
com 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 eth1
e 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.com
da minha LAN, não funciona. Acredito que isso ocorre porque o servidor está recebendo o pacote da interface,eth0
mas depois respondeeth1
e o outro dispositivo está descartando a resposta, pois é de um IP diferente. - Na inicialização, o servidor deve escolher
1.2.3.4
a rede para direcionar o tráfego da Internet para que o acesso externo funcionemydomain.com
. Porém, como amboseth0
possuemeth1
acesso à internet através dos respectivos gateways, às vezes ele inicializa e escolhe10.0.0.1
como gateway padrão e o acessomydomain.com
não funciona. Acredito que este seja um problema semelhante com o tráfego que entra,eth0
mas saieth1
.
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és
eth0
- 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 tcpdump
ele, 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.5
e então o servidor está identificando os 10.0.0.X
endereç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.com
redirecionar 10.0.0.5
em 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.