Conecte as redes juntas usando o OpenVPN no CentOS 7

1

Estou tentando conectar duas redes usando um par de sistemas CentOS 7 executando o OpenVPN.

Eu tenho um lado "servidor" que tem duas redes por trás, e um lado "cliente" que tem uma única rede. A conexão básica do openvpn está ativa, mas acho que tenho algo errado com o roteamento ou com a configuração do firewalld.

O OpenVPN é um pool em 10.8.0.0/24. O servidor tem redes 10.254.1.0/24 e 10.255.1.0/24 por trás dele; o cliente tem 10.255.0.1 por trás dele.

O servidor envia essas opções de roteamento em server.conf:

# Push any routes the client needs to get in
# to the local network.
push "route 10.254.1.0 255.255.255.0"
push "route 10.255.1.0 255.255.255.0"

Estes aparecem corretamente na tabela de roteamento do cliente:

10.8.0.1 via 10.8.0.5 dev tun0
10.8.0.5 dev tun0  proto kernel  scope link  src 10.8.0.6
10.254.1.0/24 via 10.8.0.5 dev tun0
10.255.0.0/24 dev enp6s4f0  proto kernel  scope link  src 10.255.0.1  metric 100
10.255.1.0/24 via 10.8.0.5 dev tun0

... e no lado do servidor eu configurei manualmente uma rota apropriada:

10.8.0.0/24 via 10.8.0.2 dev tun0
10.8.0.2 dev tun0  proto kernel  scope link  src 10.8.0.1
10.255.0.0/24 via 10.8.0.2 dev tun0

... e o gateway do cliente pode, de fato, executar ping em dispositivos mais profundos na rede do servidor:

[root@sentry openvpn]# ping -c 1 10.254.1.10
PING 10.254.1.10 (10.254.1.10) 56(84) bytes of data.
64 bytes from 10.254.1.10: icmp_seq=1 ttl=63 time=300 ms

... mas eu não posso ssh para isso.

# ssh [email protected]
ssh: connect to host 10.254.1.10 port 22: No route to host

... então, acho que pode ser um problema de firewall.

Em ambos os lados, adicionei a interface tun à minha zona interna.

No lado do cliente:

# firewall-cmd --info-zone="internal"
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp6s4f0 tun0
  sources:
  services: dhcp dhcpv6-client dns http mdns mosh samba-client snmp ssh syslog
  ports: 8000/tcp
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

... e o servidor:

# firewall-cmd --info-zone="internal"
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens161 ens256 tun0
  sources:
  services: dhcpv6-client mdns samba-client snmp ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

Agora, no servidor para fazer com que as duas redes internas conversem entre si, tive que adicionar regras diretas de iptables:

firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens256 -o ens161 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens161 -o ens256 -j ACCEPT

... então fiz a mesma coisa para a rede openvpn:

firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens256 -o tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o ens256 -i tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens161 -o tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o ens161 -i tun0 -j ACCEPT

... e no cliente:

firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp6s4f0 -o tun0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o enp6s4f0 -i tun0 -j ACCEPT

... tão claramente que eu não entendo como o roteamento deve funcionar, ou estou perdendo algo no lado do firewall.

Alguém pode me dizer o que eu estou sentindo falta?

    
por David Mackintosh 22.05.2017 / 19:27

0 respostas