Projet

Général

Profil

Wiki » Historique » Version 20

Guillaume LE GALL, 28/09/2017 19:01

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 20 Guillaume LE GALL
$ sudo dpkg -i ppp_2.4.7-1+5_amd64.deb
46 10 Guillaume LE GALL
$ 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>