Eu tenho uma pergunta hipotética sobre como a pilha de rede funciona no Linux. Se eu tiver uma máquina com dois NICs, sentados em LANs diferentes. Algo assim:
- NIC A na LAN A, 192.168.1.3/24
- NIC B na LAN B, 192.168.2.5/24
Agora, se eu tiver um serviço web em 192.168.2.5:80, destinado a servir apenas os hosts da LAN B, como faço para impedir que os hosts da LAN A acessem?
Meu entendimento é que, se eu não adicionar nada ao netfilter/iptables/nftables, um kernel linux padrão passará as solicitações enviadas para o endereço IP da NIC B dos vizinhos da NIC A (LAN A). E a caixa funcionará como um roteador, por padrão. Isso é correto?
Quase. O encaminhamento entre segmentos de LAN pode ser habilitado ou desabilitado no kernel. Você pode verificar
/proc/sys/net/ipv4/ip_forward
se ele está habilitado para IPv4 (e você pode configurá-lo escrevendo0
ou1
neste pseudo-arquivo).Além disso, o que muitas pessoas esquecem é que o roteamento deve funcionar para todos os participantes. Por exemplo, máquinas na LAN A precisarão saber que para endereços IP na LAN B, os pacotes primeiro precisarão ir para 192.168.1.3 para alcançar sua máquina com duas NICs. Se 192.168.1.3 for o gateway (rota padrão) para todas as máquinas na LAN A, isso acontecerá automaticamente. Caso contrário, as máquinas na LAN A precisam de informações de roteamento adicionais (que, por exemplo, podem ser distribuídas por DHCP).
Além disso, o iptables não está roteando . Muitas pessoas leem tutoriais que usam
iptables
para roteamento e depois confundem os dois.iptables
é para filtragem (ou seja, um firewall). Você pode rotear sem teriptables
compilado no kernel.Portanto, no seu cenário: Se você deseja manter os hosts na LAN A ignorando os hosts na LAN B (e vice-versa), apenas desative o roteamento na máquina com duas NICs. Se eles puderem ver uns aos outros em princípio, exceto para o serviço da web em 192.168.2.5:80, então você precisará de regras de filtragem sobre o roteamento para excluir exatamente esse serviço da web.
E todo o cenário pode ficar mais complicado dependendo de como a LAN A e a LAN B devem acessar "a Internet".
(Conselho geral: Se você quiser perguntar alguma coisa sobre rede, primeiro desenhe um diagrama de rede com todas as partes importantes).
Neste caso, o roteador já está configurado de forma diferente: O lado da LAN usa um intervalo de IP de endereço privado, e esses IPs não deveriam aparecer no lado da WAN (porque existem várias LANs privadas conectadas a esta WAN, que todos poderiam usar os mesmos endereços). Assim, o roteador faz a tradução de endereços de rede (NAT): Para cada solicitação de entrada da LAN A endereçada à WAN, essa solicitação será inserida em uma tabela (rastreamento de conexão) e todos os pacotes de saída e de entrada para essa solicitação serão modificados, substituindo o Endereço IP (e porta) na LAN a com o endereço IP que o roteador tem na WAN (e uma porta escolhida aleatoriamente para esta conexão).
Isso por si só impede que qualquer coisa na WAN inicie conexões com qualquer coisa na LAN A, incluindo a interface do roteador na LAN A.
Além disso, você tem regras de firewall que impedem que qualquer coisa recebida da WAN seja roteada para a LAN A, exceto aquelas conexões originadas na LAN A.
E se você quiser permitir isso, você precisa configurar o "encaminhamento de porta".
Portanto, no cenário acima, o servidor de login apenas se vincula apenas ao endereço IP na LAN A.
Em princípio, sim, mas veja os detalhes descritos acima (NAT em cima das regras de firewall).