Configurar WireGuard
Desde wireguard.com:
WireGuard es un VPN de Novel que ejecuta dentro el Kernel Linux y utiliza cifrado en el estado-del-arte. Su intención es ser más rápido, más simple, más ágil y más útil que IPSec, evitando al mismo tiempo el enorme dolor de cabeza. Intenta tener considerablemente más rendimiento que OpenVPN. WireGuard está diseñado como una VPN de propósito general para ejecutarse tanto en interfaces integradas como en supercomputadoras, adecuada para muchas circunstancias diferentes. Se ejecuta sobre UDP.
Quizás también le interese leer la Descripción conceptual, el Inicio rápido y el Documento técnico.
Fedora CoreOS tiene mantenimiento completo para WireGuard fuera de la caja. Esta página muestra como instalar una conexión simple entre un servidor Fedora CoreOS y un equipo de cliente. Va acerca de la configuración básica de cliente, pero no cubre instalar con WireGuard en su cliente.
Hay dos opciones para configurar WireGuard en Fedora CoreOS:
-
Importe la configuración de WireGuard en NetworkManager
-
Utilizar
wg-quick
Generar Claves
Necesitará generar claves para configurar WireGuard. Puede generar las claves en su estación de trabajo o ejecutando un sistema de Fedora CoreOS.
Primero, déjenos crear las llaves WireGuard para el sistema de Fedora CoreOS:
umask 077
wg genkey | tee fcos_private_key | wg pubkey > fcos_public_key
Ahora generaremos las claves WireGuard para el cliente:
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key
Puede general opcionalmente una clave pre-compartida para incrementar la seguridad:
wg genpsk > fcos_client_psk
|
Generaría una clave pre-compartida por cada pareja de compañero. |
Configurar WireGuard sobre Fedora CoreOS
Ahora puedes modificar su config de Butane para crear el archivo wg0 de configuración:
variant: fcos
version: 1.6.0
storage:
files:
- path: /etc/wireguard/wg0.conf
mode: 0600
contents:
inline: |
[Interface]
Address = 192.168.71.1/24,fdc9:3c6b:21c7:e6bd::1/64
PrivateKey =
ListenPort = 51820
[Peer]
PublicKey =
PresharedKey =
AllowedIPs = 192.168.71.2/32,fdc9:3c6b:21c7:e6bd::2/128
Utilización de NetworkManager
Si desea utilizar el mantenimiento en NetworkManager, puede importar la configuración de WireGuard con una unidad de un disparador:
systemd:
units:
- name: import-wireguard-config.service
enabled: true
contents: |
[Unit]
ConditionPathExists=!/etc/NetworkManager/system-connections/wg0.nmconnection
Description=Importar la configuración de wireguard a NetworkManager
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=nmcli connection import type wireguard file /etc/wireguard/wg0.conf
[Install]
WantedBy=multi-user.target
|
NetworkManager con directivas ignGre |
|
Si necesita realizar más cambios para actualizar la configuración de WireGuard, borre la configuración y re-impórtela desde el archivo de configuración actualizada. Re-importar configuración actualizada de WireGuard
|
Utilizar wg-quick
Si desea utilizar wg-quick en lugar del mantenimiento en NetworkManager, puede añadir lo siguiente en su config de Butane:
systemd:
units:
- name: wg-quick@wg0.service
enabled: true
|
Si necesita realizar más cambios para la configuración de WireGuard, recargue el servicio con:
|
Verificar la configuración en el sistema de Fedora CoreOS
Arranque Fedora CoreOS y acceda. Cuando ejecute sudo wg show vería esto:
[core@server ~]$ sudo wg show
interface: wg0
public key: <fcos_public_key>
private key: (hidden)
listening port: 51820
aparece: <una_clave_pública_cliente>
clave preshared (oculta)
extremo: <Dirección IP Cliente>:51821
allowed ips: 192.168.71.0/24, fdc9:3c6b:21c7:e6bd::/64
[core@server ~]$ sudo ip addr show wg0
12: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 192.168.71.1/24 scope global wg0
valid_lft forever preferred_lft forever
inet6 fdc9:3c6b:21c7:e6bd::1/64 scope global
valid_lft forever preferred_lft forever
|
La <dirección Ip cliente> anterior es el IP o FQDN del equipo Cliente. |
Configurar Wireguard en un cliente
Ahora tendrá que configurar WireGuard en su equipo cliente con la siguiente configuración:
[Interface]
Address = 192.168.71.2/24,fdc9:3c6b:21c7:e6bd::2/64
PrivateKey = <clave_privada_cliente>
ListenPort = 51821
[Peer]
PublicKey = <clave_pública_fcos>
PresharedKey = <fcos_client_psk>
Endpoint = <dirección IP FCOS>:51820
AllowedIPs = 192.168.71.0/24,fdc9:3c6b:21c7:e6bd::/64
|
La <dirección IP FCOS> es la IP o FQDN del servidor FCOS. |
Escriba la configuración anterior a /etc/wireguard/wg0.conf, establezca el modo de acceso al archivo de configuración y entonces importe la configuración en su cliente:
[core@client ~]$ sudo chmod 0600 /etc/wireguard/wg0.conf
[core@client ~]$ sudo nmcli con import type wireguard file /etc/wireguard/wg0.conf
A continuación compruebe su configuración:
[core@client ~] $ sudo wg show
interface: wg0
public key: <client_one_public_key>
private key: (hidden)
listening port: 51821
peer: <fcos_public_key>
preshared key: (hidden)
endpoint: <FCOS IP address>:51820
allowed ips: 192.168.71.0/24, fdc9:3c6b:21c7:e6bd::/64
[core@client ~]$ sudo ip addr show wg0
21: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 192.168.71.2/24 scope global wg0
valid_lft forever preferred_lft forever
inet6 fdc9:3c6b:21c7:e6bd::2/64 scope global
valid_lft forever preferred_lft forever
Probar la conexión de WireGuard
Ahora puede hacer ping a la dirección IP WireGuard del servidor de Fedora CoreOS:
[core@client ~]$ ping 192.168.71.1
PING 192.168.71.1 (192.168.71.1) 56(84) bytes of data.
64 bytes from 192.168.71.1: icmp_seq=1 ttl=64 time=0.439 ms
64 bytes from 192.168.71.1: icmp_seq=2 ttl=64 time=0.422 ms
64 bytes from 192.168.71.1: icmp_seq=3 ttl=64 time=0.383 ms
^C
--- 192.168.71.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2027ms
rtt min/avg/max/mdev = 0.383/0.414/0.439/0.023 ms
[core@client ~]$ ping6 fdc9:3c6b:21c7:e6bd::1
PING fdc9:3c6b:21c7:e6bd::1(fdc9:3c6b:21c7:e6bd::1) 56 data bytes
64 bytes from fdc9:3c6b:21c7:e6bd::1: icmp_seq=1 ttl=64 time=1.55 ms
64 bytes from fdc9:3c6b:21c7:e6bd::1: icmp_seq=2 ttl=64 time=0.454 ms
64 bytes from fdc9:3c6b:21c7:e6bd::1: icmp_seq=3 ttl=64 time=0.424 ms
64 bytes from fdc9:3c6b:21c7:e6bd::1: icmp_seq=4 ttl=64 time=0.424 ms
^C
--- fdc9:3c6b:21c7:e6bd::1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3054ms
rtt min/avg/max/mdev = 0.424/0.712/1.546/0.481 ms
Cuando ejecuta sudo wg show en su cliente, vería un protocolo de enlace reciente y una sección de transferencia con los enviados y recibidos:
[core@client ~] $ sudo wg show
interface: wg0
public key: <client_one_public_key>
private key: (hidden)
listening port: 51821
peer: <clave_pública_fcos>
preshared key: (oculta)
punto final: <Dirección IP cliente>:51820
ips concedidas: 192.168.71.0/24, fdc9:3c6b:21c7:e6bd::/64
última negociación: hace 9 segundos
transferencia: 22'02 KiB recibido, 22'28 KiB enviado
Enrutar todo el tráfico sobre WireGuard
Si planea reenviar todo el tráfico de su cliente a través de la instancia Fedora CoreOS, necesitará habilitar el Reenvío IP y establecer algunas directivas PostUp y PostDown:
variant: fcos
version: 1.6.0
storage:
files:
- path: /etc/sysctl.d/90-ipv4-ip-forward.conf
mode: 0644
contents:
inline: |
net.ipv4.ip_forward = 1
- path: /etc/sysctl.d/90-ipv6-ip-forwarding.conf
mode: 0644
contents:
inline: |
net.ipv6.conf.all.forwarding = 1
- path: /etc/wireguard/wg0.conf
mode: 0600
contents:
inline: |
[Interface]
Address = 192.168.71.1/24,fdc9:3c6b:21c7:e6bd::1/64
PrivateKey =
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE
[Peer]
PublicKey =
PresharedKey =
AllowedIPs = 192.168.71.0/24,fdc9:3c6b:21c7:e6bd::/64
systemd:
units:
- name: wg-quick@wg0.service
enabled: true
|
Fedora CoreOS utiliza nombres de interfaz predecibles a través del predeterminado. Asegúrese utilizar el nombre de interfaz correcto de su hardware en los comandos anteriores de PostUp y PostDown. |
Después establece AllowedIPs = 0.0.0.0/0,::/0 dentro de /etc/wireguard/wg0.conf dentro de la configuración cliente para enrutar todo el tráfico de IPv4 e IPv6 en el equipo cliente sobre la interfaz WireGuard:
[Interface] Address = 192.168.71.1/24,fdc9:3c6b:21c7:e6bd::2/64 PrivateKey = <client_private_key> ListenPort = 51821 [Peer] PublicKey = <fcos_public_key> PresharedKey = <fcos_client_psk> Endpoint = <Dirección IP de Fedora Core OS>:51820 AllowedIPs = 0.0.0.0/0,::/0
Want to help? Learn how to contribute to Fedora Docs ›