Como habilitar o encaminhamento de dados entre duas interfaces locais?

Como habilitar o encaminhamento de dados entre duas interfaces locais?

Instalei o Ubuntu 11.10 em uma máquina recondicionada. Também substituí uma placa NIC com defeito por uma nova placa NIC; duas placas NIC são reconhecidas quando a instalação ocorre. Também tenho o squid instalado como servidor proxy. O Squid funciona bem quando todas as estações de trabalho estão conectadas ao roteador. No entanto ... .

Quando conecto uma NIC ao meu roteador (conexão ativa com a Internet disponível), a outra NIC ao meu switch (sem internet disponível), posso criar duas redes separadas, mas não consigo descobrir como fazer a transferência das duas placas NIC dados entre si, bem como entre as duas redes.

  1. Tentei conectar as duas placas Ethernet... sem sorte!
  2. Eu tentei atualizar o iptables... sem sorte!
  3. Configurei ambas as placas NIC para endereços estáticos... sem sorte!
  4. Configurei uma NIC para usar a outra como gateway... sem sorte! Todos resultam em um erro de que o endereço pingado (rede relacionada ao switch) está em um destino inacessível.

o que estou perdendo?

Responder1

O script descrito por @laurent é desnecessário, pois existe uma forma canônica. Tudo que você precisa fazer é editar /etc/sysctl.confe descomentar (excluir #no início) esta linha:

net.ipv4.ip_forward = 1

Então já estará aplicado na inicialização.

Responder2

O Ubuntu tem o encaminhamento de IP desabilitado por padrão e você precisa habilitá-lo para rotear pacotes com sua máquina:

para ativar, digite terminal como root ( sudo su):

echo 1 > /proc/sys/net/ipv4/ip_forward

Obs: não funciona com sudo

E se você quiser rotear a Internet a partir desta máquina, talvez seja necessário configurar o NAT também.

EDITAR:

o primeiro comando echo 1 ...não funciona com o sudo. Você precisa mudar para root sudo suantes (porque o sudo executará echo 1 como root, mas tentará redirecionar para o arquivo como seu usuário e isso não funcionará). De qualquer forma, você sempre pode verificar se existe 1 com cat /proc/sys/net/ipv4/ip_forward. Obs:isso deve ser feito em cada inicialização para que você possa escrever um script e usar update-rc.d nele.

A regra POSTROUTING parece OK se eth0 for sua NIC de conexão com a Internet.

Regras FORWARD que uso para conexões estabelecidas e relacionadas:

-A FORWARD -p tcp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT

2ª ATUALIZAÇÃO - Script automático:

#!/bin/sh
# turn ip_forward on/off

case "$1" in
'start')
        echo 1 > /proc/sys/net/ipv4/ip_forward
        ;;
'stop')
        echo 0 > /proc/sys/net/ipv4/ip_forward
        ;;
*)
        echo "Usage: $0 { start | stop }"
        ;;
esac
exit 0

Você salva esse script /etc/init.dcom o nome que desejar ( routerpor exemplo) e o torna executável ( sudo chmod +x /etc/init.d/router).

Para executá-lo em cada reinicialização, você precisa criar links iniciais com update-rc.d:

sudo update-rc.d router defaults

Outras coisas que você deve verificar:

  • DHCP trabalhando na 2ª rede e enviando o IP da sua máquina como gateway padrão para sub-rede
  • gateway padrão (IP da sua máquina na nova sub-rede) é melhor com IP fixo
  • você comentou que não consegue executar ping na segunda NIC, mas de onde? a sub-rede, sua máquina ou máquinas conectadas diretamente no roteador?
  • O squid está instalado na sua máquina? Você alterou a configuração para incluir a nova sub-rede? Você precisa de lula? Não é muito fácil de configurar e você pode muito bem compartilhar a Internet e a rede sem ele, se não precisar de seus recursos adicionais.

Obs: a mensagem update-rc.d está OK, não há problema com ela. Agora você deve ter sempre um 1 no arquivo ip_forward.

Responder3

Tentei este conselho e me deparei com um problema que não foi abordado aqui: o próximo computador precisa saber como voltar ao último computador.

No meu caso, tenho 2 redes: uma rede WiFi, 192.168.1.0/24, e uma rede Ethernet, 192.168.40.0/24. Meu "roteador" é um laptop com um transceptor WiFi na rede 192.168.1.0/24 e uma interface Ethernet na rede 192.168.40.0/24. O roteador doméstico também possui um transceptor WiFi e uma interface Ethernet, mas esse transceptor Ethernet se conecta à Internet. O roteador doméstico também possui um Network Address Translator (NAT). O roteador doméstico possui uma tabela de roteamento, e essa tabela de roteamento possui uma entrada de rota padrão, que normalmente aponta para o roteador do Provedor de Serviços de Internet (ISP).

Quando um computador da rede 192.168.40.0/24 desejava enviar um pacote para algum computador na Internet, ele consultava sua própria tabela de roteamento e sabia que o gateway padrão era o laptop, 192.168.40.1. Quando o pacote chegou ao laptop, ele consultou sua própria tabela de roteamento e encaminhou o pacote para o roteador doméstico. O roteador doméstico consultou sua tabela de roteamento, passou pela Tradução de Endereço de Rede (um detalhe que podemos ignorar nesta discussão) e depois foi para o roteador do ISP. Em algum momento, a máquina de destino desejará enviar um pacote para o meu computador. O pacote chegará ao roteador doméstico, passará pelo NAT reverso e então deverá ser roteado. Quando o pacote sair do NAT, ele terá um endereço IPv4 de destino na rede 192.168.40.0/24. Foi nesse ponto que me deparei com um problema: o roteador doméstico não conhecia a rede Ethernet, 192.168.40.0/24. Então ele fez o que deveria fazer - encaminhar aquele pacote para seu roteador padrão, ou seja, o roteador do ISP.

Para resolver o problema, tive que fazer uma entrada na tabela de roteamento do roteador doméstico, que informa que para chegar a qualquer computador da rede 192.168.40.0/24, envie o pacote para o endereço WiFi do laptop, que está em 192.168.0/24. 1,0/24. Agora, quando o pacote chega ao laptop, o laptop conhece a rede 192.168.40.0/24 e roteia o pacote para lá.

informação relacionada