Ping entre dois sistemas Linux através de um Linux intermediário falha

0

Eu tenho uma rede simples com três sistemas Linux rodando o CentOS 2.6.

       Linux 1
(eth1: 192.138.14.1/24)
          |
          |
(eth4: 192.138.14.4/24)
       Linux 2
(eth2: 192.138.4.3/24)
          |
          |
(eth3: 192.138.4.2/24)
       Linux 3

Eu não consigo pingar o Linux 3 do Linux 1. O que eu sou capaz de pingar é do Linux 1 para o Linux 2 (eth2) e do Linux 3 para o Linux 2 (eth4). Isso significa que a partir do Linux 1, eu sou capaz de fazer ping 192.138.4.3 mas não 192.138.4.2.

A seguir, a saída do comando route -n no Linux1

Linux1# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.135.18.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1005   0        0 eth3
0.0.0.0         10.135.18.1     0.0.0.0         UG    0      0        0 eth0

No Linux 2:

Linux2# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.15.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.138.14.0    192.138.14.4    255.255.255.0   UG    0      0        0 eth4
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth4
192.138.4.0     192.138.4.3     255.255.255.0   UG    0      0        0 eth2
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2
10.135.18.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.138.16.0    0.0.0.0         255.255.255.0   U     0      0        0 eth3
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1004   0        0 eth2 
169.254.0.0     0.0.0.0         255.255.0.0     U     1005   0        0 eth3
169.254.0.0     0.0.0.0         255.255.0.0     U     1006   0        0 eth4
0.0.0.0         10.135.18.1     0.0.0.0         UG    0      0        0 eth0

No Linux 3:

Linux3# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth3
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth3
10.135.18.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1005   0        0 eth3
0.0.0.0         10.135.18.1     0.0.0.0         UG    0      0        0 eth0

Eu habilitei o encaminhamento de IP no Linux 2

Linux2# vi /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1

Linux2#: sysctl -p 
sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_sack = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

O resultado do iptables -L no Linux 2:

Linux2# iptables -L  
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere       

Para pingar o Linux3 do Linux 1, devo adicionar regras específicas para o icmp no iptables? Se não, o que estou perdendo?

    
por Prithvi Raj 10.02.2016 / 13:03

2 respostas

2

Existem alguns problemas com sua configuração.

Primeiro, você está usando endereços públicos e roteáveis como se fossem endereços particulares. Por exemplo, 192.138.14.1 é Capítulos Capital Management, LLC em NJ, enquanto 192.138.4.1 é o Centro de Computação da Universidade de Londres (Reino Unido). E assim por diante. Por favor, volte a usar endereços no intervalo 192.168.0.0/16.

Em segundo lugar, suas tabelas de roteamento contêm muitos erros. É melhor você começar de novo, apagando completamente as tabelas de roteamento atuais e configurando-as da seguinte maneira através do utilitário atual ip do pacote iprouter2 em vez de utilitários obsoletos como route .

No Linux1, deixe o gerenciador de rede ou o dhcp negociar a tabela de roteamento local e, em seguida, adicione:

  ip route add default via 192.168.14.4

Mesmo no Linux3, exceto que o comando é:

  ip route add default via 192.168.4.3

O mesmo no Linux2, exceto:

  ip route add default via 10.135.18.1
  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Desta forma, o Linux2 atua como roteador / gateway para Linux1 e Linux3, possui um gateway próprio voltado para a Internet e encobre o tráfego da Internet do Linux1 e Linux3 como se fosse seu (este é o significado de o comando iptables ).

Por favor note que nos endereços acima eu já convertei na faixa 192.138.0.0/16 para a faixa 192.168.0.0/16.

    
por 10.02.2016 / 15:10
-1

Ambos os servidores linux1 e linux3 possuem 192.138.4.0 e 192.168.14.0 roteados localmente. Então nada é enviado para o linux2 para roteamento

Linux 1

Linux1# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1 
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

Linux3

Linux3# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth3
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth3

Você pode dar o resultado desse comando no linux1 e no linux3?

# ip -4 addr list
# ip route list
    
por 10.02.2016 / 14:13