Use as LANs de um servidor para acessar a LAN de outro

1

Estou um pouco perdido aqui, por isso estou pedindo sua ajuda. = D

Eu tenho três servidores:

1# - LANs A and B
2# - LANs B and C
3# - LANs C and D

Como posso fazer o servidor 1 # acessar através da LAN B um ip que está na LAN D do servidor 3 # usando o servidor 2 #?

OBSERVAÇÃO: Podemos usar o firewall-cmd ( iptables ) ou qualquer outro recurso disponível em um CentOS 7.

Para ilustrar

LAN B - 192.168.56.0/24
LAN C - 10.8.0.0/24
LAN D - 10.0.4.0/24

Isso é , um ping ( ping 10.0.4.4 ) é executado no servidor 1 # 'atravessando' caminho B - > C - > D .

OBSERVAÇÃO: fiz muitos e muitos testes e realmente não sei como resolver isso ... = [

EDIT # 1

Para facilitar as coisas, decidi enriquecer esse segmento com informações reais.

Servidor # 1
  • LAN A - > Ignorada
  • LAN B - > enp0s17 (192.168.56.0/24)

    [root@localhost ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:12:26:e2:6c brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.122/24 brd 192.168.56.255 scope global noprefixroute enp0s17
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:12ff:fe26:e26c/64 scope link 
           valid_lft forever preferred_lft forever
    
Servidor # 2
  • LAN B - > enp0s17 (192.168.56.0/24)
  • LAN C - > tun0 (10.8.0.0/24)

    [root@localhost ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:2c:d1:58 brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.10/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s8
           valid_lft 888sec preferred_lft 888sec
        inet6 fe80::2c5c:27aa:2636:8dc9/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:1c:a6:b9:59 brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.120/24 brd 192.168.56.255 scope global noprefixroute enp0s17
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:1cff:fea6:b959/64 scope link 
           valid_lft forever preferred_lft forever
    5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
        link/none 
        inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
           valid_lft forever preferred_lft forever
        inet6 fe80::6a67:7379:b64:967c/64 scope link flags 800 
           valid_lft forever preferred_lft forever
    
Servidor # 3
  • LAN C - > tun0 (10.8.0.0/24)
  • LAN D - > enp0s8 (10.0.4.0/24)

    [root@localhost ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:71:77:07 brd ff:ff:ff:ff:ff:ff
        inet 10.0.4.4/24 brd 10.0.4.255 scope global noprefixroute dynamic enp0s8
           valid_lft 1115sec preferred_lft 1115sec
        inet6 fe80::899f:8ca4:a7c6:25a7/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:ea:4e:40:ae brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.121/24 brd 192.168.56.255 scope global noprefixroute enp0s17
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:eaff:fe4e:40ae/64 scope link 
           valid_lft forever preferred_lft forever
    4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
        link/none 
        inet 10.8.0.6/24 brd 10.8.0.255 scope global tun0
           valid_lft forever preferred_lft forever
        inet6 fe80::48c2:b3cd:5845:5d35/64 scope link flags 800 
           valid_lft forever preferred_lft forever
    

Com base nas sugestões do @slm, fizemos o seguinte:

Comandos no servidor # 2
$ echo -n "net.ipv4.ip_forward=1" >> /etc/sysctl.d/ip_forward.conf
$ sysctl -w net.ipv4.ip_forward=1

$ firewall-cmd --permanent --direct --passthrough ipv4 -t nat \
   -I POSTROUTING -o tun0 -j MASQUERADE -s 192.168.56.0/24
$ firewall-cmd --reload
Comandos no servidor # 1
$ ping 10.0.4.4
  • PROBLEMA - > Não há resposta para o comando ping 10.0.4.4 .
  • IMPORTANTE - > Estes são testes que estou fazendo em máquinas virtuais.
por Eduardo Lucio 19.07.2018 / 19:28

2 respostas

3

Essa é uma coisa muito básica de rede: se você deseja conectar diferentes segmentos de LAN, você precisa de um roteador . Você não precisa de NAT, você não precisa de iptables , você apenas direciona, simples e simples.

Por alguma razão as pessoas parecem achar que o roteamento precisa de pelo menos NAT ou iptables , e a internet está cheia de conselhos para esse fim. Realmente não é necessário, e uma implicância minha.

Tudo o que você precisa fazer é

1) Ativar o encaminhamento no servidor # 2. Isso já foi descrito (adicione um arquivo em /etc/sysctl.d/ , reinicialize e veja se cat /proc/sys/net/ipv4/ip_forward mostra 1 ou ative-o diretamente com echo 1 > /proc/sys/net/ipv4/ip_forward ).

2) Defina uma rota em todos os hosts que desejam usar o gateway . É o que a maioria das pessoas esquece. Então, no servidor # 1, você precisa de algo como

ip route add 10.8.0.0/24 dev enp0s17 via 192.168.56.120
ip route add 10.0.4.0/24 dev enp0s17 via 192.168.56.120

e o mesmo em todos os outros hosts na LAN A e B que desejam acessar a LAN C e D. No servidor # 3 (e em todos os outros hosts), você precisa

ip route add 192.168.56.0/24 dev tun0 via 10.8.0.1

Isso diz a cada host que quando quiser alcançar a LAN remota, ela deve passar pelo servidor nº 2, com o endereço IP apropriado do servidor nº 2 na LAN local.

Você pode testar o roteamento com ip route get a.b.c.d no servidor # 1 e no servidor # 3. Agora teste com ping . Se algo ainda estiver errado, depure com tcpdump . Se um firewall estiver no caminho, desative-o conforme necessário.

Quando tudo funcionar, use alguma forma de tornar as rotas permanentes, por exemplo, distribuí-las via DHCP ou adicioná-las a um arquivo de configuração adequado.

    
por 20.07.2018 / 08:32
3

Da aparência, você está descrevendo um NAT. Um NAT ( Network Address Translation ) é onde o tráfego de uma rede (LAN) é mascarado como proveniente de outro servidor (WAN) que normalmente fica entre as duas redes.

 server #1                                                                                             
 +-----------------+                                                                                   
 |                 |                                                                                   
 |                 |                                                                                   
 |         10.0.0.2|------+                                                                            
 |                 |      |            server #3 (NAT)              +--------------+                   
 +-----------------+    +-------+     +-----------------+           |              |                   
                        |switch |-----+10.0.0.1         |           |     (D)      |                   
                        +-------+     |                 |           |              |                   
 server #2                 |          | (C)   54.1.1.23 |-----------+ 54.1.1.1     |-----+Internet     
 +-----------------+       |          |                 |           |              |                   
 |                 |       |          +-----------------+           |              |                   
 |           (B)   |       |                                        |              |                   
 |         10.0.0.3|-------+                                        +--------------+                   
 |                 |                                                                                   
 +-----------------+ 

Este tutorial discute como você gostaria de configurá-lo no CentOS 7.x, intitulado: Implantar o NAT Gateway de Saída no CentOS 7 .

A essência deste tipo de configuração é configurar o servidor na posição (C) com 2 NICs com 2 endereços IP de duas redes diferentes. Você também precisa configurar esse servidor para que ele direcione o tráfego. O comportamento padrão do sistema Linux é não fazer isso:

$ sudo sysctl -w net.ipv4.ip_forward=1
$ sudo 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/ip_forward.conf'

Depois de fazer isso, você precisa configurar o firewall no sistema (C) para que ele também encaminhe o tráfego:

$ sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat \
    -I POSTROUTING -o eth0 -j MASQUERADE -s 10.0.0.0/24
$ sudo firewall-cmd --reload
    
por 19.07.2018 / 20:39