Konfigurasi FCOS untuk menggunakan WireGuard
Pendahuluan
WireGuard adalah VPN inovatif yang berjalan di dalam Kernel Linux dan menggunakan kriptografi terkini. Tujuannya adalah untuk menjadi lebih cepat, lebih sederhana, lebih ringan, dan lebih berguna daripada IPSec, sambil menghindari masalah yang rumit. WireGuard bertujuan untuk menjadi jauh lebih performan daripada OpenVPN. WireGuard dirancang sebagai VPN serbaguna yang dapat berjalan di antarmuka tertanam maupun superkomputer, cocok untuk berbagai situasi. WireGuard berjalan di atas protokol UDP.
FCOS mendukung WireGuard secara penuh sejak awal. Panduan ini akan menunjukkan cara mengatur koneksi tunggal antara server FCOS dan satu komputer klien. Panduan ini mencakup konfigurasi dasar klien, tetapi tidak mencakup proses instalasi WireGuard pada klien Anda.
Generate Kunci
Anda perlu menghasilkan beberapa kunci untuk mengonfigurasi WireGuard. Untuk panduan ini, kunci-kunci tersebut harus dihasilkan terlebih dahulu di workstation Anda. Pertama, mari kita buat kunci WireGuard FCOS:
$ umask 077
$ wg genkey | tee privatekey | wg pubkey > publickey
Kunci-kunci ini akan disebut sebagai fcos_public_key dan fcos_private_key mulai dari sekarang dalam panduan ini.
Sekarang mari kita generate kunci klien:
$ umask 077
$ wg genkey | tee privatekey | wg pubkey > publickey
Kunci-kunci ini akan disebut sebagai client_one_public_key dan client_one_private_key mulai dari sini dalam panduan ini.
Sekarang buat PresharedKey:
$ wg genpsk > fcos_client_one_psk
PresharedKey akan disebut sebagai fcos_client_one_psk mulai dari sini dalam panduan ini.
Perintah wg genpsk menghasilkan PresharedKey yang hanya dapat digunakan sekali per pasangan peer. Setiap peer yang Anda tambahkan ke server FCOS perlu menghasilkan PresharedKey yang unik.
 | 
Konfigurasikan WireGuard pada FCOS
Anda sekarang dapat mengonfigurasi pengaturan Ignition Anda untuk membuat berkas konfigurasi wg0:
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.0/24,fdc9:3c6b:21c7:e6bd::/64
systemd:
  units:
    - name: wg-quick@wg0.service
      enabled: true   
Boot FCOS dan masuk. Saat Anda menjalankan sudo wg show, Anda seharusnya melihat ini:
[core@wireguard-demo ~]$ sudo wg show
interface: wg0
  public key: <fcos_public_key>
  private key: (hidden)
  listening port: 51820
peer: <client_one_public_key>
  preshared key: (hidden)
  endpoint: <Client IP Address>:51821
  allowed ips: 192.168.71.0/24, fdc9:3c6b:21c7:e6bd::/64
[root@wireguard-demo ~]# ip a s 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
| <Client IP address> di atas adalah alamat IP atau FQDN dari komputer Klien. | 
Konfigurasikan WireGuard pada klien
Anda sekarang perlu mengonfigurasi WireGuard pada komputer klien Anda dengan konfigurasi berikut:
[Interface]
Address = 192.168.71.2/24,fdc9:3c6b:21c7:e6bd::2/64
PrivateKey = <client_one_private_key>
ListenPort = 51821
[Peer]
PublicKey = <fcos_public_key>
PresharedKey = <fcos_client_one_psk>
Endpoint = <FCOS IP address>:51820
AllowedIPs = 192.168.71.0/24,fdc9:3c6b:21c7:e6bd::/64
| <FCOS IP address> adalah alamat IP atau FQDN dari server FCOS. | 
Tulis konfigurasi di atas ke /etc/wireguard/wg0.conf dan jalankan perintah chmod 0600 /etc/wireguard/wg0.conf pada klien Anda. Jalankan perintah sudo systemctl start wg-quick@wg0.service, lalu periksa konfigurasi Anda:
[root@wireguard-client ~]# 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
[root@wireguard-client ~]# ip a s 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
Uji koneksi WireGuard
Anda sekarang dapat melakukan ping ke alamat IP WireGuard server FCOS:
[root@wireguard-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
[root@wireguard-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
Ketika Anda menjalankan perintah sudo wg show di klien Anda, Anda seharusnya melihat sesi handshake terbaru dan bagian transfer dengan data yang dikirim dan diterima:
[root@wireguard-client ~]# wg show
interface: wg0
  public key: <client_one_public_key>
  private key: (hidden)
  listening port: 51821
peer: <fcos_public_key>
  preshared key: (hidden)
  endpoint: <Client IP address>:51820
  allowed ips: 192.168.71.0/24, fdc9:3c6b:21c7:e6bd::/64
  latest handshake: 9 seconds ago
  transfer: 22.02 KiB received, 22.28 KiB sent
Rutekan semua lalu lintas melalui WireGuard
Jika Anda berencana untuk meneruskan semua lalu lintas klien Anda melalui instance FCOS, Anda perlu mengaktifkan IP Forwarding dan mengatur beberapa direktif PostUp dan 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   
| FCOS menggunakan nama antarmuka yang dapat diprediksi oleh default. Harap pastikan untuk menggunakan nama antarmuka yang benar untuk perangkat keras Anda dalam perintah PostUp dan PostDown di atas! | 
dan atur AllowedIPs = 0.0.0.0/0,::/0 di /etc/wireguard/wg0.conf pada konfigurasi klien untuk mengarahkan semua lalu lintas IPv4 dan IPv6 pada komputer klien melalui antarmuka WireGuard:
[Interface] Address = 192.168.71.1/24,fdc9:3c6b:21c7:e6bd::2/64 PrivateKey = <client_one_private_key> ListenPort = 51821 [Peer] PublicKey = <fcos_public_key> PresharedKey = <fcos_client_one_psk> Endpoint = <FCOS IP Address>:51820 AllowedIPs = 0.0.0.0/0,::/0
Want to help? Learn how to contribute to Fedora Docs ›