Roteando o tráfego de rede entre duas sub-redes usando um Raspberry Pi

1

Estou com problemas para rotear tráfego entre duas sub-redes. Com minha configuração atual, posso fazer ping de hosts em ambas as sub-redes a partir do meu Rasbperry Pi, mas não posso fazer ping de hosts de uma sub-rede para outra (tempo limite).

Basicamente, gostaria que os hosts de uma sub-rede tivessem acesso a hosts na outra sub-rede. Meu plano era configurar meu Raspberry Pi para lidar com quase todo o roteamento entre sub-redes, já que cada sub-rede está atrás de seu próprio roteador doméstico básico que não suporta roteamento estático. Eu adicionaria então uma rota em cada host à sub-rede oposta via sua interface 'gateway' RPi.

Aqui está minha configuração atual:

LAN A <---> Router A <---> RPi <---> Router B <---> LAN B

LAN A
Rede: 192.168.0.0/24
Gateway: 192.168.0.1

LAN B
Rede: 192.168.1.0/24
Gateway: 192.168.1.1

RPi
OS: Raspbian
eth0: 192.168.0.4
eth1: 192.168.1.4

Configuração da interface RPi:

# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.0.4
    netmask 255.255.255.0
    broadcast 192.168.0.255
    gateway 192.168.0.1

# The USB-Ethernet interface 1
allow-hotplug eth1
iface eth1 inet static
    address 192.168.1.4
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

Rotas RPi:

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     192.168.0.1     255.255.255.0   UG    0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
192.168.1.0     192.168.1.1     255.255.255.0   UG    0      0        0 eth1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth1

Regras de firewall RPi:

# iptables -t nat -n -L -v
Chain PREROUTING (policy ACCEPT 2711 packets, 147K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 33 packets, 5204 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 97 packets, 7344 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 97 packets, 7344 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      eth0    192.168.0.0/24       192.168.1.0/24
    0     0 MASQUERADE  all  --  *      eth1    192.168.1.0/24       192.168.0.0/24

Roteiro do host 192.168.0.3 (WIN 10):

>route PRINT
===========================================================================
Interface List
...
===========================================================================

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.0.1      192.168.0.3    281
...
      192.168.1.0    255.255.255.0      192.168.0.4      192.168.0.3     26
...
===========================================================================
...

Atualmente, isso é o que acontece quando eu faço ping no gateway da sub-rede oposta do host 192.168.0.3:

>ping 192.168.1.1

Pinging 192.168.1.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 192.168.1.1:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss).

Olhando para a minha configuração, você provavelmente poderia dizer que tomei a abordagem shotgun, mas infelizmente não deu certo. Poderia, por favor, descobrir o que mais eu poderia precisar configurar, ou onde eu errei? Deixe-me saber se preciso fornecer mais alguma informação.

Muito obrigado antecipadamente. :)

    
por Mercedes Colomar 16.07.2017 / 11:31

1 resposta

1

O contexto completo da configuração é que temos dois apartamentos com sua própria conexão com a Internet e LAN, que unimos usando um RPi via cabeamento de jumpers na garagem. O objetivo deste exercício era administrar o NAS do apartamento no andar de cima sem que o tráfego da rede deixasse o prédio (o que também tornaria o compartilhamento de dados muito mais rápido) e também manter a configuração de Internet / rede de cada apt para continuar trabalhando no caso de o RPi cair. Como os roteadores de commodities em cada apartamento são tão carentes de opções e recursos, eu estava disposto a fazer concessões manualmente, adicionando rotas aos hosts dos quais faria a administração na minha sub-rede.

É verdade que preciso entender melhor o trabalho em rede e estou continuamente no processo de fazê-lo como profissional de TI. Eu conversei com um colega hoje sobre o meu problema e eu não precisei adicionar rotas, eu só precisava mudar as regras do firewall para usar o SNAT em vez do MASQUERADE e as sub-redes começaram a conversar umas com as outras (eu também precisei para permitir o encaminhamento de IPv4, como Paul sugeriu, obrigado!):

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.0/24 -o eth0 -j SNAT --to-source 192.168.0.4
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.1.0/24 -o eth1 -j SNAT --to-source 192.168.1.4

Lista completa de iptables:

# iptables -t nat -n -L -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 SNAT       all  --  *      eth0    192.168.1.0/24       192.168.0.0/24       to:192.168.0.4
    0     0 SNAT       all  --  *      eth1    192.168.0.0/24       192.168.1.0/24       to:192.168.1.4

Como você pode ver, agora o tráfego fica dentro do prédio ao testar do host 192.168.0.3:

>tracert 192.168.1.1

Tracing route to 192.168.1.1 over a maximum of 30 hops

  1     1 ms     1 ms    <1 ms  192.168.0.4
  2     1 ms     1 ms     1 ms  192.168.1.1

Trace complete.

Muito obrigado pelos seus comentários.

    
por 17.07.2017 / 07:54