Configuração do servidor OpenVPN para rotear o tráfego da Internet

Configuração do servidor OpenVPN para rotear o tráfego da Internet

Estou com um problema para configurar o OpenVPN.

Isso acontece quando estou conectado: posso executar ping no servidor 192.168.42.1 do cliente 192.168.42.6 e vice-versa. Posso acessar os daemons de escuta no servidor em 192.168.42.1 (http e dns). Consigo acessar o servidor com o IP da internet dele mas a conexão não é roteada na VPN (fiz um traceroute, ele passa pelo meu roteador doméstico). Não consigo acessar nenhum outro IP da Internet (em um traceroute nmap, vejo apenas uma linha com 192.168.42.1!).

Aqui está a configuração do meu servidor OpenVPN:

port 443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 192.168.42.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 192.168.42.1"
duplicate-cn
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
status openvpn-status.log
verb 4
script-security 2
push "redirect-gateway def1"
auth-user-pass-verify /home/openvpn/chroot/login.php via-file
port-share 127.0.0.1 4433
max-clients 10
daemon

Aqui está uma parte da minha configuração do iptables:

# current configuration (i removed some lines concerning other ports)
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

# lines added for OpenVPN
iptables -A FORWARD -i tun0 -o em1 -s 192.168.42.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o em1 -j MASQUERADE

O que posso fazer? Obrigado por ajudar.

Responder1

Presumo pela sua pergunta e configuração que você pretende permitir o acesso à Internet ao cliente através do servidor.

Nesse caso, parece-me que a sua configuração do openvpn está correta.

No entanto, sua filtragem não está completa. Do jeito que está, você o configura para encaminhar novos pacotes de tun0 para em0 (que presumo ser a conexão Ethernet no servidor), mas não qualquer pacote de acompanhamento ou qualquer pacote de em0 para tun0. A comunicação bidirecional é necessária para quase todos os protocolos de Internet.

Portanto, eu adicionaria na sua configuração as linhas:

iptables -A FORWARD -i tun0 -o em1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i em1 -o tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Você também deve certificar-se de que /proc/sys/net/ipv4/ip_forward contém 1 e, se não, execute

sudo echo "1" > /proc/sys/net/ipv4/ip_forward

Dependendo da sua distribuição, deve haver uma maneira de tornar essa última configuração permanente (o comando só faz com que ela dure até a próxima reinicialização).

informação relacionada