Configure corretamente duas interfaces eth em diferentes sub-redes

4

Alguém com experiência em Linux e Networking pode me ajudar? Eu vasculhei a Internet procurando uma resposta clara para isso e até comparei uma caixa à qual tenho acesso com a mesma configuração e não consigo fazer minha caixa funcionar.

A situação básica é esta:

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

Uma caixa Linux do RHEL 6 tem duas interfaces Ethernet:

eth0 = 10.10.5.10/24
eth1 = 10.10.6.10/24

[root@box ~]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.10.5.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0
10.10.6.0      0.0.0.0         255.255.255.0   U         0 0          0 eth1
0.0.0.0        10.10.5.254     0.0.0.0         UG        0 0          0 eth0
O

encaminhamento de ip foi ativado e está ativo.

O problema:

Clientes na mesma sub-rede que a eth1 ou a rede 10.10.6.x podem fazer ping e telnet para recursos executados na eth1 nesta caixa.

No entanto, os clientes em qualquer outra sub-rede não podem. Então, da minha estação de trabalho eu posso pingar e fazer telnet para recursos na eth0 da caixa o dia inteiro, mas nada na eth1 ... O que dá?

Comparar essa configuração com outra caixa de natureza semelhante em meu ambiente não mostra diferenças discerníveis.

Aqui estão alguns arquivos:

# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="Omitted"
IPADDR="10.10.5.10"
NETMASK="255.255.255.0"
NETWORK="10.10.5.0"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="no"

# cat ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="none"
HWADDR="omitted"
IPADDR="10.10.6.10"
NETMASK="255.255.255.0"
NETWORK="10.10.6.0"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="no"

# cat route-eth0 
default via 10.10.5.254 dev eth0

# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=box
GATEWAY=10.10.5.254
NOZEROCONF=yes

Qualquer ajuda que você puder fornecer será apreciada!

Obrigado.

Adicionando mais informações, mas com brevidade incluída:

# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    inet 10.10.5.10/24 brd 10.10.5.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    inet 10.10.6.10/24 brd 10.10.6.255 scope global eth1
    
por beaconfield 06.06.2013 / 16:50

3 respostas

3

com a configuração mostrada atualmente:

  • você tem dois lados:

    • o lado eth1 (interface 10.10.6.10, em 10.10.6.0/24 lan)
    • o lado eth0 (interface 10.10.5.10, em 10.10.5.0/24 lan)
    • você definiu o gateway padrão da máquina no lado eth0 (default gw ip: 10.10.5.254)
  • portanto

    • no lado eth1:
      • [requisito] qualquer máquina no 10.10.6.0/24 deve ser capaz de se comunicar com o 10.10.6.10 (e com o outro também) (não assumo nenhum problema de firewall)
      • [requisito] além disso: qualquer máquina em 10.10.6.0/24 QUE tenha definido seu gateway padrão como "10.10.6.10" será capaz de enviar pacotes para outras máquinas, passando por sua máquina (10.10.6.10/24- > eth1 [máquina] eth0- > outras lans). Na verdade, você não precisa tê-lo como gateway padrão, mas para QUALQUER lan no lado eth0, eles precisam associar essa LAN ao gateway 10.10.6.10.
    • no lado eth0:
      • [requisito] qualquer máquina em 10.10.5.0/24 deve ver 10.10.5.10 (eth0) e pode se comunicar com ele (e uns com os outros).
      • [requisito] qualquer máquina em outra LAN deve ser capaz de se comunicar com eth0, via (com talvez saltos adicionais) a máquina que possui 10.10.5.254 ip (ex: se essa máquina tiver 2 sub-redes, 10.10.5.254/24 em do mesmo lado que eth0 e 10.xyz/24 em outra interface, a máquina em 10.xy0 / 24 pode enviar pacotes para 10.10.5.10 tendo uma rota: 10.10.5.0/24 com gateway 10.xyz).
      • se assim for, então eles só precisam ter uma rota adicional para alcançar 10.10.6.0/24: 10.10.6.0/24 via gateway 10.x.y.z

pode ser complicado colocar palavras ...

o que ajudaria: diga-nos a lista de redes () e as getways de cada rede.

agora eu imaginei que você tentasse:

 [everything other machines (even internet, via the exterior internet gateway)]
                  |
                  |(links via switch(s) for 10.x.y.0/24 network, for example.
                  |   If you have such an additionnal LAN.
                  |   Maybe it's even "the Internet", and therefore not in 10.x anything,  
                  |   but this is just an example.)
                  |
                  |      
      (10.x.y.z?) |  [---------------]
   (or Internet?)ethZ[some router/box]ethW(10.10.5.254)
                     [---------------] |
                                       |
                                       |(links via switch(s) for 10.10.5.0/24 network)
                                       |
                             [-------] |
             (10.10.6.10)eth1[yourbox]eth0(10.10.5.10)
                          |  [-------]   
                          |
                          |(links via switch(s) for 10.10.5.0/24 network)
                          |
                          |  [---------------------------]
                         ethx[any machine in 10.10.6.0/24]
                             [---------------------------]

Modo geral de depurar sua configuração:

  • imagine que você é o pacote IP: você tem um IP de origem, um IP de destino.
  • Agora, na interface em que você está sentado na fonte, veja quais rotas da máquina informam qual é o próximo salto. E vá até lá (mas primeiro garanta que a configuração da máquina permita, por exemplo, na máquina eth0 / eth1, ela precisa que o ipforward vá de uma interface para outra). E prossiga, um salto de cada vez, em direção ao seu objetivo (E de volta à sua fonte: às vezes a rota / defaultgw da máquina de destino está quebrada e, portanto, o pacote de resposta não é enviado pelo caminho correto)
    • ex1 (muito simples): 10.10.6.10 tentando enviar para 10.10.5.10: step1 você está em eth1 (10.10.6.10). Essa máquina tem uma rota dizendo "10.10.5.0/24 está diretamente aqui, na eth0". Ipforwarding permite que você pule de eth1 para eth0. Vá para eth0. step2: você está agora (mesmo pacote IP) em eth0. Acontece que este é o seu destino: BOA. passo 2b: pacote de resposta: fonte / destino inverso: agora você é um pacote (10.10.5.10 - > 10.10.6.10 =): graças a deus, uma rota local indica que o próximo salto está na eth1. step4: no eth1: você está no destino. BOM.
    • ex2 (um pouco mais ex :) você é um pacote de "any_machine", 10.10.6.12 (no lado eth1). você tenta alcançar como destinatino o google (8.8.8.8, por exemplo). Então você é "10.10.6.12 - > 8.8.8.8" e a princípio você se senta na interface 10.10.6.12 (digamos, eth3). Uma rota local em "any_machine" informa (como foi o pré-requisito, acima): "default gw = 10.10.6.10", então você vai para "yourbox" e chega lá no lado eth1. step2: agora você está em "yourbox / eth1": agora as rotas locais informam "você precisa ir para o padrão gw: 10.10.5.254, via eth0" (e o ipforward em "yourbox" permite que você pule de eth1 para eth0). Agora você chega na eth0, e seguindo a rota default gw, você chega mais tarde "somerouter" no ethW (10.10.5.254). etc ... (e não esqueça de verificar o caminho de volta)
por 06.06.2013 / 19:30
1

Seu gateway padrão está em 10.10.5.254, entretanto a interface eth1 é configurada como 10.10.6.10/24. O que isso significa efetivamente é que a interface 10.10.6.x não pode atingir o gateway padrão, pois eles estão em sub-redes diferentes.

Mais informações gerais sobre a rede são necessárias para avaliar corretamente suas opções, no entanto, as duas opções do que foi publicado até agora são:

  • Confirme se as duas redes são, de fato, / 24 sub-redes, se assim for, defina o gateway apropriado para eth1 no arquivo de configuração dessa interface
  • Se as interfaces fizerem parte de uma super-rede maior, configure as duas interfaces para que existam em uma sub-rede / 16 para usar o mesmo gateway.
por 06.06.2013 / 19:11
0

Você ativou o encaminhamento de IP?

sysctl net.ipv4.ip_forward

Se ele diz 0 você não tem e sua caixa não está roteando pacotes.

Ativá-lo por

sysctl -w net.ipv4.ip_forward=1

E torne-o permanente adicionando o seguinte a /etc/sysctl.conf :

net.ipv4.ip_forward = 1
    
por 06.06.2013 / 20:29