Projet

Général

Profil

ConfigWifiEvenement » Historique » Version 4

Matthieu Herrb, 29/05/2023 18:36
dhcpd

1 1 Matthieu Herrb
h1. Configuration d'un routeur pour un événement
2 1 Matthieu Herrb
3 1 Matthieu Herrb
Exemple du THSF 2023
4 1 Matthieu Herrb
5 1 Matthieu Herrb
h2. Matériel 
6 1 Matthieu Herrb
7 1 Matthieu Herrb
# 1 PC avec 2 interfaces réseau (ou alors faire avec des vlans sur un switch)
8 1 Matthieu Herrb
# 2 Bornes Unifi UAC-M-Pro de Tetaneutral.net
9 1 Matthieu Herrb
# 1 switch PoE (802.11af)
10 1 Matthieu Herrb
# câbles RJ45
11 1 Matthieu Herrb
# multiprise
12 1 Matthieu Herrb
13 1 Matthieu Herrb
h2. Logiciel
14 1 Matthieu Herrb
15 1 Matthieu Herrb
# Ubuntu 20.04 sur le PC
16 1 Matthieu Herrb
# Unifi Controler 7 
17 1 Matthieu Herrb
# Paquets : @openssh-server emacs-nox  nftables isc-dhcp-server unbound wireguard resolvconf radvd borgbackup iftop@
18 1 Matthieu Herrb
19 1 Matthieu Herrb
h2. Configuration
20 1 Matthieu Herrb
21 1 Matthieu Herrb
PC : 2 interfaces : 
22 1 Matthieu Herrb
23 1 Matthieu Herrb
* lan : @enp0s31f6@
24 1 Matthieu Herrb
* wan : @enp2s0@
25 1 Matthieu Herrb
26 1 Matthieu Herrb
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.
27 1 Matthieu Herrb
28 1 Matthieu Herrb
A noter que l'IP wireguard se retrouve codée en dur à plusieurs endroits, pas cool mais bon.
29 1 Matthieu Herrb
30 1 Matthieu Herrb
Dans l'exemple THSF 2023:
31 1 Matthieu Herrb
32 1 Matthieu Herrb
* IPv4 : 185.119.170.12 et on prend 10.23.0.0/24 pour le LAN
33 1 Matthieu Herrb
* IPv6 : 2a03:7220:8087:c00::/56 ; on prend 2a03:7220:8087:c01::/64 pour le LAN
34 1 Matthieu Herrb
35 1 Matthieu Herrb
h3. Config réseau : netplan
36 1 Matthieu Herrb
37 1 Matthieu Herrb
* @/etc/netplan/00-installer-config.yaml@ :
38 1 Matthieu Herrb
<pre>
39 1 Matthieu Herrb
network:
40 1 Matthieu Herrb
  ethernets:
41 1 Matthieu Herrb
    enp0s31f6:
42 1 Matthieu Herrb
      addresses:
43 1 Matthieu Herrb
      - 10.23.0.1/16
44 1 Matthieu Herrb
      - 2a03:7220:8087:c01::1/64
45 1 Matthieu Herrb
      nameservers:
46 1 Matthieu Herrb
        addresses: []
47 1 Matthieu Herrb
        search: []
48 1 Matthieu Herrb
    enp2s0:
49 1 Matthieu Herrb
      dhcp4: true
50 1 Matthieu Herrb
  version: 2
51 1 Matthieu Herrb
</pre>
52 1 Matthieu Herrb
53 1 Matthieu Herrb
h3. Config réseau : wireguard
54 1 Matthieu Herrb
55 1 Matthieu Herrb
On alloue d'abord un service wireguard dans le SI (ici avec l'IP 185.119.170.12)
56 1 Matthieu Herrb
57 1 Matthieu Herrb
* @/etc/wireguard/wg0.conf@ :
58 1 Matthieu Herrb
59 1 Matthieu Herrb
Cf la page [[VPN]]
60 1 Matthieu Herrb
61 1 Matthieu Herrb
<pre>
62 1 Matthieu Herrb
[Interface]
63 1 Matthieu Herrb
Address = 185.119.170.12/32,2a03:7220:8087:c00::/56
64 1 Matthieu Herrb
DNS = 91.224.148.10,91.224.149.254
65 1 Matthieu Herrb
PrivateKey = <mettre ici la clé privée>
66 1 Matthieu Herrb
67 1 Matthieu Herrb
[Peer]
68 1 Matthieu Herrb
Publickey = DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=
69 1 Matthieu Herrb
AllowedIPs = 0.0.0.0/0,::/0
70 1 Matthieu Herrb
EndPoint = 89.234.156.116:51820
71 1 Matthieu Herrb
PersistentKeepalive = 25
72 1 Matthieu Herrb
</pre>
73 2 Matthieu Herrb
74 2 Matthieu Herrb
* Activier le service : 
75 2 Matthieu Herrb
<pre>
76 2 Matthieu Herrb
# systemctl enable wg-quick@wg0.service
77 2 Matthieu Herrb
# systemctl start wg-quick@wg0.service
78 2 Matthieu Herrb
</pre>
79 2 Matthieu Herrb
80 3 Matthieu Herrb
h3. nftables
81 3 Matthieu Herrb
82 3 Matthieu Herrb
On fait du NAT sur l'interface wan et sur wireguard + MSS Clamping pour TCP au MTU de l'interface wireguard. 
83 3 Matthieu Herrb
84 3 Matthieu Herrb
* @/etc/nftables.conf@
85 3 Matthieu Herrb
86 3 Matthieu Herrb
<pre>
87 3 Matthieu Herrb
#!/usr/sbin/nft -f
88 3 Matthieu Herrb
89 3 Matthieu Herrb
table inet filter {
90 3 Matthieu Herrb
        chain input {
91 3 Matthieu Herrb
                        type filter hook input priority filter; policy accept;
92 3 Matthieu Herrb
        }
93 3 Matthieu Herrb
94 3 Matthieu Herrb
        chain forward {
95 3 Matthieu Herrb
                        type filter hook forward priority filter; policy accept;
96 3 Matthieu Herrb
                                        tcp flags syn tcp option maxseg size set rt mtu
97 3 Matthieu Herrb
        }
98 3 Matthieu Herrb
99 3 Matthieu Herrb
        chain output {
100 3 Matthieu Herrb
                        type filter hook output priority filter; policy accept;
101 3 Matthieu Herrb
        }
102 3 Matthieu Herrb
}
103 3 Matthieu Herrb
104 3 Matthieu Herrb
table ip nat {
105 3 Matthieu Herrb
      chain prerouting {
106 3 Matthieu Herrb
           type nat hook prerouting priority dstnat; policy accept;
107 3 Matthieu Herrb
      }
108 3 Matthieu Herrb
109 3 Matthieu Herrb
      chain postrouting {
110 3 Matthieu Herrb
           type nat hook postrouting priority srcnat; policy accept;
111 3 Matthieu Herrb
           oifname "wg0" masquerade
112 3 Matthieu Herrb
           oifname "enp2s0" masquerade
113 3 Matthieu Herrb
      }
114 3 Matthieu Herrb
}
115 3 Matthieu Herrb
</pre>
116 3 Matthieu Herrb
117 1 Matthieu Herrb
h3. Serveur DHCP
118 4 Matthieu Herrb
119 4 Matthieu Herrb
* @/etc/dhcp/dhcpd.conf@ :
120 4 Matthieu Herrb
<pre>
121 4 Matthieu Herrb
option domain-name "tetaneutral.net";
122 4 Matthieu Herrb
option domain-name-servers 10.23.0.1;
123 4 Matthieu Herrb
124 4 Matthieu Herrb
default-lease-time 86400;
125 4 Matthieu Herrb
max-lease-time 172800;
126 4 Matthieu Herrb
127 4 Matthieu Herrb
ddns-update-style none;
128 4 Matthieu Herrb
authoritative;
129 4 Matthieu Herrb
log-facility local7;
130 4 Matthieu Herrb
131 4 Matthieu Herrb
subnet 10.23.0.0 netmask 255.255.0.0 {
132 4 Matthieu Herrb
     range 10.23.1.0 10.23.255.254;
133 4 Matthieu Herrb
     option routers 10.23.0.1;
134 4 Matthieu Herrb
}
135 4 Matthieu Herrb
</pre>
136 4 Matthieu Herrb
137 4 Matthieu Herrb
* activation :
138 4 Matthieu Herrb
<pre>
139 4 Matthieu Herrb
# systemctl restart isc-dhcp-server
140 4 Matthieu Herrb
</pre>
141 4 Matthieu Herrb
142 2 Matthieu Herrb
143 2 Matthieu Herrb
h3. Serveur radvd
144 2 Matthieu Herrb
145 2 Matthieu Herrb
h3. Unbound