Roteamento no OpenVPN entre uma rede privada e um cliente

3

Estou tentando configurar o OpenVPN entre uma rede privada e clientes domésticos que se conectam a ele. (Os clientes não precisam se conectar uns aos outros). A topologia de rede é um pouco interessante. Existe uma rede pública / universitária em 10.7.42.0/24. Temos alguns IPs nessa rede que têm portas públicas encaminhadas para eles, mas estamos limitados a isso, então estamos colocando muito em uma rede privada em 192.168.203.0/24. Todas as máquinas têm pelo menos um IP privado e algumas têm IPs públicos e privados (dois adaptadores. Tudo isso é feito em VMs, mas é como se houvesse duas redes fisicamente separadas)

O servidor OpenVPN também é o gateway entre as redes pública / privada. Tem um endereço 10.7.42.x, um gateway padrão de 10.7.42.1 (gateway universitário), mascara / IP encaminha qualquer-para-algum, e tem um endereço interno de 192.168.203.1. Ele funciona com sucesso para o NAT / gateway.

Minha configuração de servidor VPN aberto se parece com isso:

local 10.42.7.226
port 443
proto tcp
dev tun
ca /etc/openvpn/easy-rsa-2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa-2.0/keys/server.crt
key /etc/openvpn/easy-rsa-2.0/keys/server.key  # This file should be kept secret
dh /etc/openvpn/easy-rsa-2.0/keys/dh1024.pem
server 192.168.137.0 255.255.255.0

ifconfig-pool-persist /etc/openvpn/ipp.txt

route 192.168.203.0 255.255.255.0
push "route 192.168.203.0 255.255.255.0"

push "dhcp-option DNS 192.168.203.100"

keepalive 10 120

cipher BF-CBC        # Blowfish (default)


comp-lzo

plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name

max-clients 201

user nobody
group nobody

persist-key
persist-tun

status /var/log/openvpn-status.log

log-append  /var/log/openvpn.log

O ifconfig tem esta aparência:

eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:192.168.203.1  Bcast:192.168.203.255  Mask:255.255.255.0
          inet6 addr: fe80::8c2c:6bff:fe5b:5406/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:183488 errors:0 dropped:4 overruns:0 frame:0
          TX packets:198145 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15024794 (14.3 Mb)  TX bytes:186885934 (178.2 Mb)
          Interrupt:32 Base address:0xa000 

eth1      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:10.42.7.226  Bcast:10.42.7.255  Mask:255.255.255.0
          inet6 addr: fe80::a011:59ff:fe3e:c3aa/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:436236 errors:0 dropped:99041 overruns:0 frame:0
          TX packets:202673 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:239838327 (228.7 Mb)  TX bytes:20537299 (19.5 Mb)
          Interrupt:36 Base address:0xe100 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:100 (100.0 b)  TX bytes:100 (100.0 b)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.137.1  P-t-P:192.168.173.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:631 errors:0 dropped:0 overruns:0 frame:0
          TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:48118 (46.9 Kb)  TX bytes:13725 (13.4 Kb)

Minhas rotas são assim:

192.168.137.2     *               255.255.255.255 UH    0      0        0 tun0
10.42.7.0       *               255.255.255.0   U     0      0        0 eth1
192.168.203.0   *               255.255.255.0   U     0      0        0 eth0
192.168.137.0     192.168.137.2     255.255.255.0   UG    0      0        0 tun0
link-local      *               255.255.0.0     U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         10.42.7.1       0.0.0.0         UG    0      0        0 eth1

O cliente é assim:

dev tun
remote vpn.mydomain.com
ca ca.crt

client
port 443
proto tcp
tls-client
auth-user-pass

comp-lzo

ping 15
verb 9
log-append  /tmp/openvpn.log 

O problema é que eu só posso chegar ao servidor OpenVPN se eu ssh para 192.168.137.1. Não consigo me conectar a nenhum dos endereços 192.168.203.0/24. Se eu fizer uma rota de rastreio, ela só ocorrerá em um salto e levará 30 segundos para fazer isso na VPN para o adaptador de tun remoto.

As máquinas privadas usam o 192.168.203.1 (servidor OpenVPN) como seu gateway, portanto, os pacotes devem fazer o caminho de volta bem, pelo menos para essas máquinas (na verdade, eles seriam NATed quando saírem, então ele deve chegar a máquinas com adaptadores públicos e privados também)

Configurei essas redes OpenVPN antes e sei que me deparei com esse problema exato antes, mas não me lembro da solução.

    
por djsumdog 25.08.2011 / 07:38

1 resposta

2

Eu encontrei o problema. Foi o meu firewall. Se eu desabilitei o firewall e coloquei manualmente as regras que eu precisava com o iptables, ele funciona bem. (A questão número 1 que as pessoas têm com o OpenVPN geralmente é baseada no firewall de acordo com a #openvpn chatroom no freenode.net). Então eu ajustei os scripts do firewall para permitir o tráfego tun0 e reiniciei.

    
por 26.08.2011 / 15:13