como rotear 3 NICs e 3 sub-redes

2

Estou tentando configurar o roteamento entre três sub-redes usando um servidor Ubuntu 12.10 com 3 NICs. Eu gostaria de poder fazer com que todas essas sub-redes façam a rota entre elas, além de poder acessar a Internet.

A rede 10.0.2.0 está conectada à internet. A caixa do roteador Netgear conectada à Internet tem um endereço de 10.0.2.1.

As três sub-redes são 10.0.2.0/16, 10.100.0.0/16 e 10.101.0.0/16.

Eu tentei configurar minhas interfaces / etc / network / para definir as NICs e o roteamento, mas não parece estar funcionando. Eu posso pingar todas as placas de rede no servidor Ubuntu a partir de qualquer máquina em qualquer uma das sub-redes respectivas, mas eu não sou capaz de fazer ping em nenhum sistema em sub-redes diferentes de qualquer uma dessas sub-redes. Nem eu posso sair para a internet das sub-redes.

# /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# eth0
auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 10.0.2.154
        netmask 255.255.0.0
        gateway 10.0.2.1
        dns-nameservers 10.0.2.100 8.8.8.8

# eth1
auto eth1
allow-hotplug eth1
iface eth1 inet static
        address 10.100.0.4
        netmask 255.255.0.0
        dns-nameservers 10.0.2.100 8.8.8.8

# eth2
auto eth2
allow-hotplug eth2
iface eth2 inet static
        address 10.101.0.1
        netmask 255.255.0.0
        dns-nameservers 10.0.2.100 8.8.8.8

up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.0.2.1 dev eth0
up route add -net 10.100.0.0 netmask 255.255.0.0 gw 10.0.2.154 dev eth0
up route add -net 10.101.0.0 netmask 255.255.0.0 gw 10.0.2.154 dev eth0
up route add -net 10.101.0.0 netmask 255.255.0.0 gw 10.100.0.4 dev eth1
up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.100.0.4 dev eth1
up route add -net 10.100.0.0 netmask 255.255.0.0 gw 10.101.0.1 dev eth2
up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.101.0.1 dev eth2

Eu adoraria ouvir qualquer sugestão de como eu poderia consertar meu arquivo / etc / network / interfaces para rotear adequadamente entre essas sub-redes.

    
por user127875 01.02.2013 / 21:42

2 respostas

2

Não há necessidade de adicionar rotas no roteador. Eles já estão conectados diretamente lá como uma interface local! Você pode ver isso executando route -n . Por exemplo:

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.25.1    0.0.0.0         UG    0      0        0 wlan0   # def.gw
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlan0   # zeroconf
192.168.0.0     192.168.25.254  255.255.255.0   UG    0      0        0 wlan0   # route
192.168.11.0    0.0.0.0         255.255.255.0   U     0      0        0 testvpn # interf.
192.168.25.0    0.0.0.0         255.255.255.0   U     2      0        0 wlan0   # interf.
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0  # interf.

Eu marquei uma rota real adicionada manualmente aqui com # route . Você notará que essas linhas também são listadas com o G flag! Os sem essa bandeira são apenas locais, diretamente disponíveis.

A única coisa que você precisa ativar é o encaminhamento IPv4.

sudo sysctl -w net.ipv4.ip_forward=1

e habilitá-lo permanentemente colocando essa linha em um arquivo /etc/sysctl.d/10-routing.conf (você pode criar um nome):

net.ipv4.ip_forward=1

A partir daqui, você terá que informar aos hosts nas redes sobre essas rotas. Então, em uma máquina no 10.100.0.0/16 , por exemplo, você precisará adicionar as rotas assim:

# On a client somewhere in 10.100.0.0
auto eth0
iface eth0 inet static
  address 10.100.0.123
  netmask 255.255.0.0
  # route 10.0.0.0/16 via 10.100.0.4
  up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.100.0.4
  # route 10.101.0.0/16 via 10.101.0.1
  up route add -net 10.101.0.0 netmask 255.255.0.0 gw 10.101.0.1

Uma maneira muito melhor de anunciar essas rotas é dizer a elas usando o DHCP ou torná-lo o gateway padrão usando gateway . Como alternativa, use protocolos de roteamento "reais", como OSPF, RIP, etc.

A propósito, a sintaxe no seu arquivo /etc/network/interfaces está errada. As entradas up devem fazer parte de cada interface individual listada, recuada por espaços como a entrada address .

    
por gertvdijk 01.02.2013 / 22:06
1

Para referência de todos, aqui está a solução final para o meu problema de roteamento. Abaixo você encontrará os arquivos /etc/network/interfaces, /etc/iptables.rules e /etc/sysctl.d/10-routing.conf finais que acabei.

Acontece que eu precisava remover os comandos de roteamento do meu arquivo / etc / network / interfaces e, em seguida, configurar o ipforwarding.

=========================================
/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# eth0
auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 10.0.2.154
        netmask 255.255.0.0
        gateway 10.0.2.1
        dns-nameservers 10.0.2.100 8.8.8.8
        pre-up iptables-restore < /etc/iptables.rules

# eth1
auto eth1
allow-hotplug eth1
iface eth1 inet static
        address 10.100.0.4
        netmask 255.255.0.0
        dns-nameservers 10.0.2.100 8.8.8.8

# eth2
auto eth2
allow-hotplug eth2
iface eth2 inet static
        address 10.101.0.1
        netmask 255.255.0.0
        dns-nameservers 10.0.2.100 8.8.8.8

=================================================

/etc/iptables.rules

# Generated by iptables-save v1.4.12 on Fri Feb  1 20:43:36 2013
*nat
:PREROUTING ACCEPT [204:18924]
:INPUT ACCEPT [35:6098]
:OUTPUT ACCEPT [3:164]
:POSTROUTING ACCEPT [1:40]
-A POSTROUTING -o eth0 -j SNAT --to-source 10.0.2.154
COMMIT
# Completed on Fri Feb  1 20:43:36 2013

=================================================

/etc/sysctl.d/10-routing.conf

net.ipv4.ip_forward=1
    
por user127875 02.02.2013 / 06:24