Serwer
W celu instalacji OpenVPN-a trzeba włączyć repozytoriun EPEL:
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum -y upate
Instalujemy easy-rsa i OpenVPN:
sudo yum -y install easy-rsa openvpn
Generujemy certyfikat i klucz dla serwera:
cd /usr/share/easy-rsa/3.0 ./easyrsa init-pki ./easyrsa build-ca ./easyrsa gen-dh ./easyrsa build-server-full server nopass
Kopiujemy pliki do katalogu OpenVPN-a:
cp pki/ca.crt pki/dh.pem pki/issued/server.crt pki/private/server.key /etc/openvpn/server/
Generujemy klucz dla TLS-a:
cd /etc/openvpn/server openvpn --genkey --secret pfs.key
Tworzymy plik konfiguracyjny dla serwera:
vim /etc/openvpn/server.conf
Wklejamy do pliku poniższą zawartość:
port 1194 proto tcp dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.crt key /etc/openvpn/server/server.key dh /etc/openvpn/server/dh.pem cipher AES-256-CBC auth SHA512 server 10.8.0.0 255.255.255.0 # push "redirect-gateway def1 bypass-dhcp" # Directs all traffic through VPN connection. push "route 10.8.0.0 255.255.255.0" # push "dhcp-option DNS 8.8.8.8" # push "dhcp-option DNS 8.8.4.4" ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log log-append openvpn.log verb 3 tls-server tls-auth /etc/openvpn/server/pfs.key 0 client-to-client # Enables communication between clients.
OpenVPN działa na porcie 1194, więc taki port należy odblokować na firewallu.
Aktywujemy i uruchomiamy usługę OpenVPN-a:
systemctl enable openvpn@server systemctl start openvpn@server
Klient
Na serwerze generujemy certyfikat i klucz dla klienta:
cd /usr/share/easy-rsa/3.0 ./easyrsa build-client-full client nopass
Kopijemy poniższe pliki na urządzenie, które będzie łączyć się z serwerem:
/etc/openvpn/server/pfs.key /usr/share/easy-rsa/3.0/pki/ca.crt /usr/share/easy-rsa/3.0/pki/issued/client.crt /usr/share/easy-rsa/3.0/pki/private/client.key
W katalogu /etc/openvpn tworzymy plik client.conf i wklejamy poniższą zawartość. W „remote” wpisujemy adres naszej instancji:
client dev tun proto tcp remote ec2.instance.address 1194 resolv-retry infinite nobind persist-key persist-tun ca /etc/openvpn/client/ca.crt cert /etc/openvpn/client/client.crt key /etc/openvpn/client/client.key remote-cert-tls server tls-auth /etc/openvpn/client/pfs.key 1 cipher AES-256-CBC comp-lzo verb 3 auth SHA512
Podobnie jak w przypadku serwera aktywujemy i uruchomiamy usługę OpenVPN-a dla klienta:
systemctl enable openvpn@client systemctl start openvpn@client
Na kliencie sprawdzamy adres jaki został nam przydzielony:
ip addr 3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.8.0.10 peer 10.8.0.9/32 scope global tun0
Sprawdzamy na kliencie oraz na serwerze czy komunikacja działa poprawnie:
[user@server]$ ping 10.8.0.10 PING 10.8.0.10 (10.8.0.10) 56(84) bytes of data. 64 bytes from 10.8.0.10: icmp_seq=1 ttl=64 time=48.4 ms 64 bytes from 10.8.0.10: icmp_seq=2 ttl=64 time=76.9 ms [user@client]$ ping 10.8.0.1 PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data. 64 bytes from 10.8.0.1: icmp_seq=1 ttl=255 time=53.2 ms 64 bytes from 10.8.0.1: icmp_seq=2 ttl=255 time=39.5 ms
Linki
https://aws.amazon.com/premiumsupport/knowledge-center/ec2-enable-epel/
https://www.comparitech.com/blog/vpn-privacy/how-to-make-your-own-free-vpn-using-amazon-web-services/
http://blog.dutchcoders.io/configuring-openvpn-using-easyrsa/