296 - Mi configuración de WireGuard
Sobre mi configuración de Wireguard, tanto en el servidor como en cada uno de los dispositivos que tengo conectados a esta red privada virtual
Si hay una herramienta que a nivel de redes a cambiado significativamente mi forma de trabajar, esta es sin lugar a dudas WireGuard. Esto de poder conectar cualquier dispositivo de forma completamente transparente, como si estuviera en la misma red, es algo que me resulta espectacular. Y me refiero como si estuviera en la misma red desde el punto de vista de red física. Evidentemente están en la misma red, aunque sea una red virtual, mejor dicho, una red privada virtual. Por esta razón, el episodio del podcast de hoy está dedicado a WireGuard, y en concreto a hablarte sobre mi configuración de WireGuard.
Lo cierto, es que si bien durante algunos años he estado utilizando OpenVPN, eso si, de forma esporádica, no ha sido hasta la llegada de WireGuard, cunando el uso de mi propia VPN se ha convertido en un hecho algo continuo.
Mi configuración de WireGuard
Antecedentes
El hecho de utilizar actualmente, de forma habitual WireGuard, tiene dos motivos. Por un lado, está el hecho de que hace un año o algo mas, cambié de proveedor de internet en casa. Actualmente vivo detrás de un CGNAT, con lo que cuando quiero acceder desde el exterior a casa la forma más cómoda, práctica, sencilla y segura, es sin lugar a dudas un VPN. Y si puede ser tu propio VPN mejor que mejor.
Por otro lado, el hecho de decantarme por WireGuard ha sido doble. Por un lado, por la facilidad de instalación. Mientras que por el otro lado, está la rapidez. Te tengo que confesar que en ocasiones, no estoy seguro si estoy utilizando el VPN o no lo estoy utilizando.
Mis usos
Actualmente le estoy dando dos usos fundamentales al VPN. Por un lado, cuando estoy fuera de casa para conectarme a internet. De forma que todo el tráfico pasa por el VPN, y el proveedor no sabe donde me estoy conectado. Bueno, realmente piensa que siempre me estoy conectando a mi propio VPS.
Por otro lado, tal y como te he adelantado anteriormente, el otro uso que le doy, es para conectarme a los dispositivos que tengo en casa. Básicamente el NAS y las múltiples Raspberry.
Mi configuración
El servidor
Conforme te he indicado, actualmente el servidor de WireGuard, lo tengo alojado en mi VPS, con lo que si paso todo el tráfico por WireGuard, es como si saliera a través del VPS. Esto es realmente simpático, porque los anuncios que se muestran corresponden con el sitio donde está alojado el VPS y no con mi ubicación real. Esto, evidentemente sirve para que todo el tráfico vaya cifrado, pero tus conexiones desde el lado del VPS son transparentes.
Así la configuración del servidor es similar a lo que te muestro a continuación,
[Interface]
Address = 10.200.200.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 12345
PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AllowedIPs = 10.200.200.5/32
[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AllowedIPs = 10.200.200.10/32
[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AllowedIPs = 10.200.200.15/32
...
He puesto ...
por no indicarte todos los dispositivos. Por otro lado y como ya te imaginas, la PrivateKey
y cada una de las PublicKey
, son distintas, pero ni iba a ponerlas aquí, ni tenía sentido inventarme tantas… Lo cierto es que mi imaginación no da para tanto… Mas bien mi pereza, mas que mi imaginación.
Por otro lado el puerto de escucha, que aquí figura como 12345
, lo tendrás que configurar al puerto que mejor se adapte a tus necesidades. Y sobre todo, no olvides abrir el puerto en el firewall para no volverte loco, como a mi me ha sucedido en mas de una ocasión.
El ordenador de viaje
En el ordenador que llevo de viaje utilizo dos configuraciones. La primera de ellas, es solo para conectarme a los dispositivos que están en la propia red, y es similar a la que te muestro a continuación,
[Interface]
Address = 10.200.200.5/24
PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Peer]
Endpoint = AA.BB.CC.DD:12345
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#AllowedIPs = 10.200.200.1/24
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 10
Aquí tienes que modificar el Endpoint
a la IP y puerto el que has configurado anteriormente, que en el caso que he puesto es el 12345
, pero de nuevo tu lo tienes que configurar al que tu consideres. De nuevo recuerda abrir el puerto en el firewall, para no encontrarte buscando cual es el problema de forma tonta.
En cuanto a la PrivateKey
esta es la del ordenador de viaje, mientras que la PublicKey
se corresponde con la clave privada del servidor, que en mi caso es el VPS.
Verás que tengo una línea comentada. Esto es para el caso de quiera cifrar todo el tráfico que sale del ordenador. En el caso de que solo quiera utilizar WireGuard para conectarme a los dispositivos de la red, quito el #
de la anterior, y se lo pongo a la siguiente.
Si, la verdad es que no está muy bien hecho de esta manera. Lo suyo es que hubiera creado dos archivos de configuración wg0
y wg1
uno con una configuración y otro con la otra… Pero que quieres que te diga. Me ha podido la pereza.
Las Raspberry
En el caso de las Raspberry y demás dispositivos la configuración es mucho mas sencilla, puesto que solo utilizo WireGuard para conectar los dispositivos entre si, mientras que para el resto de comunicación utilizo la interfaz habitual. Así, la configuración, tiene un aspecto, como el que te muestro a continuación,
[Interface]
Address = 10.200.200.10/24
PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Peer]
Endpoint = AA.BB.CC.DD:12345
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AllowedIPs = 10.200.200.1/24
PersistentKeepalive = 10
Un detalle es el PersistentKeepalive = 10
, esto es sobre todo por el asunto del dichos CGNAT, en otro caso no sería necesario.
Un par de scripts
Por último, en el episodio 134, titulado Bienvenida WireGuard. Adiós OpenVPN, indiqué algunos scripts tanto para la instalación de WireGuard, como la configuración que seguro te serán de utilidad.
Conclusión
Mas allá de la configuración de WireGuard, lo mas importante para mi, es sobre todo la facilidad de uso y la flexibilidad que me han dado, permitiéndome en todo momento, conectarme a mis dispositivos como si en casa me encontrara.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Maginifico articulo, pero tengo una duda/curiosidad.
Alguien sabe si es posible configurar WireGuard para que actúe como servidor y a la vez sea cliente de otros servidores?
En caso afirmativo, ¿podría pasarme un config a modo de ejemplo?