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