Estou um pouco perdido aqui, por isso peço sua ajuda. =D
Tenho três servidores:
1# - LANs A and B
2# - LANs B and C
3# - LANs C and D
Como posso fazer com que o servidor 1# acesse pela LAN B um ip que esteja na LAN D do servidor 3# usando o servidor 2#?
NOTA: Podemos usar o firewall-cmd
( iptables
) ou qualquer outro recurso disponível em um CentOS 7.
Ilustrar
LAN B - 192.168.56.0/24
LAN C - 10.8.0.0/24
LAN D - 10.0.4.0/24
Ou seja , um ping( ping 10.0.4.4
) é executado no servidor 1# 'percorrendo' o caminho B -> C -> D .
OBS: Já fiz muitos e muitos testes e realmente não sei como resolver isso... =[
EDIÇÃO #1
Para facilitar as coisas, decidi enriquecer este tópico com informações reais.
Servidor1- LAN A -> Ignorado
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
- 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
- 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
ping 10.0.4.4
comando. - IMPORTANTE -> Esses são os testes que estou fazendo em máquinas virtuais.
Isso é uma coisa de rede muito básica: se você deseja conectar diferentes segmentos de LAN, você precisa de um roteador . Você não precisa de NAT, você não precisa
iptables
de , você apenas roteia, puro e simples.Por alguma razão, as pessoas parecem pensar que o roteamento precisa de pelo menos NAT ou
iptables
, e a internet está cheia de conselhos para esse fim. Não é realmente necessário, e uma implicância minha.Tudo que você precisa fazer é
1) Habilite o encaminhamento no servidor #2. Isso já foi descrito (adicione um arquivo em
/etc/sysctl.d/
, reinicie e veja secat /proc/sys/net/ipv4/ip_forward
mostra1
ou habilite-o diretamente comecho 1 > /proc/sys/net/ipv4/ip_forward
).2) Defina uma rota em todos os hosts que desejam usar o gateway . Isso é o que a maioria das pessoas esquece. Então, no servidor #1, você precisa de algo como
e o mesmo em todos os outros hosts na LAN A e B que desejam alcançar a LAN C e D. No servidor #3 (e todos os outros hosts relacionados), você precisa
Isso diz a cada host que, quando quiser alcançar a LAN remota, deve ir pelo servidor #2, com o endereço IP apropriado do servidor #2 na LAN local.
Você pode testar se o roteamento funciona
ip route get a.b.c.d
no servidor nº 1 e no servidor nº 3. Agora teste comping
. Se algo ainda estiver errado, depure comtcpdump
. Se um firewall estiver no caminho, desative-o conforme necessário.Quando tudo funcionar, use alguma maneira de tornar as rotas permanentes, por exemplo, distribuí-las via DHCP ou adicioná-las a um arquivo de configuração adequado.
Pelo que parece, você está descrevendo um NAT. Um NAT ( Network Address Translation ) é onde o tráfego de uma rede (LAN) é mascarado como vindo de outro servidor (WAN) que normalmente fica entre as 2 redes.
Este tutorial discute como você faria para configurá-lo no CentOS 7.x, intitulado: Deploy Outbound NAT Gateway on CentOS 7 .
A essência deste tipo de configuração é configurar o servidor na
(C)
posição com 2 NICs com 2 endereços IP de duas redes diferentes. Você também precisa configurar esse servidor para que ele encaminhe o tráfego. O comportamento padrão do sistema Linux é não fazer isso:Depois de fazer isso, você precisa configurar o firewall no sistema
(C)
para que ele encaminhe o tráfego também: