IP estática para servidor local usando una VPN
Por el 16 de Agosto de 2023
Con esta configuración un servidor con IP dinámica podrá ofrecer servicios con la IP estática de un servidor remoto usando un VPN y NAT.
- Es mucho más económico que solicitar una IP fija al ISP.
- Permite la configuración de DNS reverso para la IP desde el proveedor.
- Evita que se muestre la IP pública de la red doméstica.
- Soporte IPv6 siempre y cuando elijas un proveedor adecuado.
Topología de red
- El servidor local está detrás de un NAT.
- El servidor remoto está en un centro de datos con IP estática 203.0.113.24.
- Ambos servidores están conectados en la red privada 172.16.0.0/12 mediante WireGuard.
Configuración de la VPN
Parto de la configuración VPN gateway en dominio de enrutado alternativo.
Configuración de Packet Filter en el servidor remoto
Las conexiones que reciba el servidor remoto a los puertos que configuremos, en este caso 80 y 443 para HTTP y HTTPS respectivamente, serán redirigidas al servidor local mediante la siguiente regla, siendo 172.16.1.1 la IP del servidor local en la red VPN:
server = "172.16.1.1"
pass in on egress proto tcp from any to any port { 80, 443 } \
rdr-to $server
Configuración de los servicios del servidor local
Los servicios del servidor local se deben configurar en el dominio de enrutado 1 de forma que tengan acceso a la VPN. Esto se hace con rcctl(8) o simplemente editando el archivo /etc/rc.conf.local:
local# rcctl enable httpd
local# rcctl set httpd rtable 1
local# cat /etc/rc.conf.local
httpd_flags=
httpd_rtable=1
Para conseguir certificados Let's Encrypt desde el servidor local se ejecuta acme-client(1) desde el dominio de enrutado que corresponde a la VPN:
local# route -T 1 exec acme-client -v example.com