User Tools

Site Tools


docu:csheet:net:relays:vpn_wireguard_vps

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
docu:csheet:net:relays:vpn_wireguard_vps [2023/06/30 00:52] admindocu:csheet:net:relays:vpn_wireguard_vps [2023/06/30 01:02] (current) admin
Line 4: Line 4:
 En este tutorial aprenderás a conectar tu red local (principalmente, un PC) con una computadora en otro lugar (en este caso un VPS o algún servidor Cloud). Así, podremos enrutar tráfico de ENTRADA y SALIDA a tu red local desde internet, y preservar las IPs originales de la conexión, teniendo el servidor VPN como firewall o gateway. En este tutorial aprenderás a conectar tu red local (principalmente, un PC) con una computadora en otro lugar (en este caso un VPS o algún servidor Cloud). Así, podremos enrutar tráfico de ENTRADA y SALIDA a tu red local desde internet, y preservar las IPs originales de la conexión, teniendo el servidor VPN como firewall o gateway.
  
-\\ 
 Usaremos "VPS" para referirnos a la computadora con IP pública y que actuará como servidor VPN Wireguard, y "localpc" como computadora de nuestra infraestructura local, que solo tiene conexión a internet (incluso con CG NAT) y que se conectará como cliente a nuestro servidor "VPS" usando también la VPN Wireguard. Usaremos "VPS" para referirnos a la computadora con IP pública y que actuará como servidor VPN Wireguard, y "localpc" como computadora de nuestra infraestructura local, que solo tiene conexión a internet (incluso con CG NAT) y que se conectará como cliente a nuestro servidor "VPS" usando también la VPN Wireguard.
  
Line 29: Line 28:
 </code> </code>
  
-Ahora configuraremos el Wireguard en el VPS. Editaremos el archivo **/etc/wireguard/<yoursrv>.conf**. Ten en cuenta que <yoursrv> va sin "<" y ">" y será el nombre de la interfaz de red que genere Wireguard.+Ahora configuraremos el Wireguard en el VPS. Editaremos el archivo **/etc/wireguard/<yoursrv>.conf**. Ten en cuenta que <yoursrv> va sin "<" y ">""yoursrv" será el nombre de la interfaz de red que genere Wireguard. En todo el tutorial usaré "<>" para enmarcar valores variables.
 <code> <code>
 [Interface] [Interface]
Line 46: Line 45:
 PostUp = ifconfig yoursrv broadcast 10.5.0.255 up PostUp = ifconfig yoursrv broadcast 10.5.0.255 up
  
-# Add the route needed for VPN clients. (Maybe not needed, as i think wireguard already knows how to route to this clients either). 
 # Añade la ruta que especifica por donde llegar a los clientes VPN. (Quizás no sea necesario tampoco, porque creo que Wireguard mediante el kernel es capaz de enrutar el tráfico igualmente sin que aparezca en las rutas del sistema cuando escribes "ip route" por ejemplo). # Añade la ruta que especifica por donde llegar a los clientes VPN. (Quizás no sea necesario tampoco, porque creo que Wireguard mediante el kernel es capaz de enrutar el tráfico igualmente sin que aparezca en las rutas del sistema cuando escribes "ip route" por ejemplo).
 PostUp = ip route add 10.5.0.0/24       dev yoursrv PostUp = ip route add 10.5.0.0/24       dev yoursrv
Line 78: Line 76:
  
 [Peer] [Peer]
-# Which IPs are allowed to pass on the interface 
 # Qué IPs son permitidas para pasar por la interfaz (también se usa para enrutar todo el tráfico de salida por esta interfaz). Es extraño Wireguard, no me preguntes como funciona, no lo sé xD # Qué IPs son permitidas para pasar por la interfaz (también se usa para enrutar todo el tráfico de salida por esta interfaz). Es extraño Wireguard, no me preguntes como funciona, no lo sé xD
 AllowedIPs = 10.5.0.0/24, 0.0.0.0/0 AllowedIPs = 10.5.0.0/24, 0.0.0.0/0
 PublicKey = <copia el contenido de "public.key" del VPS> PublicKey = <copia el contenido de "public.key" del VPS>
-EndPoint = <IP_of_the_VPS>:443 # recuerda: 443/udp, y debe ser alcanzable por tu localpc+EndPoint = <IP_publica_VPS>:443 # recuerda: 443/udp, y debe ser alcanzable por tu localpc
 PersistentKeepalive = 30 PersistentKeepalive = 30
 </code> </code>
Line 103: Line 100:
 wg-quick up whatever # la forma manual (tienes que programar autoejecución en el startup) wg-quick up whatever # la forma manual (tienes que programar autoejecución en el startup)
 systemctl enable wg-quick@whatever; systemctl start wg-quick@whatever # la forma systemd (ya se autoejecuta en el startup) systemctl enable wg-quick@whatever; systemctl start wg-quick@whatever # la forma systemd (ya se autoejecuta en el startup)
- 
-# Fijate que hemos usado el nombre de interfaz "yoursrv" en el VPS y "whatever" en el localpc para diferenciar y demostrar que podemos usar nombres distintos para las interfaces y no afectarán para nada en su funcionamiento, aunque si usas los mismos nombres funcionará igualmente. Es más, quizás sea más recomendado, para no liarse, pero esto es para que se entienda. 
 </code> </code>
 +Fijate que hemos usado el nombre de interfaz "yoursrv" en el VPS y "whatever" en el localpc para diferenciar y demostrar que podemos usar nombres distintos para las interfaces y no afectarán para nada en su funcionamiento, aunque si usas los mismos nombres funcionará igualmente. Es más, quizás sea más recomendado, para no liarse, pero esto es para que se entienda.
  
 \\ \\
Line 119: Line 115:
 Y finalmente, para terminar, necesitamos enrutar tráfico para que funcione. Vamos a hacer un ejemplo con enrutamiento de HTTP (que es lo más común) pero esto se usaría igual para cada servicio que queramos enrutar a nuestra IP interna. Para ello, ejecutaremos estos comandos de iptables (debemos tenerlo instalado): Y finalmente, para terminar, necesitamos enrutar tráfico para que funcione. Vamos a hacer un ejemplo con enrutamiento de HTTP (que es lo más común) pero esto se usaría igual para cada servicio que queramos enrutar a nuestra IP interna. Para ello, ejecutaremos estos comandos de iptables (debemos tenerlo instalado):
 <code bash> <code bash>
-# ejecutar en "VPS": enruta el tráfico de entrada a la IP pública del VPS, en los puertos TCP 80 y 443, al destino 10.5.0.2 (que en este ejemplo sería la IP de localpc en la VPN).+# ejecutar en "VPS": enruta el tráfico de ENTRADA a la IP pública del VPS, en los puertos TCP 80 y 443, al destino 10.5.0.2 (que en este ejemplo sería la IP de localpc en la VPN).
 iptables -t nat -A PREROUTING -d <ip_public_del_VPS> -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.5.0.2 iptables -t nat -A PREROUTING -d <ip_public_del_VPS> -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.5.0.2
  
-# ejecutar en "VPS": enmascara (cambia la IP) del tráfico en la SALIDA cuando el tráfico (bien establecido o nuevo) sale de localpc a internet por la VPN, ya que si salimos con una IP interna (de la VPN), el siguiente gateway no sabría como enrutar de vuelta, y menos todavía la IP de destino final (que es otra IP en internet).+# ejecutar en "VPS": enmascara (cambia la IP) del tráfico en la SALIDA cuando el tráfico (establecido o nuevo) sale de localpc a internet por la VPN, ya que si salimos con una IP interna (de la VPN), el siguiente gateway no sabría como enrutar de vuelta, y menos todavía la IP de destino final (que es otra IP en internet).
 iptables -t nat -A POSTROUTING -s 10.5.0.2/32 -o <nombre_interfaz_VPS_ip_publica> -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.5.0.2/32 -o <nombre_interfaz_VPS_ip_publica> -j MASQUERADE
  
Line 129: Line 125:
 iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
  
-# Opcionalmente, si tenemos una política DROP en nuestro filter de iptables "FORWARD", debes añadir esto:+ejecutar en "VPS": Opcionalmente, SOLO si tenemos una política DROP en nuestro filter de iptables "FORWARD", debes añadir esto:
 iptables -A FORWARD -i <nombre_interfaz_VPS_ip_publica> -d 10.5.0.2/32 -p tcp -m multiport --dports 80,443 -j ACCEPT iptables -A FORWARD -i <nombre_interfaz_VPS_ip_publica> -d 10.5.0.2/32 -p tcp -m multiport --dports 80,443 -j ACCEPT
 iptables -A FORWARD -i <yoursrv> -o <nombre_interfaz_VPS_ip_publica> -j ACCEPT iptables -A FORWARD -i <yoursrv> -o <nombre_interfaz_VPS_ip_publica> -j ACCEPT
docu/csheet/net/relays/vpn_wireguard_vps.1688086342.txt.gz · Last modified: 2023/06/30 00:52 by admin