Arreglando ruta e iptables para una interfaz OpenVPN tun0, con un enrutamiento seleccionado y seguro

Arreglando ruta e iptables para una interfaz OpenVPN tun0, con un enrutamiento seleccionado y seguro

Configuré mi enrutador para usar VPN de terceros para máxima seguridad. Dado que los ISP que estoy usando han bloqueado todos los protocolos VPN conocidos, incluidos los protocolos OpenVPN, me veo obligado a configurar mi enrutador para usar el proxy http de modo que OpenVPN pueda ocultar su huella digital del firewall del ISP que censura.

Dicho esto, uso una VPN comercial de terceros y uso su(s) archivo(s) de configuración tcp OpenVPN
para que Internet sin restricciones esté disponible para mis dispositivos conectados.

Dado que el cliente OpenVPN necesita un proxy http para conectarse a su servidor, primero configuro el proxy http en mi enrutador y luego conecto el cliente OpenVPN a Internet.

Tenga en cuenta que tanto el proxy http como el cliente OpenVPN se ejecutan en unmismoenrutador OpenWRT,Nodispositivos separados!

Dicho esto, dado que muchos de los proveedores de VPN comerciales en el lado de su servidor OpenVPN introducen su configuración de ruta y puerta de enlace en su cliente después de que el cliente establece la conexión, todas las interfaces LAN del cliente, incluido el procesador del enrutador, se ven obligadas a utilizar el tráfico de Internet redirigido del cliente y Como resultado, el proceso de proxy que se ejecuta en el enrutador, que debería obtener Internet directamente desde la WAN, se ve obligado a utilizar la interfaz tun0 de Internet y, después de unos segundos, falla y, como consecuencia, el cliente openvpn falla muy poco después.

Para evitar el problema mencionado anteriormente, he agregadosin tirarcomando en elcliente.ovpnarchivo.

Tenga en cuenta que, dado que estoy usando VPN comercialesNo tengo acceso a sus servidores OpenVPN! y mi enrutador usaiptables(fw3)y no nftables(fw4), por lo que el archivo client.ovpn tiene el siguiente aspecto,

` cliente dev tun0 proto tcp remoto XX.YY.ZZ.RR 443 nobind auth-user-pass cred.txt

persist-tun
......
http-proxy 192.168.55.1 1080 auto
http-proxy-retry
route-nopull

`

La configuración anterior se conecta al servidor OpenVPN (servidor comercial) como un encanto y crea una interfaz tun0 en mi dispositivo enrutador OpenWRT.

Puedo rastrear un sitio web a través del dispositivo tun0 sin problemas,

#traceroute -i tun0 www.yahoo.com
traceroute to www.yahoo.com (87.248.119.251), 30 hops max, 46 byte packets
 1  *  10.124.148.1 (10.124.148.1)  1357.499 ms  195.523 ms
 2  vlan112.as02.stk1.se.m247.ro (146.70.16.241)  199.262 ms  190.672 ms  *

Dicho esto, dado que no extraigo ninguna configuración de ruta y firewall del servidor OpenVPN, debo crear mi propia ruta y reglas de iptables tan pronto como se cree esta interfaz tun0.

Pero antes de explicar más, debo mencionar que la dirección IP local de mi enrutador es 192.168.55.1 y los dispositivos br-lan (puente LAN) obtienen su dirección IP de una dirección de grupo DHCP 192.168.55.65-192.168.55.126 o mejor dicho (255.255). .255.192/26) rango.

Mi intención y objetivo es configurar el enrutador para que haga lo siguiente:

[a] todos los dispositivos en el br-lan (rango 192.168.55.65-192.168.55.126)excepto el propio enrutador 192.168.55.1debería obtener todo su tráfico de Internet, incluidos ssh, dns, icmp, tcp, udp... desde el dispositivo tun0.

[b] Por razones de seguridad, si no hay una interfaz tun0 o no hay respuesta de la interfaz tun0, todo el tráfico de Internet de los dispositivos br-lan (rango 192.168.55.65-192.168.55.126), excepto el enrutador, debe bloquearse de Internet. lo que se traduce en que todos esos dispositivos mencionados solo deberían tener acceso a Internet si tun0 está activo y respondiendo,No hay otras alternativas, como rutas ponderadas, caminos alternativos.son aceptados.

[c] Todos los dispositivos br-lanincluidoel enrutador, las impresoras, las PC, el NAS, ... deberían poder encontrarse y comunicarse entre sí en la misma subred, sin restricciones.

Sé que hay algunos comandos de OpenVPN que puedo insertar en el archivo de configuración client.ovpn para hacer posibles algunas rutas, como,

el filtro de extracción ignora la "puerta de enlace de redireccionamiento"oruta 192.168.55.64 255.255.255.192 pero los comandos anteriores me bloquearon un par de veces y no pude acceder a la página web del enrutador, además ninguno de ellos funcionó como se esperaba.

Además, ejecuté manualmente el siguiente script después de la creación de tun0, pero no permitió que el tráfico de Internet pasara a través de tun0 en dispositivos br-lan.

Creé la tabla ovpn en el siguiente archivo

/etc/iproute2/rt_tables
#reserved values
#
128     prelocal
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1       ovpn

y

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables -A FORWARD -i br-lan -o tun0 -s 192.168.55.64/26 -j ACCEPT
iptables -A FORWARD -i tun0 -o br-lan -j ACCEPT

iptables -A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

ip route add default dev tun0 table ovpn
ip route add 192.168.55.64/26 dev br-lan table ovpn

ip rule add from 192.168.55.64/26 table ovpn

He buscado mucho en Google para encontrar una solución, pero estoy bastante seguro de que debería tratar a tun0 como una interfaz semi wan simple.

Aquí está mi tabla de rutas simple sin rutas manuales adicionales,

#route -n  
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.8.1     0.0.0.0         UG    0      0        0 phy1-sta0
10.124.148.0    0.0.0.0         255.255.254.0   U     0      0        0 tun0
192.168.8.0     0.0.0.0         255.255.255.0   U     0      0        0 phy1-sta0
192.168.55.0    0.0.0.0         255.255.255.0   U     0      0        0 br-lan

y más

#ip route show
default via 192.168.8.1 dev phy1-sta0 proto static src 192.168.8.118
10.124.148.0/23 dev tun0 proto kernel scope link src 10.124.148.113
192.168.8.0/24 dev phy1-sta0 proto kernel scope link src 192.168.8.118
192.168.55.0/24 dev br-lan proto kernel scope link src 192.168.55.1

Agradecería cualquier sugerencia o solución para el objetivo mencionado, soy un novato en enrutamiento e iptables.

Por cierto no se como hacer las configuraciones requeridas como por ejemploif_tun0_up.shyif_tun0_down.shautomatizado para crear y borrar las rutas automáticamente en el archivo client.ovpn.

Ser capaz de hacer ungama de dispositivos LAN(br-lan)excepto el enrutadortener su tráfico de Internet del proveedor de VPN.

Asegurar y bloquearimpedir que los usuarios de LAN accedan ainseguroInternet. Automatizaciónla tarea de crear y eliminar elrutas y reglas de iptablescon aperturayclausurala interfaz tun0.

Respuesta1

No es una respuesta completa, pero podría orientarte. En client.ovpn, especificaría a qué red desea pasar a través de vpn, con la siguiente declaración en client.ovpn. Por ejemplo:

route 10.0.0.0 255.255.255.0 vpn_gateway

Dado que está utilizando un proveedor comercial, los dispositivos tun0 obtienen una dirección IP de su grupo, por lo que no recomendaría hacer que los dispositivos LAN sean accesibles. La mayoría de las veces es una IP protegida por firewall, sin puertos abiertos para los servicios que desea. Es un cliente vpn. Si desea que su LAN sea accesible a través de una VPN, necesita una VPN de sitio a sitio con su propio servidor VPN.

información relacionada