Encaminhando túnel OpenVPN na interface pública e fora via interface NAT (para internet)

3

Espero que alguém possa ajudar ...

Eu quero configurar o OpenVPN-AS (ou seja, OpenVPN Access Server, NÃO OpenVPN) para funcionar no meu VPS. O VPS é um KVM rodando o Ubunto 10.04 LTS, com uma configuração muito baunilha. O OpenVPN-AS também é instalado com um 'sabor' mínimo.

O servidor tem duas interfaces (ambas DHCP, eth1 não possui um gateway padrão configurado, mas há um disponível):  - eth0 (um endereço IP público que NÃO é geolocalizado nos EUA) e  - eth1 (um endereço IP privado que pode NAT através de um roteador que é geolocated nos EUA)

A maior parte do tráfego, incluindo o túnel OpenVPN (UDP / 1194), chega via eth0, mas os clientes encapsulados devem sair 'via' via eth1, para obter o benefício de um endereço IP baseado nos EUA. Eu acho que existem dois problemas separados:  1) configurando o IP para que haja um gateway para os clientes encapsulados saírem pelo roteador NAT  2) configurar o OpenVPN-AS para que os clientes usem esse gateway para acesso à Internet

O arquivo / etc / network / interfaces é o seguinte:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# The internal (private) network interface
auto eth1
iface eth1 inet dhcp
  up   ip route add default via 172.16.0.254  dev eth1  table 100
  down ip route del default via 172.16.0.254  dev eth1  table 100
  up   ip rule  add        from 172.16.0.0/16 iif eth1 lookup 100
  down ip rule  del        from 172.16.0.0/16 iif eth1 lookup 100
  up   iptables -t nat -A POSTROUTING -s 5.5.0.0/20 -j SNAT --to-source 172.16.191.125
  down iptables -t nat -D POSTROUTING -s 5.5.0.0/20 -j SNAT --to-source 172.16.191.125

A rede é a seguinte:

root@us-tunnel:~# ifconfig | grep -A 1 encap
as0t0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:5.5.0.1  P-t-P:5.5.0.1  Mask:255.255.248.0
--
as0t1     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:5.5.8.1  P-t-P:5.5.8.1  Mask:255.255.248.0
--
eth0      Link encap:Ethernet  HWaddr 00:16:3c:34:01:20
          inet addr:209.141.60.114  Bcast:209.141.60.255  Mask:255.255.255.0
--
eth1      Link encap:Ethernet  HWaddr 00:16:3c:55:84:81
          inet addr:172.16.191.125  Bcast:172.16.255.255  Mask:255.255.0.0
--
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0

A tabela de rotas é a seguinte:

root@us-tunnel:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
209.141.60.0    *               255.255.255.0   U     0      0        0 eth0
5.5.0.0         *               255.255.248.0   U     0      0        0 as0t0
5.5.8.0         *               255.255.248.0   U     0      0        0 as0t1
172.16.0.0      *               255.255.0.0     U     0      0        0 eth1
default         209.141.60.1    0.0.0.0         UG    100    0        0 eth0
    
por zxdavb 18.02.2012 / 20:08

1 resposta

2

Você tem alguns passos que você precisa fazer para que isso funcione.

Primeiro, você precisa configurar rotas em seus arquivos de configuração para direcionar o tráfego do cliente através do adaptador do cliente.

Você pode fazer isso adicionando linhas "route" ao arquivo de configuração do cliente ou adicionando

"--pull" 

para a configuração do cliente e, em seguida, adicionando suas rotas à configuração do servidor.

"push route 0.0.0.0 5.5.0.1"
"push route 0.0.0.0 5.5.8.1"

Em segundo lugar, você precisa configurar seu iptables para permitir pacotes de entrada da rede vpn e habilitar o encaminhamento masqurade e nat no lado do servidor.

Para habilitar o encaminhamento de pacotes e o Nat

  1. habilitar o encaminhamento de pacotes no kernel

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  2. habilitar NAT no iptables

    sudo iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
    
  3. habilitar o encaminhamento para interfaces vpn

    sudo iptables --append FORWARD --in-interface as0t0 -j ACCEPT
    sudo iptables --append FORWARD --in-interface as0t1 -j ACCEPT
    

Esta é a configuração básica para o lado do roteamento, fique à vontade para comentar se precisar de ajuda mais detalhada.

    
por 07.03.2012 / 15:09