Encadeamento de dois túneis OpenVPN no mesmo servidor

0

Cenário:

  • Eu tenho um servidor Linux em casa, com um servidor OpenVPN. Ele é usado para acessar minha LAN a partir da Internet.

  • Neste servidor, também tenho um cliente VPN para se conectar a um servidor VPN comercial remoto.

Gostaria de encaminhar o tráfego do meu servidor OpenVPN para o servidor VPN comercial.

  • Primeiro, configurei meu servidor OpenVPN sem iniciar o cliente para se conectar ao servidor VPN comercial e ele funciona .

    Eu posso fazer logon no meu servidor VPN a partir da Internet e acessar a minha LAN apenas como eu queria.

    server.conf

    port 8443
    proto tcp
    dev tun1
    sndbuf 0
    rcvbuf 0
    ca vpn-home/ca.crt
    cert vpn-home/server.crt
    key vpn-home/server.key
    dh vpn-home/dh.pem
    auth SHA512
    tls-auth vpn-home/ta.key 0
    topology subnet
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist vpn-home/ipp.txt
    push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 8.8.4.4"
    keepalive 10 120
    cipher AES-256-CBC
    comp-lzo
    user nobody
    group nogroup
    persist-key
    persist-tun
    status vpn-home/openvpn-status.log
    verb 3
    crl-verify vpn-home/crl.pem
    

    192.168.1.20 é o endereço IP do meu servidor Linux em eth0 e a interface de rede do servidor VPN é tun1 .

    iptables

    # Deny All
    iptables -F
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    
    # Allow access to LAN from eth0
    iptables -A OUTPUT -o eth0 -s 192.168.1.20 -d 192.168.1.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth0 -s 192.168.1.0/24 -d 192.168.1.20 -m state --state ESTABLISHED -j ACCEPT
    
    # Allow DNS
    iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
    
    # VPN Server Rules
    iptables -A INPUT -i eth0 -p tcp --dport 8443 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth0 -p tcp --sport 8443 -m state --state ESTABLISHED -j ACCEPT
    iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
    iptables -A FORWARD  -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -i tun1 -j ACCEPT
    iptables -A OUTPUT -o tun1 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 192.168.1.0/24 -j SNAT --to 192.168.1.20
    
    # Allow TCP/443 to connect to the commercial VPN Server
    iptables -A OUTPUT -o eth0 -s 192.168.1.20 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth0 -d 192.168.1.20 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
    

    route

    Destination     Gateway         Genmask         Indic Metric Ref    Use Iface
    0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
    10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun1
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    
  • Agora eu inicio o cliente VPN para se conectar ao servidor VPN comercial através de TCP / 443 , e estou conectado a ele com a interface de rede tun0 .

    Do meu servidor Linux, meu endereço IP público é o endereço IP do servidor VPN comercial.

    No entanto, não consigo mais me conectar ao servidor VPN. Se eu monitorar o tráfego de rede no meu servidor Linux com tcpdump , eu posso ver os pacotes de entrada quando tento conectar, mas nada aparece. Se eu parar o cliente VPN, posso me conectar ao meu servidor VPN.

    route

    Destination     Gateway         Genmask         Indic Metric Ref    Use Iface
    0.0.0.0         10.7.7.1        128.0.0.0       UG    0      0        0 tun0
    default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
    10.7.7.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
    10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun1
    no-rdns-yet.oht 192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
    128.0.0.0       10.7.7.1        128.0.0.0       UG    0      0        0 tun0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    

    Neste ponto, não adicionei outras regras iptables , pois não entendi porque não consigo me conectar ao servidor VPN quando inicio o cliente VPN, mas posso me conectar a ele se eu parar o cliente VPN comercial.

    Também não sei quais regras iptables devem ser necessárias para enviar tráfego de tun1 para tun0 .

Qualquer ajuda apreciada, obrigado.

Atenciosamente

    
por Mr. Green 09.02.2018 / 23:48

0 respostas