Wiki » Historique » Version 19
Guillaume LE GALL, 28/09/2017 19:00
1 | 1 | Guillaume LE GALL | h1. Softwire |
---|---|---|---|
2 | |||
3 | Softwire est un logiciel permettant de monter un tunnel IPv6 au dessus d'IPv4, ou l'inverse. Pour cela, il se base sur les technologies Layer Two Tunneling Protocol version 2 (L2TPv2) et Point-to-Point Protocol (PPP). |
||
4 | |||
5 | Softwire est une implémentation de "RFC 5571":https://tools.ietf.org/html/rfc5571 contenue dans ce projet et les projets associés. |
||
6 | |||
7 | 3 | Guillaume LE GALL | La version actuelle n'utilise plus "wide-dhcpv6":https://sourceforge.net/projects/wide-dhcpv6/, qui était utilisé notamment pour la délégation de préfixe au client. |
8 | 1 | Guillaume LE GALL | |
9 | h2. Installation |
||
10 | |||
11 | Ce guide est a été rédigé pour l'actuelle version stable de Debian, « "Stretch":https://wiki.debian.org/fr/DebianStretch ». |
||
12 | |||
13 | h3. Commun |
||
14 | |||
15 | 10 | Guillaume LE GALL | h4. PPP |
16 | |||
17 | 19 | Guillaume LE GALL | Si vous n'utilisez pas l'authentification Radius pour PPP, la version du système (actuellement 2.4.7.) devrait suffire. Néanmoins, voici la procédure d'installation pour notre version de PPP, avec le support de l’authentification Radius (non testé). |
18 | 10 | Guillaume LE GALL | |
19 | Installation des dépendances : |
||
20 | |||
21 | <pre> |
||
22 | $ sudo apt-get install libpcap0.8-dev libpam0g-dev zlib1g-dev dh-systemd |
||
23 | </pre> |
||
24 | |||
25 | Cloner le dépôt : |
||
26 | <pre> |
||
27 | $ git clone https://redmine.telecom-bretagne.eu/git/softwire-ppp |
||
28 | $ cd softwire-ppp |
||
29 | </pre> |
||
30 | |||
31 | Se placer sur la branche « debian/stretch ». |
||
32 | |||
33 | <pre> |
||
34 | $ git checkout debian/stretch |
||
35 | </pre> |
||
36 | |||
37 | Pour construire le paquet, utiliser : |
||
38 | <pre> |
||
39 | $ dpkg-buildpackage -b -rfakeroot -us -uc |
||
40 | </pre> |
||
41 | |||
42 | Installer les paquets créés, en utilisant « --force-overwrite » quand c'est nécessaire : |
||
43 | |||
44 | <pre> |
||
45 | $ sudo dpkg -i sudo dpkg -i ppp_2.4.7-1+5_amd64.deb |
||
46 | $ sudo dpkg -i ppp-dbgsym_2.4.7-1+5_amd64.deb |
||
47 | $ sudo dpkg -i ppp-dev_2.4.7-1+5_all.deb |
||
48 | </pre> |
||
49 | |||
50 | 1 | Guillaume LE GALL | h4. OpenL2TP |
51 | |||
52 | Installer les paquets : |
||
53 | |||
54 | <pre> |
||
55 | sudo apt-get install flex bison libreadline-dev ppp-dev dpatch libtirpc1 rpcbind |
||
56 | </pre> |
||
57 | |||
58 | Cloner le dépôt : |
||
59 | <pre> |
||
60 | $ git clone https://redmine.telecom-bretagne.eu/git/softwire-openl2tp |
||
61 | $ cd softwire-openl2tp |
||
62 | </pre> |
||
63 | |||
64 | Faire un paquet binaire : |
||
65 | <pre> |
||
66 | $ dpkg-buildpackage --build=binary |
||
67 | 8 | Guillaume LE GALL | </pre> |
68 | 1 | Guillaume LE GALL | |
69 | Les paquets créés sont dans le répertoire au niveau au dessus. Si il y a une erreur comme quoi il manque une clé privée pour signer le fichier ".buildinfo", ignorer le message. |
||
70 | |||
71 | Installer les paquets créés : |
||
72 | <pre> |
||
73 | 7 | Guillaume LE GALL | $ sudo dpkg -i openl2tp_1.8-1_amd64.deb openl2tp-dbgsym_1.8-1_amd64.deb openl2tp-dev_1.8-1_all.deb |
74 | 1 | Guillaume LE GALL | </pre> |
75 | |||
76 | 10 | Guillaume LE GALL | *Attention :* N'installez pas les paquets @openl2tp-ppp_1.8-1_amd64.deb@ et @openl2tp-ppp-dbgsym_1.8-1_amd64.deb@. Leur contenu est fourni par PPP, installé précédemment. Si jamais vous le faites, le plugin PPP pour OpenL2TP ne sera pas à jour, et ne permettra pas de notifier OpenL2TP que le tunnel a été monté avec succès. Cela aura pour conséquence que OpenL2TP fermera le tunnel après un timeout de 2 minutes. |
77 | |||
78 | 1 | Guillaume LE GALL | Si il reste des problèmes de dépendances à ce stade, utiliser : |
79 | 7 | Guillaume LE GALL | <pre> |
80 | $ sudo apt-get --fix-missing install |
||
81 | </pre> |
||
82 | 1 | Guillaume LE GALL | |
83 | 19 | Guillaume LE GALL | Et enfin configurer les paquets "laissés non configurés" aux étapes précédentes (nécessaire seulement si il y a eu des problèmes…). |
84 | 1 | Guillaume LE GALL | |
85 | 9 | Guillaume LE GALL | Pratique pour demander à dpkg de configurer les paquest laissés non configurés : |
86 | 1 | Guillaume LE GALL | <pre> |
87 | $ sudo dpkg --configure --pending |
||
88 | 9 | Guillaume LE GALL | </pre> |
89 | |||
90 | En cas de problème, pour obtenir les messages de débug d'OpenL2TP dans le syslog, modifier le fichier de configuration d'OpenL2TP en y mettant : |
||
91 | |||
92 | <pre> |
||
93 | OPENL2TPD_ARGS="-D -d API" |
||
94 | </pre> |
||
95 | 1 | Guillaume LE GALL | |
96 | h3. Softwire-concentrator |
||
97 | |||
98 | Ce logiciel joue le rôle de « serveur » |
||
99 | |||
100 | Cloner les dépôts : |
||
101 | <pre> |
||
102 | $ git clone https://redmine.telecom-bretagne.eu/git/softwire-concentrator |
||
103 | 11 | Guillaume LE GALL | $ cd softwire-concentrator |
104 | 1 | Guillaume LE GALL | </pre> |
105 | |||
106 | Installer les dépendances : |
||
107 | <pre> |
||
108 | 12 | Guillaume LE GALL | $ sudo apt-get install radvd procmail |
109 | 1 | Guillaume LE GALL | </pre> |
110 | |||
111 | 13 | Guillaume LE GALL | Compiler (c'est un projet autotools) : |
112 | <pre> |
||
113 | 1 | Guillaume LE GALL | $ autoreconf -i -v |
114 | 13 | Guillaume LE GALL | </pre> |
115 | |||
116 | 19 | Guillaume LE GALL | Si le système se plaint que le fichier "missing" est trop vieux, le supprimer et recommencer. |
117 | 13 | Guillaume LE GALL | |
118 | Ensuite : |
||
119 | |||
120 | <pre> |
||
121 | $ ./configure |
||
122 | $ make |
||
123 | </pre> |
||
124 | |||
125 | 1 | Guillaume LE GALL | Pour obtenir un paquet Debian: |
126 | |||
127 | <pre> |
||
128 | $ dpkg-buildpackage --build=binary |
||
129 | </pre> |
||
130 | |||
131 | 2 | Guillaume LE GALL | Le paquet créé est dans le répertoire au niveau au dessus. Si il y a une erreur comme quoi il manque une clé privée pour signer le fichier ".buildinfo", ignorer le message. |
132 | 1 | Guillaume LE GALL | |
133 | Installer le paquet créé. |
||
134 | 2 | Guillaume LE GALL | |
135 | 1 | Guillaume LE GALL | *Note :* Après mise à jour du code du paquet, penser à mettre à jour le fichier debian/changelog, à l'aide de l'outil dch, qui pré-remplit une nouvelle entrée dans ce fichier. |
136 | |||
137 | h3. Softwire-initiator |
||
138 | |||
139 | Ce logiciel joue le rôle de « client » |
||
140 | |||
141 | Cloner les dépôts : |
||
142 | <pre> |
||
143 | $ git clone https://redmine.telecom-bretagne.eu/git/softwire-initiator |
||
144 | </pre> |
||
145 | |||
146 | Installer les dépendances : |
||
147 | <pre> |
||
148 | 13 | Guillaume LE GALL | sudo apt-get install radvd lsb-base debhelper dh-systemd |
149 | 1 | Guillaume LE GALL | </pre> |
150 | |||
151 | Construire le paquet : |
||
152 | <pre> |
||
153 | $ dpkg-buildpackage |
||
154 | </pre> |
||
155 | |||
156 | Installer le paquet : |
||
157 | <pre> |
||
158 | $ cd .. |
||
159 | 13 | Guillaume LE GALL | $ sudo dpkg -i softwire-client_2.0~beta3_all.deb |
160 | 1 | Guillaume LE GALL | </pre> |
161 | |||
162 | h2. Mise en place (setup) |
||
163 | |||
164 | h3. Concentrator |
||
165 | |||
166 | Sur la machine hébergeant le Concentrator, vérifier que le forwaring est activé : |
||
167 | <pre> |
||
168 | $ cat /etc/sysctl.conf | grep net.ipv6.conf.all.forwarding |
||
169 | net.ipv6.conf.all.forwarding=1 |
||
170 | </pre> |
||
171 | |||
172 | 14 | Guillaume LE GALL | De même pour IPv4. Si vous modifiez @/etc/sysctl.conf@, pour que les nouvelles règles soient prises en compte, il faut utiliser : |
173 | <pre> |
||
174 | $ sudo sysctl -p |
||
175 | </pre> |
||
176 | 1 | Guillaume LE GALL | |
177 | Configurer Softwire, en mettant à jour son fichier de configuration : |
||
178 | <pre> |
||
179 | $ vim /etc/softwire/softwire-concentrator.conf |
||
180 | </pre> |
||
181 | 15 | Guillaume LE GALL | |
182 | Ajoutez une paire login / mot de passe pour permettre au client de s'authentifier avec PPP. Attention, Softwire n'autorise que le mode d'authentification CHAP. Il faut donc modifier le fichier @chap-secrets@ de PPP : |
||
183 | <pre> |
||
184 | $ sudo vim /etc/ppp/chap-secrets |
||
185 | </pre> |
||
186 | |||
187 | En y ajoutant : |
||
188 | <pre> |
||
189 | # Softwire |
||
190 | sw-user * "sw-passwd" * |
||
191 | </pre> |
||
192 | |||
193 | Où @sw-user@ et @sw-passwd@ sont les nom d'utilisateur et mot de passe qu'un softwire-initiator peut utiliser. |
||
194 | |||
195 | Vous pouvez éventuellement modifier également : |
||
196 | * La configuration de Radvd, qui est embarquée dans le script @/etc/ppp/ipv6-up.d/softwire@ pour changer par exemple la fréquence des RAs. |
||
197 | 16 | Guillaume LE GALL | * L'utilisation et la fréquence des messages @LCP echo request@ de PPP, permettant d'identifier facilement si le lien n'est plus disponible, en modifiant @/etc/softwire/lns.conf@. |
198 | 15 | Guillaume LE GALL | |
199 | 1 | Guillaume LE GALL | *Note :* c'est OpenL2TP qui instancie PPP dans Softwire, et qui lui passe les options souhaitées (elles-mêmes reçues par le client @l2tpconfig@). Donc, modifier @/etc/ppp/options@ n'aura pas d'effet sur Softwire. |
200 | 16 | Guillaume LE GALL | |
201 | Pour vérifier que tout c'est bien passé : |
||
202 | <pre> |
||
203 | $ sudo service softwire restart |
||
204 | 17 | Guillaume LE GALL | $ sudo service softwire status |
205 | 16 | Guillaume LE GALL | ● softwire.service - LSB: Softwire is an implementation of RFC 5571 |
206 | Loaded: loaded (/etc/init.d/softwire; generated; vendor preset: enabled) |
||
207 | Active: active (running) since Thu 2017-09-28 18:16:51 CEST; 2s ago |
||
208 | Docs: man:systemd-sysv-generator(8) |
||
209 | Process: 13943 ExecStop=/etc/init.d/softwire stop (code=exited, status=0/SUCCESS) |
||
210 | Process: 13956 ExecStart=/etc/init.d/softwire start (code=exited, status=0/SUCCESS) |
||
211 | CGroup: /system.slice/softwire.service |
||
212 | ├─13963 /usr/sbin/radvd -C /var/run/softwire/radvd.conf -p /var/run/softwire/radvd.pid |
||
213 | └─13964 /usr/sbin/radvd -C /var/run/softwire/radvd.conf -p /var/run/softwire/radvd.pid |
||
214 | |||
215 | sept. 28 18:16:51 apu-1 systemd[1]: Starting LSB: Softwire is an implementation of RFC 5571... |
||
216 | sept. 28 18:16:51 apu-1 radvd[13962]: version 2.15 started |
||
217 | sept. 28 18:16:51 apu-1 softwire[13956]: Modified peer profile default |
||
218 | sept. 28 18:16:51 apu-1 softwire[13956]: Created tunnel profile softwire |
||
219 | sept. 28 18:16:51 apu-1 softwire[13956]: Created ppp profile softwire |
||
220 | sept. 28 18:16:51 apu-1 systemd[1]: Started LSB: Softwire is an implementation of RFC 5571. |
||
221 | </pre> |
||
222 | |||
223 | h3. Initiator |
||
224 | |||
225 | 18 | Guillaume LE GALL | Modifier le fichier de configuration de Softwire : |
226 | <pre> |
||
227 | $ vim /etc/softwire/softwire.conf |
||
228 | </pre> |
||
229 | |||
230 | Pour qu'il ait l'allure suivante : |
||
231 | <pre> |
||
232 | # IP address of the Softwire concentrator |
||
233 | SW_SERVER=192.168.1.5 |
||
234 | # Authentication information |
||
235 | SW_USER=sw-user |
||
236 | SW_PASSWD=sw-passwd |
||
237 | # The interface on which IPv6 access will be given to other devices |
||
238 | # This parameter can be left empty, if not needed. |
||
239 | SW_INGRESS= |
||
240 | </pre> |
||
241 | |||
242 | *Attention :* Le paramètre @SW_INGRESS@ n'est plus supporté dans la version actuelle. Il ne faut pas lui donner de valeur. |
||
243 | |||
244 | Enfin, tester la configuration en lançant le client : |
||
245 | <pre> |
||
246 | $ sudo service softwire-client start |
||
247 | </pre> |
||
248 | |||
249 | L'interface softwire-ppp devrait alors être présente, et après quelques secondes obtenir une adresse globale dans le préfixe configuré sur le concentrateur, grâce aux RAs : |
||
250 | <pre> |
||
251 | $ ip a |
||
252 | |||
253 | […] |
||
254 | |||
255 | 6: softwire-ppp: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UNKNOWN group default qlen 3 |
||
256 | link/ppp |
||
257 | inet6 2001:db8::2583:e3a:19d9:60fa/64 scope global mngtmpaddr dynamic |
||
258 | valid_lft 120sec preferred_lft 60sec |
||
259 | inet6 fe80::2583:e3a:19d9:60fa/10 scope link |
||
260 | valid_lft forever preferred_lft forever |
||
261 | </pre> |
||
262 | |||
263 | En cas de problème, des messages d'erreur devraient être présents dans le Syslog : |
||
264 | <pre> |
||
265 | $ sudo vim /var/log/syslog |
||
266 | </pre> |