OpenVPN: encaminha a LAN do cliente para a VPN

2

Minha configuração atual envolve um servidor openVPN com uma única interface de rede e um cliente em outra rede que atua como roteador para uma LAN específica. Meu objetivo é permitir o encaminhamento do tráfego da LAN por meio da VPN.

O roteador da LAN é aquele que se conecta ao servidor openVPN através de sua interface pública.

  • rede openVPN: 10.8.1.0/24
  • rede interna: 192.168.10.0/24

Firewall

*nat
:PREROUTING ACCEPT [2:98]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [5:327]
-A POSTROUTING -s 10.8.1.0/24 -o em1 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [186:19694]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp -m state --state NEW,ESTABLISHED -m udp --dport 1195 -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i tun+ -j ACCEPT
-A FORWARD -s 10.8.1.0/24 -o em1 -j ACCEPT
-A FORWARD -i tun+ -o em1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i em1 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

servidor OpenVPN

port 1195 # 1194 is used by another OpenVPN 
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/suzume.crt
key /etc/openvpn/suzume.key
server 10.8.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
client-config-dir ccd
route 192.168.10.0 255.255.255.0
tls-auth /etc/openvpn/ta.key 0

cliente OpenVPN

cliente    dev tun    my_SERVER_IP remoto    proto udp    nobind    resolv-retry infinite    persistência-chave    persist-tun    ca ca.crt    cert myhostname.crt    chave myhostname.key    servidor ns-cert-type    tls-auth ta.key 1    comp-lzo    verbo 3    teste de mtu

Neste momento, não estou empurrando ainda o gateway padrão: estou fazendo testes adicionando IPs únicos à tabela de roteamento. No cliente:

route add 69.192.17.215 gw 10.8.1.5 tun1

(novamente, o cliente é realmente um roteador para uma LAN)

Se eu estiver no próprio cliente, posso ver com traceroute que os pacotes passam pela VPN. No entanto, se eu tentar acessar o mesmo IP dos clientes, nada passa. um tcpdump na interface VPN no servidor mostra:

# tcpdump -n -i tun0
  tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
  00:25:13.267823 IP MY_INTERNAL_IP > 69.192.17.215: ICMP echo request, id 3607, seq 11, length 64

E nada passa.

Compare isso quando faço coisas diretamente no cliente:

00:28:10.277901 IP OPENVPN_CLIENT_IP > 69.192.17.215: ICMP echo request, id 5243, seq 1, length 64
00:28:10.365054 IP 69.192.17.215 > OPENVPN_CLIENT_IP: ICMP echo reply, id 5243, seq 1, length 64

Eu também defini iroute 192.168.10.0 255.255.255.0 no meu ccd dir para o cliente. No entanto, não consigo rotear o tráfego da LAN através da VPN, presumivelmente porque o servidor não sabe como enviar dados de volta para eles.

O que estou perdendo para fazer isso? Eu tenho acesso total no servidor e no cliente / roteador. O servidor roda o CentOS 6.5 e o cliente / router Debian Squeeze.

    
por Einar 30.10.2014 / 00:30

1 resposta

3

A solução foi, no cliente / roteador, fazer

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o tun1 -j MASQUERADE

em que tun1 é a interface da VPN. Ao mascarar os IPs internos, tudo funciona.

    
por 30.10.2014 / 00:59