Projet

Général

Profil

ConfigWifiEvenement » Historique » Version 3

« Précédent - Version 3/27 (diff) - Suivant » - Version actuelle
Matthieu Herrb, 29/05/2023 18:33
nftables


Configuration d'un routeur pour un événement

Exemple du THSF 2023

Matériel

  1. 1 PC avec 2 interfaces réseau (ou alors faire avec des vlans sur un switch)
  2. 2 Bornes Unifi UAC-M-Pro de Tetaneutral.net
  3. 1 switch PoE (802.11af)
  4. câbles RJ45
  5. multiprise

Logiciel

  1. Ubuntu 20.04 sur le PC
  2. Unifi Controler 7
  3. Paquets : openssh-server emacs-nox nftables isc-dhcp-server unbound wireguard resolvconf radvd borgbackup iftop

Configuration

PC : 2 interfaces :

  • lan : enp0s31f6
  • wan : enp2s0

On fera un VPN wiregard vers tetaneutral sur l'interface wan, et sur le LAN on met un serveur DHCP pour IPv4, et un serveur radvd pour autoconf IPv6, ainsi que unbound pour le DNS et une config nftables pour faire le NAT vers l'IPv4 unique de la config wireguard.

A noter que l'IP wireguard se retrouve codée en dur à plusieurs endroits, pas cool mais bon.

Dans l'exemple THSF 2023:

  • IPv4 : 185.119.170.12 et on prend 10.23.0.0/24 pour le LAN
  • IPv6 : 2a03:7220:8087:c00::/56 ; on prend 2a03:7220:8087:c01::/64 pour le LAN

Config réseau : netplan

  • /etc/netplan/00-installer-config.yaml :
    network:
      ethernets:
        enp0s31f6:
          addresses:
          - 10.23.0.1/16
          - 2a03:7220:8087:c01::1/64
          nameservers:
            addresses: []
            search: []
        enp2s0:
          dhcp4: true
      version: 2
    

Config réseau : wireguard

On alloue d'abord un service wireguard dans le SI (ici avec l'IP 185.119.170.12)

  • /etc/wireguard/wg0.conf :

Cf la page VPN

[Interface]
Address = 185.119.170.12/32,2a03:7220:8087:c00::/56
DNS = 91.224.148.10,91.224.149.254
PrivateKey = <mettre ici la clé privée>

[Peer]
Publickey = DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=
AllowedIPs = 0.0.0.0/0,::/0
EndPoint = 89.234.156.116:51820
PersistentKeepalive = 25
  • Activier le service :
    # systemctl enable wg-quick@wg0.service
    # systemctl start wg-quick@wg0.service
    

nftables

On fait du NAT sur l'interface wan et sur wireguard + MSS Clamping pour TCP au MTU de l'interface wireguard.

  • /etc/nftables.conf
#!/usr/sbin/nft -f

table inet filter {
        chain input {
                        type filter hook input priority filter; policy accept;
        }

        chain forward {
                        type filter hook forward priority filter; policy accept;
                                        tcp flags syn tcp option maxseg size set rt mtu
        }

        chain output {
                        type filter hook output priority filter; policy accept;
        }
}

table ip nat {
      chain prerouting {
           type nat hook prerouting priority dstnat; policy accept;
      }

      chain postrouting {
           type nat hook postrouting priority srcnat; policy accept;
           oifname "wg0" masquerade
           oifname "enp2s0" masquerade
      }
}

Serveur DHCP

Serveur radvd

Unbound