OpenVPN » Historique » Version 7
Jocelyn Dealande, 02/05/2012 00:40
1 | 3 | Laurent GUERBY | {{>toc}} |
---|---|---|---|
2 | 3 | Laurent GUERBY | |
3 | 1 | Laurent GUERBY | h1. OpenVPN |
4 | 1 | Laurent GUERBY | |
5 | 3 | Laurent GUERBY | h2. point a point |
6 | 1 | Laurent GUERBY | |
7 | 1 | Laurent GUERBY | <pre> |
8 | 1 | Laurent GUERBY | openvpn --genkey --secret tst.key |
9 | 1 | Laurent GUERBY | |
10 | 1 | Laurent GUERBY | #server |
11 | 1 | Laurent GUERBY | openvpn --mktun --dev-type tap --dev taptst |
12 | 1 | Laurent GUERBY | ip link set taptst up |
13 | 1 | Laurent GUERBY | openvpn --dev-type tap --dev tapstg --comp-lzo yes --cipher none --proto udp --daemon --keepalive 10 30 --secret tst.key --port 1234 |
14 | 1 | Laurent GUERBY | |
15 | 1 | Laurent GUERBY | #client |
16 | 1 | Laurent GUERBY | openvpn --mktun --dev-type tap --dev taptst |
17 | 1 | Laurent GUERBY | ip link set taptst up |
18 | 1 | Laurent GUERBY | openvpn --dev-type tap --dev tapstg --comp-lzo yes --cipher none --proto udp --daemon --keepalive 10 30 --secret tst.key --remote A.B.C.D 1234 |
19 | 1 | Laurent GUERBY | </pre> |
20 | 2 | Laurent GUERBY | |
21 | 3 | Laurent GUERBY | h2. server |
22 | 3 | Laurent GUERBY | |
23 | 2 | Laurent GUERBY | Pour ignorer les push IP et route du serveur coté client openvpn il suffit de mettre "tls-client" a la place de "client" |
24 | 2 | Laurent GUERBY | l'option --client est un raccourci pour --tls-client --pull et --pull est ce qui accepte les directives serveur. |
25 | 3 | Laurent GUERBY | |
26 | 5 | Jocelyn Dealande | h2. Point-Ã -point avec routage d'un bloc d'IP. |
27 | 5 | Jocelyn Dealande | |
28 | 5 | Jocelyn Dealande | Le but est d'utiliser OpenVPN pour du *partage de connexion ADSL*. La collecte ADSL n'étant pas maitrisée mais étant celle d'un opérateur tiers et quelconque. Les options et le fonctionnement sont très similaires à la configuration point-à -point. Sauf que tout démarre avec un script d'init et qu'il y a en plus la question du routage du bloc d'adresses. IP. |
29 | 5 | Jocelyn Dealande | |
30 | 5 | Jocelyn Dealande | Le but est d'ammener des adresses IP publiques, via le VPN jusque chez les utilisateurs finaux (barbus du schémas). Là où par défaut, ils ne pourraient que se mettre derrière la *box et recevoir des adresses privées. Ce montage permet également de "neutraliser" un accès internet qui l'est peu⦠|
31 | 5 | Jocelyn Dealande | |
32 | 5 | Jocelyn Dealande | Ce qui ne concerne pas cette documentation : |
33 | 5 | Jocelyn Dealande | * la manière dont le routeur term_distante effectue le routage du bloc vers internet. |
34 | 5 | Jocelyn Dealande | * la manière dont le trafic est collecté sur le réseau local du côté eth1 de term_locale. |
35 | 7 | Jocelyn Dealande | * la manière dont sont distribuée les adresses du bloc aux machines sur le réseau local (DHCP, statiqueâ¦) |
36 | 5 | Jocelyn Dealande | |
37 | 5 | Jocelyn Dealande | h3. Préparation |
38 | 5 | Jocelyn Dealande | |
39 | 7 | Jocelyn Dealande | On utilise ici le fonctionnement Debian d'OpenVPN : chaque /etc/openvpn/<nom_tunnel>.conf est une instance d'openvpn différente qui sera démarrée par le script d'init (voir /etc/default/openvpn). Ici notre instance s'appelle _trifouillis_. |
40 | 7 | Jocelyn Dealande | |
41 | 5 | Jocelyn Dealande | On génère une clé symétrique et on la copie dans _/etc/openvpn/trifouillis/vpn-trifouillis.key_ sur _term_locale_ et _term_distante_. |
42 | 5 | Jocelyn Dealande | |
43 | 5 | Jocelyn Dealande | <pre> |
44 | 5 | Jocelyn Dealande | openvpn --genkey --secret trifouillis.key |
45 | 5 | Jocelyn Dealande | </pre> |
46 | 1 | Laurent GUERBY | |
47 | 7 | Jocelyn Dealande | h3. Configuration d'OpenVPN |
48 | 1 | Laurent GUERBY | |
49 | 7 | Jocelyn Dealande | h4. Configuration OpenVPN client (machine term_locale) |
50 | 7 | Jocelyn Dealande | |
51 | 5 | Jocelyn Dealande | _/etc/openvpn/trifouillis.conf_ :Â |
52 | 5 | Jocelyn Dealande | <pre> |
53 | 5 | Jocelyn Dealande | dev tap0 |
54 | 5 | Jocelyn Dealande | dev-type tap |
55 | 5 | Jocelyn Dealande | comp-lzo yes |
56 | 5 | Jocelyn Dealande | cipher none |
57 | 5 | Jocelyn Dealande | proto udp |
58 | 5 | Jocelyn Dealande | verb 3 |
59 | 5 | Jocelyn Dealande | |
60 | 5 | Jocelyn Dealande | daemon |
61 | 5 | Jocelyn Dealande | log-append /var/log/openvpn-trifouillis.log |
62 | 5 | Jocelyn Dealande | |
63 | 5 | Jocelyn Dealande | remote 5.5.5.5 9999 |
64 | 5 | Jocelyn Dealande | secret /etc/openvpn/trifouillis/vpn-trifouillis.key |
65 | 5 | Jocelyn Dealande | |
66 | 5 | Jocelyn Dealande | up /etc/openvpn/trifouillis/vpn.up.sh |
67 | 5 | Jocelyn Dealande | down /etc/openvpn/trifouillis/vpn.down.sh |
68 | 5 | Jocelyn Dealande | |
69 | 5 | Jocelyn Dealande | keepalive 10 30 |
70 | 5 | Jocelyn Dealande | |
71 | 5 | Jocelyn Dealande | persist-tun |
72 | 5 | Jocelyn Dealande | |
73 | 5 | Jocelyn Dealande | # nobind permet de prendre un port aléatoire à chaque démarrage d'openVPN évitera |
74 | 5 | Jocelyn Dealande | # les bugs liés aux NAT lorsque certaines box changent d'IP publique... |
75 | 5 | Jocelyn Dealande | |
76 | 5 | Jocelyn Dealande | nobind |
77 | 1 | Laurent GUERBY | </pre> |
78 | 5 | Jocelyn Dealande | |
79 | 7 | Jocelyn Dealande | h4. Configuration OpenVPN serveur (machine term_distante) |
80 | 5 | Jocelyn Dealande | |
81 | 5 | Jocelyn Dealande | _/etc/openvpn/trifouillis.conf_ :Â |
82 | 5 | Jocelyn Dealande | <pre> |
83 | 5 | Jocelyn Dealande | dev tap0 |
84 | 5 | Jocelyn Dealande | dev-type tap |
85 | 5 | Jocelyn Dealande | comp-lzo yes |
86 | 5 | Jocelyn Dealande | cipher none |
87 | 5 | Jocelyn Dealande | proto udp |
88 | 5 | Jocelyn Dealande | verb 3 |
89 | 5 | Jocelyn Dealande | |
90 | 5 | Jocelyn Dealande | daemon |
91 | 5 | Jocelyn Dealande | log-append /var/log/openvpn-trifouillis.log |
92 | 5 | Jocelyn Dealande | |
93 | 5 | Jocelyn Dealande | port 9999 |
94 | 5 | Jocelyn Dealande | secret /etc/openvpn/trifouillis/vpn-trifouillis.key |
95 | 5 | Jocelyn Dealande | |
96 | 5 | Jocelyn Dealande | keepalive 10 30 |
97 | 5 | Jocelyn Dealande | |
98 | 1 | Laurent GUERBY | persist-tun |
99 | 1 | Laurent GUERBY | </pre> |
100 | 1 | Laurent GUERBY | |
101 | 7 | Jocelyn Dealande | |
102 | 7 | Jocelyn Dealande | h3. Routage |
103 | 7 | Jocelyn Dealande | |
104 | 7 | Jocelyn Dealande | h4. Sur le serveur (machine term_distante) |
105 | 7 | Jocelyn Dealande | |
106 | 7 | Jocelyn Dealande | Sort du cadre de ce tutoriel. Simplement le bloc (_1.2.3.1/28_ dans notre exemple) doit être routé vers _term_distante_. |
107 | 7 | Jocelyn Dealande | |
108 | 7 | Jocelyn Dealande | h4. Sur le client (machine term_locale) |
109 | 7 | Jocelyn Dealande | |
110 | 7 | Jocelyn Dealande | L'idée ici est la suivante : |
111 | 7 | Jocelyn Dealande | # Les paquets provenant de l'interface tap OpenVPN et correspondant au bloc _1.2.3.1/28_ doivent-être routés vers l'interface eth1. |
112 | 7 | Jocelyn Dealande | # Les paquets provenant d'eth1 et avec une adresse source dans _1.2.3.1/28_ |
113 | 7 | Jocelyn Dealande | |
114 | 7 | Jocelyn Dealande | Le 1. est trivial, le 2. correspond à du *source-routing*. Il faut tout d'abord vérifier que le source-routing est disponible dans le kernel. Cela correspond aux options du kernel Linux suivantes : |
115 | 7 | Jocelyn Dealande | |
116 | 7 | Jocelyn Dealande | * IP_ADVANCED_ROUTER |
117 | 7 | Jocelyn Dealande | * IP_MULTIPLE_TABLES |
118 | 7 | Jocelyn Dealande | * IPV6_MULTIPLE_TABLES |
119 | 7 | Jocelyn Dealande | * IPV6_SUBTREES |
120 | 7 | Jocelyn Dealande | |
121 | 7 | Jocelyn Dealande | à vérifier dans /boot/config-$(uname -r) ou /proc/config.gz une Debian Wheezy récente est ok. |
122 | 7 | Jocelyn Dealande | |
123 | 7 | Jocelyn Dealande | Les règles de routage sont ensuite mises en places/retirées au démarrage/arrêt d'OpenVPN (cf partie précédente, options _up_ et _down_). Le contenu des scripts est le suivant : |
124 | 7 | Jocelyn Dealande | |
125 | 7 | Jocelyn Dealande | _/etc/openvpn/trifouillis/vpn.up.sh_ |
126 | 7 | Jocelyn Dealande | |
127 | 7 | Jocelyn Dealande | <pre> |
128 | 7 | Jocelyn Dealande | #!/bin/sh |
129 | 7 | Jocelyn Dealande | |
130 | 7 | Jocelyn Dealande | ## On gère via une table perso (250) uniquement les IP du bloc /28 et l'IP du endpoint VPN local. |
131 | 7 | Jocelyn Dealande | ## Les autres passent par la table default du système |
132 | 7 | Jocelyn Dealande | |
133 | 7 | Jocelyn Dealande | # source-routing des IPs du bloc |
134 | 7 | Jocelyn Dealande | ip rule add prio 200 from 1.2.3.0/28 lookup 250 |
135 | 7 | Jocelyn Dealande | # endpoint local (tap0) |
136 | 7 | Jocelyn Dealande | ip rule add prio 200 from 9.9.9.9 lookup 250 |
137 | 7 | Jocelyn Dealande | |
138 | 7 | Jocelyn Dealande | |
139 | 7 | Jocelyn Dealande | ## Fonctionnement de la table 250 |
140 | 7 | Jocelyn Dealande | |
141 | 7 | Jocelyn Dealande | # Ce qui est à destination des IPs du bloc va sur eth0 |
142 | 7 | Jocelyn Dealande | # (internet -> bloc) |
143 | 7 | Jocelyn Dealande | ip route add 1.2.3.0/28 dev eth1 table 250 |
144 | 7 | Jocelyn Dealande | |
145 | 7 | Jocelyn Dealande | # Ce qui vient du bloc vers internet va dans le tunnel |
146 | 7 | Jocelyn Dealande | # (bloc -> internet) |
147 | 7 | Jocelyn Dealande | ip route add default via 9.9.9.8 dev tap0 table 250 |
148 | 7 | Jocelyn Dealande | |
149 | 7 | Jocelyn Dealande | </pre> |
150 | 7 | Jocelyn Dealande | |
151 | 7 | Jocelyn Dealande | _/etc/openvpn/trifouillis/vpn.down.sh_ |
152 | 7 | Jocelyn Dealande | |
153 | 7 | Jocelyn Dealande | <pre> |
154 | 7 | Jocelyn Dealande | #!/bin/sh |
155 | 7 | Jocelyn Dealande | |
156 | 7 | Jocelyn Dealande | # On supprime toutes les règles de routage du *.up.sh |
157 | 7 | Jocelyn Dealande | ip rule del prio 200 from 1.2.3.0/28 lookup 250 |
158 | 7 | Jocelyn Dealande | ip rule del prio 200 from 9.9.9.9 lookup 250 |
159 | 7 | Jocelyn Dealande | ip route del default via 9.9.9.8 dev taprhi table 250 |
160 | 7 | Jocelyn Dealande | ip route del 1.2.3.0/28 dev eth0 table 250 |
161 | 7 | Jocelyn Dealande | </pre> |
162 | 7 | Jocelyn Dealande | |
163 | 7 | Jocelyn Dealande | h3. On lance |
164 | 7 | Jocelyn Dealande | |
165 | 7 | Jocelyn Dealande | De chaque côté pour que la magie opère : |
166 | 7 | Jocelyn Dealande | |
167 | 7 | Jocelyn Dealande | <pre> |
168 | 7 | Jocelyn Dealande | /etc/init.d/openvpn restart |
169 | 7 | Jocelyn Dealande | </pre> |
170 | 7 | Jocelyn Dealande | |
171 | 7 | Jocelyn Dealande | |
172 | 7 | Jocelyn Dealande | h3. â¦et on débugue |
173 | 7 | Jocelyn Dealande | Quelques commandes pour tester/debuguer (sur term_locale) |
174 | 7 | Jocelyn Dealande | |
175 | 7 | Jocelyn Dealande | Interface tap existe ? |
176 | 7 | Jocelyn Dealande | <pre> |
177 | 7 | Jocelyn Dealande | ifconfig tap |
178 | 7 | Jocelyn Dealande | </pre> |
179 | 7 | Jocelyn Dealande | |
180 | 7 | Jocelyn Dealande | Tunnel monté et fonctionnel (depuis local_endpoint) ? |
181 | 7 | Jocelyn Dealande | <pre> |
182 | 7 | Jocelyn Dealande | ping 9.9.9.8 |
183 | 7 | Jocelyn Dealande | </pre> |
184 | 7 | Jocelyn Dealande | |
185 | 7 | Jocelyn Dealande | Source-routing du blocpasse bien par le tunnel ? |
186 | 7 | Jocelyn Dealande | <pre> |
187 | 7 | Jocelyn Dealande | ip route get 8.8.8.8 from |
188 | 7 | Jocelyn Dealande | |
189 | 7 | Jocelyn Dealande | # Réponse attendue : |
190 | 7 | Jocelyn Dealande | 8.8.8.8 from via dev tap0 |
191 | 7 | Jocelyn Dealande | </pre> |
192 | 7 | Jocelyn Dealande | |
193 | 7 | Jocelyn Dealande | Ping fonctionne depuis le réseau routé à travers le VPN ? |
194 | 7 | Jocelyn Dealande | |
195 | 7 | Jocelyn Dealande | <pre> |
196 | 7 | Jocelyn Dealande | ping -I 1.2.3.1/28 www.ffdn.org |
197 | 7 | Jocelyn Dealande | </pre> |
198 | 7 | Jocelyn Dealande | |
199 | 7 | Jocelyn Dealande | |
200 | 7 | Jocelyn Dealande | Afficher les règles de routage de la table 250 |
201 | 7 | Jocelyn Dealande | <pre> |
202 | 7 | Jocelyn Dealande | ip route show table 250 |
203 | 7 | Jocelyn Dealande | </pre> |
204 | 7 | Jocelyn Dealande | |
205 | 7 | Jocelyn Dealande | Afficher les règles de consultation des tables : |
206 | 7 | Jocelyn Dealande | <pre> |
207 | 7 | Jocelyn Dealande | ip rule show |
208 | 7 | Jocelyn Dealande | </pre> |
209 | 5 | Jocelyn Dealande | |
210 | 3 | Laurent GUERBY | h2. Proxmox |
211 | 3 | Laurent GUERBY | |
212 | 3 | Laurent GUERBY | http://www.nedproductions.biz/wiki/configuring-a-proxmox-ve-2.x-cluster-running-over-an-openvpn-intranet |
213 | 4 | Laurent GUERBY | http://blog.developpeur-neurasthenique.fr/auto-hebergement-configurer-un-cluster-proxmox-2-sans-multicast.html |