ConfigWifiEvenement » Historique » Version 24
Matthieu Herrb, 29/05/2023 19:14
1 | 1 | Matthieu Herrb | h1. Configuration d'un routeur pour un événement |
---|---|---|---|
2 | 1 | Matthieu Herrb | |
3 | 13 | Matthieu Herrb | {{>toc}} |
4 | 13 | Matthieu Herrb | |
5 | 1 | Matthieu Herrb | Exemple du THSF 2023 |
6 | 1 | Matthieu Herrb | |
7 | 1 | Matthieu Herrb | h2. Matériel |
8 | 1 | Matthieu Herrb | |
9 | 1 | Matthieu Herrb | # 1 PC avec 2 interfaces réseau (ou alors faire avec des vlans sur un switch) |
10 | 1 | Matthieu Herrb | # 2 Bornes Unifi UAC-M-Pro de Tetaneutral.net |
11 | 1 | Matthieu Herrb | # 1 switch PoE (802.11af) |
12 | 1 | Matthieu Herrb | # câbles RJ45 |
13 | 1 | Matthieu Herrb | # multiprise |
14 | 1 | Matthieu Herrb | |
15 | 1 | Matthieu Herrb | h2. Logiciel |
16 | 1 | Matthieu Herrb | |
17 | 24 | Matthieu Herrb | # Ubuntu server 20.04 sur le PC |
18 | 17 | Matthieu Herrb | # Paquets : @openssh-server emacs-nox nftables isc-dhcp-server unbound wireguard resolvconf radvd borgbackup iftop@# Unifi Controler 7 |
19 | 17 | Matthieu Herrb | # Unifi Controller |
20 | 1 | Matthieu Herrb | |
21 | 1 | Matthieu Herrb | h2. Configuration |
22 | 1 | Matthieu Herrb | |
23 | 1 | Matthieu Herrb | PC : 2 interfaces : |
24 | 1 | Matthieu Herrb | |
25 | 1 | Matthieu Herrb | * lan : @enp0s31f6@ |
26 | 1 | Matthieu Herrb | * wan : @enp2s0@ |
27 | 1 | Matthieu Herrb | |
28 | 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. |
29 | 1 | Matthieu Herrb | |
30 | 1 | Matthieu Herrb | A noter que l'IP wireguard se retrouve codée en dur à plusieurs endroits, pas cool mais bon. |
31 | 1 | Matthieu Herrb | |
32 | 1 | Matthieu Herrb | Dans l'exemple THSF 2023: |
33 | 1 | Matthieu Herrb | |
34 | 6 | Matthieu Herrb | * IPv4 : 185.119.170.12 et on prend 10.23.0.0/16 pour le LAN |
35 | 1 | Matthieu Herrb | * IPv6 : 2a03:7220:8087:c00::/56 ; on prend 2a03:7220:8087:c01::/64 pour le LAN |
36 | 1 | Matthieu Herrb | |
37 | 1 | Matthieu Herrb | h3. Config réseau : netplan |
38 | 1 | Matthieu Herrb | |
39 | 1 | Matthieu Herrb | * @/etc/netplan/00-installer-config.yaml@ : |
40 | 1 | Matthieu Herrb | <pre> |
41 | 1 | Matthieu Herrb | network: |
42 | 1 | Matthieu Herrb | ethernets: |
43 | 1 | Matthieu Herrb | enp0s31f6: |
44 | 1 | Matthieu Herrb | addresses: |
45 | 1 | Matthieu Herrb | - 10.23.0.1/16 |
46 | 1 | Matthieu Herrb | - 2a03:7220:8087:c01::1/64 |
47 | 1 | Matthieu Herrb | nameservers: |
48 | 1 | Matthieu Herrb | addresses: [] |
49 | 1 | Matthieu Herrb | search: [] |
50 | 1 | Matthieu Herrb | enp2s0: |
51 | 1 | Matthieu Herrb | dhcp4: true |
52 | 1 | Matthieu Herrb | version: 2 |
53 | 1 | Matthieu Herrb | </pre> |
54 | 1 | Matthieu Herrb | |
55 | 1 | Matthieu Herrb | h3. Config réseau : wireguard |
56 | 1 | Matthieu Herrb | |
57 | 16 | Matthieu Herrb | On alloue d'abord un service wireguard dans le SI (ici avec l'IP 185.119.170.12) Cf la page [[VPN]] et le wiki des bénévoles pour la config coté SI et serveurs. |
58 | 16 | Matthieu Herrb | |
59 | 14 | Matthieu Herrb | * Générer une clé privée |
60 | 14 | Matthieu Herrb | <pre> |
61 | 14 | Matthieu Herrb | # umask 077 |
62 | 14 | Matthieu Herrb | # wg genkey > /etc/wiregard/private |
63 | 15 | Matthieu Herrb | </pre> |
64 | 14 | Matthieu Herrb | |
65 | 14 | Matthieu Herrb | * Voir la clé publique pour la mettre dans le SI : |
66 | 14 | Matthieu Herrb | <pre> |
67 | 14 | Matthieu Herrb | # wg pubkey < /etc/wireguard/private |
68 | 14 | Matthieu Herrb | </pre> |
69 | 1 | Matthieu Herrb | |
70 | 1 | Matthieu Herrb | * @/etc/wireguard/wg0.conf@ : |
71 | 1 | Matthieu Herrb | <pre> |
72 | 1 | Matthieu Herrb | [Interface] |
73 | 1 | Matthieu Herrb | Address = 185.119.170.12/32,2a03:7220:8087:c00::/56 |
74 | 1 | Matthieu Herrb | DNS = 91.224.148.10,91.224.149.254 |
75 | 1 | Matthieu Herrb | PrivateKey = <mettre ici la clé privée> |
76 | 1 | Matthieu Herrb | |
77 | 1 | Matthieu Herrb | [Peer] |
78 | 1 | Matthieu Herrb | Publickey = DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A= |
79 | 1 | Matthieu Herrb | AllowedIPs = 0.0.0.0/0,::/0 |
80 | 1 | Matthieu Herrb | EndPoint = 89.234.156.116:51820 |
81 | 1 | Matthieu Herrb | PersistentKeepalive = 25 |
82 | 1 | Matthieu Herrb | </pre> |
83 | 2 | Matthieu Herrb | |
84 | 2 | Matthieu Herrb | * Activier le service : |
85 | 2 | Matthieu Herrb | <pre> |
86 | 2 | Matthieu Herrb | # systemctl enable wg-quick@wg0.service |
87 | 2 | Matthieu Herrb | # systemctl start wg-quick@wg0.service |
88 | 2 | Matthieu Herrb | </pre> |
89 | 2 | Matthieu Herrb | |
90 | 19 | Matthieu Herrb | h3. NAT : nftables |
91 | 3 | Matthieu Herrb | |
92 | 3 | Matthieu Herrb | On fait du NAT sur l'interface wan et sur wireguard + MSS Clamping pour TCP au MTU de l'interface wireguard. |
93 | 3 | Matthieu Herrb | |
94 | 11 | Matthieu Herrb | * @/etc/nftables.conf@ : |
95 | 3 | Matthieu Herrb | <pre> |
96 | 3 | Matthieu Herrb | #!/usr/sbin/nft -f |
97 | 3 | Matthieu Herrb | |
98 | 3 | Matthieu Herrb | table inet filter { |
99 | 3 | Matthieu Herrb | chain input { |
100 | 3 | Matthieu Herrb | type filter hook input priority filter; policy accept; |
101 | 3 | Matthieu Herrb | } |
102 | 3 | Matthieu Herrb | |
103 | 3 | Matthieu Herrb | chain forward { |
104 | 3 | Matthieu Herrb | type filter hook forward priority filter; policy accept; |
105 | 3 | Matthieu Herrb | tcp flags syn tcp option maxseg size set rt mtu |
106 | 3 | Matthieu Herrb | } |
107 | 3 | Matthieu Herrb | |
108 | 3 | Matthieu Herrb | chain output { |
109 | 3 | Matthieu Herrb | type filter hook output priority filter; policy accept; |
110 | 3 | Matthieu Herrb | } |
111 | 3 | Matthieu Herrb | } |
112 | 3 | Matthieu Herrb | |
113 | 3 | Matthieu Herrb | table ip nat { |
114 | 3 | Matthieu Herrb | chain prerouting { |
115 | 3 | Matthieu Herrb | type nat hook prerouting priority dstnat; policy accept; |
116 | 3 | Matthieu Herrb | } |
117 | 3 | Matthieu Herrb | |
118 | 3 | Matthieu Herrb | chain postrouting { |
119 | 3 | Matthieu Herrb | type nat hook postrouting priority srcnat; policy accept; |
120 | 3 | Matthieu Herrb | oifname "wg0" masquerade |
121 | 3 | Matthieu Herrb | oifname "enp2s0" masquerade |
122 | 3 | Matthieu Herrb | } |
123 | 3 | Matthieu Herrb | } |
124 | 3 | Matthieu Herrb | </pre> |
125 | 3 | Matthieu Herrb | |
126 | 10 | Matthieu Herrb | * Activation : |
127 | 10 | Matthieu Herrb | <pre> |
128 | 10 | Matthieu Herrb | # systemctl enable nftables.service |
129 | 10 | Matthieu Herrb | # nft -f /etc/nftables.conf |
130 | 10 | Matthieu Herrb | </pre> |
131 | 10 | Matthieu Herrb | |
132 | 23 | Matthieu Herrb | h3. Serveur DHCP IPv4 : isc-dhcpd |
133 | 4 | Matthieu Herrb | |
134 | 5 | Matthieu Herrb | Remarque : baux de 24h pour faciliter l'exploitation des logs si besoin. nécessite un /16 pour le LAN pour ne pas avoir besoin de réutiliser des IPs. |
135 | 5 | Matthieu Herrb | |
136 | 4 | Matthieu Herrb | * @/etc/dhcp/dhcpd.conf@ : |
137 | 4 | Matthieu Herrb | <pre> |
138 | 4 | Matthieu Herrb | option domain-name "tetaneutral.net"; |
139 | 4 | Matthieu Herrb | option domain-name-servers 10.23.0.1; |
140 | 4 | Matthieu Herrb | |
141 | 4 | Matthieu Herrb | default-lease-time 86400; |
142 | 4 | Matthieu Herrb | max-lease-time 172800; |
143 | 4 | Matthieu Herrb | |
144 | 4 | Matthieu Herrb | ddns-update-style none; |
145 | 4 | Matthieu Herrb | authoritative; |
146 | 4 | Matthieu Herrb | log-facility local7; |
147 | 4 | Matthieu Herrb | |
148 | 4 | Matthieu Herrb | subnet 10.23.0.0 netmask 255.255.0.0 { |
149 | 4 | Matthieu Herrb | range 10.23.1.0 10.23.255.254; |
150 | 4 | Matthieu Herrb | option routers 10.23.0.1; |
151 | 4 | Matthieu Herrb | } |
152 | 4 | Matthieu Herrb | </pre> |
153 | 4 | Matthieu Herrb | |
154 | 4 | Matthieu Herrb | * activation : |
155 | 4 | Matthieu Herrb | <pre> |
156 | 4 | Matthieu Herrb | # systemctl restart isc-dhcp-server |
157 | 4 | Matthieu Herrb | </pre> |
158 | 2 | Matthieu Herrb | |
159 | 22 | Matthieu Herrb | h3. Serveur autoconfiguration IPv6 : radvd |
160 | 2 | Matthieu Herrb | |
161 | 7 | Matthieu Herrb | Diffuse les adresses de serveurs DNS local (unbound) + un recursif ttnn en secours. |
162 | 7 | Matthieu Herrb | |
163 | 7 | Matthieu Herrb | * `/etc/radvd.conf` |
164 | 7 | Matthieu Herrb | <pre> |
165 | 7 | Matthieu Herrb | interface enp0s31f6 |
166 | 7 | Matthieu Herrb | { |
167 | 7 | Matthieu Herrb | AdvSendAdvert on; |
168 | 7 | Matthieu Herrb | prefix 2a03:7220:8087:c01::/64 |
169 | 7 | Matthieu Herrb | { |
170 | 7 | Matthieu Herrb | AdvOnLink on; |
171 | 7 | Matthieu Herrb | AdvAutonomous on; |
172 | 7 | Matthieu Herrb | }; |
173 | 7 | Matthieu Herrb | RDNSS 2a03:7220:8087:c01::1 2a03:7220:8081:fe00::1 { |
174 | 7 | Matthieu Herrb | AdvRDNSSLifetime 1200; |
175 | 7 | Matthieu Herrb | FlushRDNSS on; |
176 | 7 | Matthieu Herrb | }; |
177 | 7 | Matthieu Herrb | }; |
178 | 7 | Matthieu Herrb | </pre> |
179 | 7 | Matthieu Herrb | |
180 | 9 | Matthieu Herrb | * Activation: |
181 | 9 | Matthieu Herrb | <pre> |
182 | 9 | Matthieu Herrb | # systemctl restart radvd.service |
183 | 9 | Matthieu Herrb | </pre> |
184 | 9 | Matthieu Herrb | |
185 | 20 | Matthieu Herrb | h3. Résolveur DNS : Unbound |
186 | 8 | Matthieu Herrb | |
187 | 8 | Matthieu Herrb | Autorise les requêtes depuis le LAN et bloque le reste. |
188 | 8 | Matthieu Herrb | |
189 | 8 | Matthieu Herrb | * @/etc/unbound/unbound.conf.d/server.conf@ : |
190 | 8 | Matthieu Herrb | <pre> |
191 | 8 | Matthieu Herrb | server: |
192 | 8 | Matthieu Herrb | interface: 10.23.0.1 |
193 | 8 | Matthieu Herrb | interface: :: |
194 | 8 | Matthieu Herrb | interface: 127.0.0.1 |
195 | 8 | Matthieu Herrb | |
196 | 8 | Matthieu Herrb | access-control: 0.0.0.0/0 refuse |
197 | 8 | Matthieu Herrb | access-control: 10.23.0.0/16 allow |
198 | 8 | Matthieu Herrb | access-control: ::0/0 refuse |
199 | 8 | Matthieu Herrb | access-control: fe80::/16 allow |
200 | 8 | Matthieu Herrb | access-control: 2a03:7220:8087:c01::/64 allow |
201 | 8 | Matthieu Herrb | |
202 | 8 | Matthieu Herrb | hide-identity: yes |
203 | 8 | Matthieu Herrb | hide-version: yes |
204 | 8 | Matthieu Herrb | |
205 | 8 | Matthieu Herrb | aggressive-nsec: yes |
206 | 8 | Matthieu Herrb | qname-minimisation: yes |
207 | 8 | Matthieu Herrb | </pre> |
208 | 8 | Matthieu Herrb | |
209 | 8 | Matthieu Herrb | * Activation |
210 | 8 | Matthieu Herrb | <pre> |
211 | 8 | Matthieu Herrb | # systemctl restart unbound.service |
212 | 8 | Matthieu Herrb | </pre> |
213 | 12 | Matthieu Herrb | |
214 | 21 | Matthieu Herrb | h2. Controleur des bornes Wifi : Unifi |
215 | 12 | Matthieu Herrb | |
216 | 12 | Matthieu Herrb | Téléchargement : https://ui.com/download/unifi/default/default/unifi-network-application-7383-unifi-os-consoles-and-debianubuntu |
217 | 12 | Matthieu Herrb | |
218 | 12 | Matthieu Herrb | (Downloads -> unifi -> software) |
219 | 12 | Matthieu Herrb | |
220 | 12 | Matthieu Herrb | h3. Installer le controleur |
221 | 12 | Matthieu Herrb | |
222 | 12 | Matthieu Herrb | * Définir un compte admin + mot de passe |
223 | 12 | Matthieu Herrb | * Configurer le reseau 'default' avec les adresses IPv4 et IPv6 du lan |
224 | 12 | Matthieu Herrb | * Définir un (ou plusieurs) réseaux wifi SSID + mot de passe WPA2 |
225 | 12 | Matthieu Herrb | |
226 | 12 | Matthieu Herrb | h3. Adopter les bornes |
227 | 12 | Matthieu Herrb | |
228 | 12 | Matthieu Herrb | # connecter une borne au switch PoE du LAN |
229 | 12 | Matthieu Herrb | # faire un reset de la borne (connecter en maintenant le bouton RESET appuyé jusqu'à flash bleu/blanc) |
230 | 1 | Matthieu Herrb | # Attendre config DHCP de la borne, puis déconnecter/reconnecter - |
231 | 14 | Matthieu Herrb | # Adopter la borne dans l'interface. |