openvpn client
Zodra we een openvpn-server hebben geconfigureerd, en sleutels hebben gegenereerd voor een client, kan die client met openvpn worden geconfigureerd.
- overbrengen van de sleutels
we hebben het volgende nodig:- een client key
<client>.key
in ons gevalclient01.key
- een client certificaat
<client>.crt
in ons gevalclient01.crt
- een certification authority certificaat:
ca.crt
- een TLS-sleutel:
ta.key
al deze files zijn aanwezig op de vpn-server. We beginnen met ze te kopieren naar een subdirectory van een account op de vpn-server ...root@vpn-ub14:/etc/openvpn/easy-rsa/keys# mkdir /home/user/keys root@vpn-ub14:/etc/openvpn/easy-rsa/keys# cp ca.crt /home/user/keys/ root@vpn-ub14:/etc/openvpn/easy-rsa/keys# cp client01.key /home/user/keys root@vpn-ub14:/etc/openvpn/easy-rsa/keys# cp client01.crt /home/user/keys root@vpn-ub14:/etc/openvpn/easy-rsa/keys# cp ../../ta.key /home/user/keys/
We maken vervolgens een archive bestand:
root@vpn-ub14:/home/user# tar -cvf keys.tar keys keys/ keys/ta.key keys/ca.crt keys/client01.crt keys/client01.key
We halen dit bestand op:
$ scp -P 1022 user@10.104.201.254:~/keys.tar . user@10.104.201.254's password: keys.tar 100% 20KB 20.0KB/s 00:00
En untarren vervolgens:
$ tar -xvf keys.tar keys/ keys/ta.key keys/ca.crt keys/client01.crt keys/client01.key
Kijken of het gelukt is:
$ ls -l keys total 16 -rw-r--r-- 1 bert bert 1379 dec 1 11:35 ca.crt -rw-r--r-- 1 bert bert 4093 dec 1 11:35 client01.crt -rw------- 1 bert bert 916 dec 1 11:35 client01.key -rw------- 1 bert bert 636 dec 1 11:36 ta.key
- een client key
- installatie openvpn op client
We moeten een aantal pakketten installeren om ervoor te zorgen dat we via network-manager de VPN-client kunnen instellen.
$ sudo apt-get install openvpn network-manager-openvpn network-manager-openvpn-gnome
Vervolgens klikken we rechts op het pictogram van network-manager, en gaan naar "edit-connections ... // daarna de knop ADD // vervolgens OpenVPN // CREATE
We vullen dan al de velden in zoals hieronder:\ \ \ cipher aanpassen naar DEFAULT / / /
/ / / cipher aanpassen naar DEFAULT \ \ \
Helaas het werkt niet:
Op de VPN-server zien we het volgende in de syslog:
Dec 1 12:56:10 vpn-ub14 ovpn-server[2497]: Options error: --ca fails with 'ca.crt': No such file or directory
Dat passen we aan door het volledig path te plaatsen in server.conf voor de ca.key:
# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert server.crt
key server.key # This file should be kept secret
Na een herstart krijgen we geen error meer ...
bert@vpn-ub14:/etc/openvpn$ sudo service openvpn status
VPN 'server' is running
... en de client doet het nu ook !!!
- debuggen
Op een andere server werkt de VPN eigenlijk helemaal niet. Omdat die achter een firewall staat, en er geen feedback te vinden is in de/var/log/syslog
, wordt wireshark ingeschakeld:10.28.101.100 151.152.153.154 TCP 49386 → 1194 [SYN] 151.152.153.154 10.28.101.100 TCP 1194 → 49386 [RST, ACK] 10.28.101.100 151.152.153.154 TCP 49388 → 1194 [SYN] 151.152.153.154 10.28.101.100 TCP 1194 → 49388 [RST, ACK]
De server wenst geen verbinding te leggen. Vraag iss of de
SYN
aankomt bij de openvpn server zelf, of reeds wordt afgeketst op de firewall ervoor. Dit kunnen we testen met een tshark op de openvpn server:
81.82.83.84 → 192.168.2.8 TCP 49516 → 1194 [SYN] 192.168.2.8 → 81.82.83.84 TCP 1194 → 49516 [RST, ACK]
De
RST
komt duidelijk van de openVPN-server.
Hij draait gewoon niet, al geeftsystemctl status
eenrunning
.
We zien ook geen1194
in netstat.
We proberen dan maar INTERACTIEF de service op te starten:
$ sudo /usr/sbin/openvpn /etc/openvpn/server.conf
Options error: --explicit-exit-notify can only be used with --proto udp
Use --help for more information.
In de configfile zien we inderdaad:... # Silence repeating messages. At most 20 # sequential messages of the same message # category will be output to the log. ;mute 20 # Notify the client that when the server restarts so it # can automatically reconnect. explicit-exit-notify 1 ...
We lossen het probleem op door met
vi
een;
voor deze laatste optie te plaatsen.
Vervolgens starten we de service opnieuw INTERACTIEF op ...
$ sudo /usr/sbin/openvpn /etc/openvpn/server.conf
11:13:53 OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Feb 10 11:13:53 library versions: OpenSSL 1.1.0g 2 Nov 2017, LZO 2.08 11:13:53 Diffie-Hellman initialized with 2048 bit key 11:13:53 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication 11:13:53 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication 11:13:53 ROUTE_GATEWAY 192.168.255.77/255.255.255.0 IFACE=ens3 HWADDR=52:54:00:82:0c:de 11:13:53 TUN/TAP device tun0 opened 11:13:53 TUN/TAP TX queue length set to 100 11:13:53 do_ifconfig, tt->did_ifconfig_ipv6_setup=0 11:13:53 /sbin/ip link set dev tun0 up mtu 1500 11:13:53 /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 11:13:53 /sbin/ip route add 10.8.0.0/24 via 10.8.0.2 11:13:53 Could not determine IPv4/IPv6 protocol. Using AF_INET 11:13:53 Socket Buffers: R=[87380->87380] S=[16384->16384] 11:13:53 Listening for incoming TCP connection on [AF_INET][undef]:1194 11:13:53 TCPv4_SERVER link local (bound): [AF_INET][undef]:1194 11:13:53 TCPv4_SERVER link remote: [AF_UNSPEC] 11:13:53 GID set to nogroup 11:13:53 UID set to nobody 11:13:53 MULTI: multi_init called, r=256 v=256 11:13:53 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0 11:13:53 IFCONFIG POOL LIST 11:13:53 MULTI: TCP INIT maxclients=1024 maxevents=1028 11:13:53 Initialization Sequence Completed 11:14:02 TCP connection established with [AF_INET]81.82.83.84:5505 11:14:03 81.82.83.84:5505 TLS: Initial packet from [AF_INET]81.82.83.84:5505, sid=0a255bd7 ea443c70 11:14:03 81.82.83.84:5505 VERIFY OK: depth=1, C=BE, ST=VL, L=brussels, O=educ, OU=educ.linux800, CN=educ CA, name=EasyRSA, emailAddress=educ@gmail.com 11:14:03 81.82.83.84:5505 VERIFY OK: depth=0, C=BE, ST=VL, L=brussels, O=educ, OU=educ.linux800, CN=lap17, name=EasyRSA, emailAddress=educ@gmail.com 11:14:03 81.82.83.84:5505 peer info: IV_VER=2.3.10 11:14:03 81.82.83.84:5505 peer info: IV_PLAT=linux 11:14:03 81.82.83.84:5505 peer info: IV_PROTO=2
11:14:03 81.82.83.84:5505 WARNING: 'link-mtu' is used inconsistently, local='link-mtu 1560', remote='link-mtu 1544' 11:14:03 81.82.83.84:5505 WARNING: 'cipher' is used inconsistently, local='cipher AES-256-CBC', remote='cipher BF-CBC' 11:14:03 81.82.83.84:5505 WARNING: 'keysize' is used inconsistently, local='keysize 256', remote='keysize 128'
11:14:03 81.82.83.84:5505 Control Channel: TLSv1.2, cipher TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA 11:14:03 81.82.83.84:5505 [lap17] Peer Connection Initiated with [AF_INET]81.82.83.84:5505 11:14:03 lap17/81.82.83.84:5505 MULTI_sva: pool returned IPv4=10.8.0.6, IPv6=(Not enabled) 11:14:03 lap17/81.82.83.84:5505 MULTI: Learn: 10.8.0.6 -> lap17/81.82.83.84:5505 11:14:03 lap17/81.82.83.84:5505 MULTI: primary virtual IP for lap17/81.82.83.84:5505: 10.8.0.6 11:14:06 lap17/81.82.83.84:5505 PUSH: Received control message: 'PUSH_REQUEST' 11:14:06 lap17/81.82.83.84:5505 SENT CONTROL [lap17]: 'PUSH_REPLY,route 192.168.255.0 255.255.255.0,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 0' (status=1) 11:14:06 lap17/81.82.83.84:5505 Outgoing Data Channel: Cipher 'AES-256-CBC' initialized with 256 bit key 11:14:06 lap17/81.82.83.84:5505 Outgoing Data Channel: Using 160 bit message hash 'SHA1' for HMAC authentication 11:14:06 lap17/81.82.83.84:5505 Incoming Data Channel: Cipher 'AES-256-CBC' initialized with 256 bit key 11:14:06 lap17/81.82.83.84:5505 Incoming Data Channel: Using 160 bit message hash 'SHA1' for HMAC authentication
11:14:06 lap17/81.82.83.84:5505 Authenticate/Decrypt packet error: cipher final failed 11:14:06 lap17/81.82.83.84:5505 Fatal decryption error (process_incoming_link), restarting 11:14:06 lap17/81.82.83.84:5505 SIGUSR1[soft,decryption-error] received, client-instance restarting
11:14:11 TCP connection established with [AF_INET]81.82.83.84:30633 11:14:12 81.82.83.84:30633 TLS: Initial packet from [AF_INET]81.82.83.84:30633, sid=0ef7ccfe a1ab457c 11:14:12 81.82.83.84:30633 VERIFY OK: depth=1, C=BE, ST=VL, L=brussels, O=educ, OU=educ.linux800, CN=educ CA, name=EasyRSA, emailAddress=educ@gmail.com 11:14:12 81.82.83.84:30633 VERIFY OK: depth=0, C=BE, ST=VL, L=brussels, O=educ, OU=educ.linux800, CN=lap17, name=EasyRSA, emailAddress=educ@gmail.com 11:14:12 81.82.83.84:30633 peer info: IV_VER=2.3.10 11:14:12 81.82.83.84:30633 peer info: IV_PLAT=linux 11:14:12 81.82.83.84:30633 peer info: IV_PROTO=2
11:14:12 81.82.83.84:30633 WARNING: 'link-mtu' is used inconsistently, local='link-mtu 1560', remote='link-mtu 1544' 11:14:12 81.82.83.84:30633 WARNING: 'cipher' is used inconsistently, local='cipher AES-256-CBC', remote='cipher BF-CBC' 11:14:12 81.82.83.84:30633 WARNING: 'keysize' is used inconsistently, local='keysize 256', remote='keysize 128'
... dat probleem lossen we op op de client met ...
Op de openvpn server moeten we ook routing enablen:
$ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
En opstarten:
$ /etc/openvpn$ sudo sysctl -p
net.ipv4.ip_forward = 1
En om duistere redenen moeten we met systemctl de server opstarten als volgt:
$ sudo systemctl start openvpn@server
... en we kunnen testen:$ netstat -vatn
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:1194 0.0.0.0:* LISTEN tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN