Tengo un problema para configurar OpenVPN.
Esto sucede cuando estoy conectado: puedo hacer ping al servidor 192.168.42.1 desde el cliente 192.168.42.6 y viceversa. Puedo acceder a los demonios de escucha en el servidor 192.168.42.1 (http y dns). Puedo acceder al servidor con su IP de Internet pero la conexión no está enrutada en la VPN (hice un traceroute, pasa por el enrutador de mi casa). No puedo acceder a ninguna otra IP de Internet (en un traceroute de nmap, ¡solo veo una línea con 192.168.42.1!).
Aquí está la configuración de mi 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
Aquí está una parte de mi configuración de 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
¿Qué puedo hacer? Gracias por ayudar.
Respuesta1
Asumo por su pregunta y configuración que tiene la intención de permitir el acceso a Internet al cliente a través del servidor.
En ese caso me parece que tu configuración de openvpn es correcta.
Sin embargo, su filtrado no está completo. Tal como están las cosas, lo configura para reenviar nuevos paquetes de tun0 a em0 (que supongo que es la conexión Ethernet en el servidor), pero no ningún paquete de seguimiento ni ningún paquete de em0 a tun0. Se requiere comunicación bidireccional para casi todos los protocolos de Internet.
Por lo tanto, agregaría en tu configuración las líneas:
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
También debes asegurarte de que /proc/sys/net/ipv4/ip_forward contenga 1, y si no, ejecutar
sudo echo "1" > /proc/sys/net/ipv4/ip_forward
Dependiendo de su distribución, debería haber una manera de hacer que esa última configuración sea permanente (el comando solo hace que dure hasta el próximo reinicio).