Is there a way to have a single computer (say a Raspberry Pi) expose the entire home network to the OpenVPN server?
Sim, essa é uma função básica de um roteador.
-
Tanto o servidor quanto o Raspberry precisarão de roteamento IP (encaminhamento) ativado. Por exemplo, no Linux, seriam os
net.ipv4.conf.all.forwarding
enet.ipv6.conf.all.forwarding
sysctls. -
O servidor VPN precisa de uma rota para a sub-rede da LAN via o endereço IP do Raspberry Pi. (Especificamente, através do seu endereço VPN, não da LAN, uma vez que a rota é da perspectiva do servidor VPN.)
Observação: quando você está usando o OpenVPN no modo padrão "tun", isso realmente precisa ser dividido em duas configurações:
1. uma rota de kernel para a sub-rede inicial via
tun0
(no gateway),
2. e uma opção OpenVPN iroute para a mesma sub-rede via IP do Raspberry Pi como o gateway.No modo "tap" (emulação de Ethernet), uma única rota de kernel seria tudo o que você precisa.
-
O roteador principal da sua LAN (por exemplo, o "roteador / modem" emitido pelo ISP) precisa de uma rota na direção oposta - para a sub-rede VPN através da LAN do Raspberry Pi Endereço IP.
Existem alternativas caso você não possa configurar isso, mas elas são um tópico de um tópico separado.
-
O Raspberry Pi já possui todas as rotas necessárias (já que está diretamente conectado à LAN e à VPN).
-
Finalmente, seu servidor VPN precisa empurrar uma rota para a sub-rede LAN para todos os outros clientes (como seu telefone), para que eles saibam que precisam para percorrer a VPN para alcançá-lo.
(Isso é opcional se você já estiver usando a rota "padrão", mas eu recomendaria mesmo assim.)