Compartir una conexión VPN a través de Ethernet

Compartir una conexión VPN a través de Ethernet

Bastante nuevo en Linux, ejecuta Ubuntu 18.04 LTS.

Estoy buscando replicar la funcionalidad que puedo hacer en el hardware y el sistema operativo de macOS: compartir la conexión VPN a nivel del sistema operativo con una interfaz de hardware.

En este caso particular, una computadora portátil se conecta a una red wifi no segura, establece un túnel VPN, la VPN luego se comparte con una interfaz Ethernet, a la que conecto un enrutador DD-WRT (doble nat, obviamente) que proporciona wifi/ethernet seguro a los clientes. . La razón para utilizar una computadora portátil con un sistema operativo real para la puerta de enlace es manejar portales cautivos a través del navegador (como lo hacen muchos hoteles).

Esta configuración hace imposible que el tráfico de los clientes se filtre a través de la puerta de enlace wifi, ya que solo se comparte la conexión VPN. Si la VPN cae, los clientes no tienen ninguna conectividad. Bastante fácil de hacer en macos con l2tp.

¿Existe una forma razonablemente sencilla de hacer esto desde la GUI de gnome? Me tomó horas intentar hacer funcionar solo el túnel L2TP+IPsec y finalmente me di por vencido. Estoy usando OpenVPN ahora. Pero no puedo encontrar una forma sencilla de compartir la conexión OpenVPN específicamente, solo el wifi, que se volvería inseguro si el túnel alguna vez se cayera, exponiendo el tráfico del cliente.

¡Gracias!

Respuesta1

Con algo de prueba y error y la ayuda de un foro diferente, logré que esto funcionara. Tenga en cuenta que cambié al protocolo OpenVPN debido a un mejor soporte en Linux y un mejor rendimiento general.

La única parte que se puede hacer con la GUI es configurar la conexión OpenVPN y la red del cliente en la segunda interfaz (esto se hace en el administrador de red). En mi caso, ens9 es una interfaz Ethernet secundaria que configuré con IP estática en una subred local única. Los dispositivos cliente estaban preconfigurados para usar esta IP como puerta de enlace.

Detalles completos y detallados de mi solución aquí:https://www.linuxquestions.org/questions/linux-networking-3/share-vpn-with-ethernet-interface-4175655027/

El interruptor de interrupción de VPN para el dispositivo Gateway es el siguiente:

Realice estos cambios en /etc/sysctl.conf

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
#enable packet forwarding
net.ipv4.ip_forward=1

En el archivo de configuración predeterminado de UFW (/etc/default/ufw), realice este cambio:

DEFAULT_FORWARD_POLICY=“ACCEPT”

A través de la línea de comando, edite las reglas ufw de la siguiente manera:

sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out on wlp2s0 to XXX.YYY.ZZZ.AAA port 1194 proto udp

En la última línea, use el nombre de la interfaz que está usando para la conexión WAN (use el comando ifconfig para ver todas las interfaces) y use la dirección IP y el número de puerto de su servidor OpenVPN; esto se puede obtener desde ovpn.config archivo suministrado.

Esto le proporciona un interruptor de interrupción VPN que funciona en el dispositivo de puerta de enlace. El último paso es enmascarar la conexión VPN en la interfaz secundaria (en mi caso, el dispositivo Ethernet llamado ens9).

No utilice el método GUI de nm-connection-editor para permitir el uso compartido, ya que omitirá el interruptor de apagado. En su lugar, edite el archivo /etc/ufw/before.rules agregando una sección nat justo encima del encabezado *filter:

### Start OpenVPN Share rules
### NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.10.0/24 -o tun0 -j MASQUERADE   
COMMIT

Donde 192.168.10.0/24 representa el rango de direcciones IP de su red de cliente. En mi caso, lo definí estáticamente dentro de ese rango.

Y eso fue prácticamente todo. Esperaba necesitar una regla ufw como esta:

sudo ufw allow out on ens9 to 192.168.10.0/24

Pero funciona bien sin él.

información relacionada