Como habilitar o encaminhamento de dados entre duas interfaces locais?

3

Eu 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. Eu também tenho squid instalado como um servidor proxy. O Squid funciona bem quando todas as estações de trabalho estão conectadas ao roteador. No entanto ...

Quando eu conecto uma NIC ao meu roteador (conexão de internet ativa disponível), a outra NIC ao meu switch (sem internet disponível), posso criar duas redes separadas, mas não consigo descobrir como fazer as duas Os cartões NIC transferem dados entre eles, assim como nas duas redes.

  1. Eu tentei conectar ambas as placas Ethernet ... sem sorte!
  2. Eu tentei atualizar o iptables ... sem sorte!
  3. Eu configurei ambos os cartões NIC para endereços estáticos ... sem sorte!
  4. Eu configurei um NIC para usar o outro como um gateway ... sem sorte! Tudo resulta em um erro que o endereço com ping (rede relacionada ao switch) está em um destino inacessível.

O que estou perdendo?

    
por Jim Schafer 14.01.2012 / 12:12

2 respostas

5

O script descrito por @laurent é desnecessário, porque existe uma maneira canônica. Tudo o que você precisa fazer é editar /etc/sysctl.conf e descomentar (excluir # no início desta):

net.ipv4.ip_forward = 1

Em seguida, ele já será aplicado na inicialização.

    
por Mihail Malostanidis 17.02.2016 / 00:22
4

O Ubuntu tem o fowarding do ip desativado por padrão e você precisa habilitá-lo para rotear pacotes com a sua máquina:

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

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

Obs: não funciona com o sudo

E se você quiser rotear a internet a partir desta máquina, pode ser necessário configurar o NAT também.

EDITAR:

o primeiro comando echo 1 ... não funciona com o sudo. Você precisa mudar para root com sudo su before (porque o sudo executará o 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 um 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 o update-rc.d nele.

A regra de POSTROUTING parece OK se eth0 for sua placa de rede com conexão à 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

2a 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 este script em /etc/init.d com o nome que deseja ( router , por exemplo) e o torna executável ( sudo chmod +x /etc/init.d/router ).

Para que seja executado em cada reinicialização, você precisa criar links de início com update-rc.d:

sudo update-rc.d router defaults

Outras coisas que você precisa verificar:

  • DHCP trabalhando na segunda rede e enviando o IP da sua máquina como gateway padrão para a sub-rede
  • O
  • gateway padrão (o IP da sua máquina na nova sub-rede) é melhor com IP fixo
  • você comentou que não é possível 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 em 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 internet e rede sem ele, se você não precisar de recursos adicionais.

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

    
por laurent 14.01.2012 / 16:40