Linux como roteador entre três redes (uma é a Internet)

Linux como roteador entre três redes (uma é a Internet)

Eu tenho uma caixa Linux que está roteando entre duas redes XX3.0 e XX4.0 , quero que ela consiga conectar essas redes à Internet.

eu liaquina ótima resposta do @Kevin de que para poder fazer isso eu tenho que usar NAT, o que significa iptables, meu servidor no momento não usa iptables, então preciso encontrar o comando certo para habilitar isso.

minha rede pode ser descrita assim: Internet <-(eth0) Linux Router <-[1](eth1) 192.168.3.0 <--[2](eth2) 192.168.4.0 A eth2 está conectada diretamente ao roteador.

As duas redes locais podem conversar entre si, mas ninguém consegue fazer ping para um endereço IP público. Eu tentei farejar os pacotes no roteador, quando emito o comando ping para um endereço IP público em uma máquina na rede .3.x, mas pelo que posso dizer, há um problema e parece estar com inúmeras solicitações ARP do eth0 int sobre quem possui o endereço IP 3.x. Parece que preciso ativar o roteador para se comportar como um NAT também. Eu fiz uma pesquisa e não consegui descobrir o comando correto que preciso emitir com o iptables, embora tenha tentado os comandos mencionadosaquieaqui. Eu tive a capacidade de rotear entre as duas redes locais sem usar o iptables, e como não preciso dele, prefiro não usá-lo, a menos que seja impossível fazer NAT sem ele (nesse caso, prefiro o iptable que qualquer outro programa).

para resumir a questão: 1. preciso conseguir que todas as três redes possam se comunicar entre si. 2. Prefiro não usar iptables (se possível) ou qualquer outro programa adicionado. 3. Isso é tudo.

Obrigado.

Responder1

As duas redes locais podem conversar entre si, o que significa que você ativou o ip_forward. Se as redes locais não conseguirem executar ping no endereço IP público, significa que você precisa fazer o mascaramento.

Você consegue executar ping no endereço IP público desta caixa Linux? Se não, então deve haver algum outro problema. Talvez você precise configurar seu roteador em modo de ponte (é apenas um palpite).

Presumo que sua máquina Linux possa executar ping em IP público e que haja IP público configurado em eth0. Portanto, suas máquinas de rede interna não podem acessar a Internet com o endereço IP privado, então você precisa fazer o natting. Tente usar o iptables porque é bastante simples.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Se você não possui o iptables instalado em seu sistema. Deve haver algum firewall instalado por padrão. Qual distro você está usando?

Responder2

Endereços IP privados não são válidos para uso na Internet e não podem ser roteados. Eles podem ser usados ​​apenas localmente.

Para habilitar o acesso à Internet, você precisa habilitar o encaminhamento de IP, o que parece ser feito pela sua descrição. Segundo, você precisa usar NATing. Na maioria das vezes, seu ISP faz o NAT para você. Isso pode mudar dependendo do tipo de conexão e dos IPs atribuídos.

Para a ferramenta, não acho que exista uma ferramenta melhor que o iptables para fazer isso no Linux.

Responder3

Depois de algumas pesquisas e recomendações de seu povo, cheguei à conclusão de que o iptable é a melhor maneira de fazer NATing (masqurating), então fiz o seguinte:

#Libere todas as configurações atuais do iptables com:

$>iptables -Fe $>iptables -t nat -F

Então tente fazer ping entre as redes locais, deve funcionar com os padrões do iptables, caso não digite isto:

$>iptables -P INPUT ACCEPT

$>iptables -P FORWARD ACCEPT

$>iptables -P OUTPUT ACCEPT

Em seguida, emita o comando acima de @Sachin Divekar (substitua o ethX pela sua interface de conexão com a internet):

$>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Teste, deve funcionar. Então você deve salvar essas configurações com:

$>iptables-save > /etc/sysconfig/iptables

Feito.

informação relacionada