Bonjour !
Je me permet de vous exposer un petit souci que je rencontre : je souhaite mettre en place un Serveur VPN sur un poste en Debian Squeeze.
J’aimerais qu’un client, à partir d’Internet, puisse se connecter au serveur VPN et ainsi accéder aux ressources présentes sur le LAN du Serveur VPN.
Dans un premier temps et par souci de sécurité, je fais mes tests sans être connecté au net, en local.
Voici l’existant :
- Le serveur
Il a deux interfaces réseaux :
- 172.16.0.250 masque 255.0.0.0 , cette carte est connectée au reste du LAN du serveur
- l’IP publique
-
Le client
Windows XP SP3 / OpenVPN Client / Pare-feu désactivé -
Les fichiers de conf:
/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.16.0.250
netmask 255.0.0.0
gateway 172.16.0.1
dns-nameservers 172.17.0.15
auto eth1
iface eth1 inet static
address [IP PUBLIQUE]
netmask 255.255.255.248
gateway [PASSERELLE]
Voici le résultat d’un ifconfig
ifconfig
br0 Link encap:Ethernet HWaddr 00:1a:a0:0a:d0:e8
inet adr:172.16.0.250 Bcast:172.255.255.255 Masque:255.0.0.0
adr inet6: fe80::21a:a0ff:fe0a:d0e8/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2387 errors:0 dropped:0 overruns:0 frame:0
TX packets:2005 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:138668 (135.4 KiB) TX bytes:151919 (148.3 KiB)
eth0 Link encap:Ethernet HWaddr 00:1a:a0:0a:d0:e8
adr inet6: fe80::21a:a0ff:fe0a:d0e8/64 Scope:Lien
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:9648 errors:0 dropped:0 overruns:0 frame:0
TX packets:7855 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:743889 (726.4 KiB) TX bytes:614901 (600.4 KiB)
Interruption:21
eth1 Link encap:Ethernet HWaddr []
inet adr:[IP PUBLIQUE] Bcast:[] Masque:255.255.255.248
adr inet6: [] Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:33418 errors:0 dropped:0 overruns:0 frame:0
TX packets:28972 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:2847266 (2.7 MiB) TX bytes:2787467 (2.6 MiB)
Interruption:21 Adresse de base:0x8f00
lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:77593 errors:0 dropped:0 overruns:0 frame:0
TX packets:77593 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:6526234 (6.2 MiB) TX bytes:6526234 (6.2 MiB)
tap0 Link encap:Ethernet HWaddr 2e:6e:27:eb:29:58
adr inet6: fe80::2c6e:27ff:feeb:2958/64 Scope:Lien
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:514 overruns:0 carrier:0
collisions:0 lg file transmission:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Ci dessous les scripts d’ouverture/fermeture du bridge
/etc/openvpn/scripts/bridge-start
#!/bin/bash
br="br0"
tap="tap0"
eth="eth0"
eth_ip="172.16.0.250"
eth_netmask="255.0.0.0"
eth_broadcast="172.255.255.255"
for t in $tap; do
openvpn --mktun --dev $t
done
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
/etc/openvpn/scripts/bridge-stop
#!/bin/bash
br="br0"
tap="tap0"
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn --rmtun --dev $t
done
Voici le fichier de configuration du server VPN :
/etc/openvpn/server.conf
port 1194
proto udp
dev tap
ca ca.crt
cert [NOM_CERTIFICAT].crt
key [NOM_CERTIFICAT].key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
server-bridge 172.16.0.50 255.0.0.0 172.20.0.10 172.20.0.100
push "route 172.16.0.0 255.0.0.0"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
Et la configuration du client: (fichier .ovpn)
client
dev tap0
proto udp
remote [IP_PUBLIQUE] 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
- le pare-feu
# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -i tap0 -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A FORWARD -i br0 -j ACCEPT
-A fail2ban-ssh -j RETURN
- Le souci rencontré
Après le bridge-start, je lance le serveur VPN avec la commande
openvpn server.conf
Voici le résultat :
Tue Dec 27 15:42:16 2011 OpenVPN 2.1.3 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Oct 21 2010
Tue Dec 27 15:42:16 2011 NOTE: when bridging your LAN adapter with the TAP adapter, note that the new bridge adapter will often take on its own IP address that is different from what the LAN adapter was previously set to
Tue Dec 27 15:42:16 2011 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Tue Dec 27 15:42:16 2011 Diffie-Hellman initialized with 1024 bit key
Tue Dec 27 15:42:16 2011 /usr/bin/openssl-vulnkey -q -b 1024 -m <modulus omitted>
Tue Dec 27 15:42:17 2011 TLS-Auth MTU parms [ L:1574 D:138 EF:38 EB:0 ET:0 EL:0 ]
Tue Dec 27 15:42:17 2011 Socket Buffers: R=[112640->131072] S=[112640->131072]
Tue Dec 27 15:42:17 2011 TUN/TAP device tap1 opened
Tue Dec 27 15:42:17 2011 TUN/TAP TX queue length set to 100
Tue Dec 27 15:42:17 2011 Data Channel MTU parms [ L:1574 D:1450 EF:42 EB:135 ET:32 EL:0 AF:3/1 ]
Tue Dec 27 15:42:17 2011 UDPv4 link local (bound): [undef]
Tue Dec 27 15:42:17 2011 UDPv4 link remote: [undef]
Tue Dec 27 15:42:17 2011 MULTI: multi_init called, r=256 v=256
Tue Dec 27 15:42:17 2011 IFCONFIG POOL: base=172.20.0.10 size=91
Tue Dec 27 15:42:17 2011 IFCONFIG POOL LIST
Tue Dec 27 15:42:17 2011 alexandre,172.20.0.10
Tue Dec 27 15:42:17 2011 Initialization Sequence Completed
Maintenant, côté client, je lance OpenVPN sur Windows, je n’ai pas d’erreurs côté serveur sur la console.
L’IP attribuée au client est 172.20.0.10, mais à partir du Serveur je ne peux pas pinger cette adresse…
Aurais-je loupé quelque chose ?
J’espère que vous serez indulgents, je ne suis pas un pro de Debian.
Merci d’avance pour vos remarques/commentaires
Xanderz