Compartilhe uma conexão VPN pela Ethernet

Compartilhe uma conexão VPN pela Ethernet

Bastante novo no Linux, executando o Ubuntu 18.04 LTS.

Estou procurando replicar a funcionalidade que posso fazer no hardware e sistema operacional macOS: compartilhar a conexão VPN no nível do sistema operacional com uma interface de hardware.

Neste caso específico, um laptop se conecta a um wifi não seguro, estabelece um túnel VPN, a VPN é então compartilhada com uma interface Ethernet, na qual eu conecto um roteador DD-WRT (double-nat, obviamente) que fornece wifi/ethernet seguro para clientes . A razão para usar um laptop com um sistema operacional real como gateway é lidar com portais cativos via navegador (como fazem muitos hotéis).

Esta configuração impossibilita o vazamento do tráfego dos clientes pelo gateway wifi, uma vez que apenas a conexão VPN é compartilhada. Se a VPN cair, os clientes não terão nenhuma conectividade. Fácil de fazer no macOS com l2tp.

Existe uma maneira razoavelmente simples de fazer isso na GUI do gnome? Levei horas tentando fazer com que apenas o túnel L2TP + IPsec funcionasse e finalmente desisti. Estou usando o OpenVPN agora. Mas não consigo encontrar uma maneira simples de compartilhar especificamente a conexão OpenVPN, apenas o wifi, que ficaria inseguro se o túnel caísse, expondo o tráfego do cliente.

Obrigado!

Responder1

Com algumas tentativas e erros e ajuda de um fórum diferente, consegui fazer isso funcionar. Observe que mudei para o protocolo OpenVPN devido ao melhor suporte no Linux e ao melhor rendimento geral.

A única parte que pode ser feita com a GUI é a configuração da conexão OpenVPN e da rede do cliente na segunda interface (isso é feito no gerenciador de rede). No meu caso, ens9 é uma interface Ethernet secundária que configurei com IP estático em uma sub-rede local exclusiva. Os dispositivos clientes foram pré-configurados para usar este IP como gateway.

Detalhes detalhados completos da minha solução aqui:https://www.linuxquestions.org/questions/linux-networking-3/share-vpn-with-ethernet-interface-4175655027/

O kill switch VPN para o próprio dispositivo Gateway é assim:

Faça essas alterações em /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

No arquivo de configuração padrão do UFW (/etc/default/ufw), faça esta alteração:

DEFAULT_FORWARD_POLICY=“ACCEPT”

Através da linha de comando, edite as regras do ufw da seguinte forma:

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

Na última linha, use o nome da interface que você está usando para a conexão WAN (use o comando ifconfig para ver todas as interfaces) e use o endereço IP e o número da porta do seu servidor OpenVPN – isso pode ser obtido no arquivo ovpn.config arquivo fornecido.

Isso proporciona a você um kill switch VPN funcional no dispositivo de gateway. A última etapa é mascarar a conexão VPN na interface secundária (no meu caso, o dispositivo Ethernet chamado ens9).

Não use o método GUI do nm-connection-editor para ativar o compartilhamento, pois isso ignorará o kill switch. Em vez disso, edite o arquivo /etc/ufw/before.rules adicionando uma seção nat logo acima do cabeçalho *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

Onde 192.168.10.0/24 representa o intervalo de endereços IP da rede do seu cliente. No meu caso, defini-o estaticamente dentro desse intervalo.

E basicamente foi isso. Eu esperava precisar de uma regra ufw como esta:

sudo ufw allow out on ens9 to 192.168.10.0/24

Mas funciona muito bem sem ele.

informação relacionada