OpenVPN – jest pełno funkcjonalnym rozwiązaniem open-source do uruchomienia prywatnego serwera SSL VPN. Zostały wykorzystane technologie OSI layer 2 lub 3 z wykorzystaniem SSL/TLS protokołów. VPN pozwala na bezpieczne połączenie z siecią z niebezpiecznych publicznych miejsc/sieci, takich jak wifi w restauracji czy na lotnisku. W artykule opisaliśmy jak można zainstalować OpenVPN serwer na serwerze z systemem operacyjnym Ubuntu 18.04.
Różnicę pomiędzy VPS a VPN opisaliśmy tu 🙂
Aktualizacja Systemu Ubuntu 18.04
sudo apt update sudo apt upgrade
Ustawienie zewnętrznego adresu IP
Skorzystamy z polecenia ip:
ip a ip a show eth0
Istnieje również druga opcja aby dowiedzieć się Swój zewnętrzny adres IP:
dig +short myip.opendns.com @resolver1.opendns.com
lub:
dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2}'
Info o publicznym adresie IP
Większość serwerów VPS albo w chmurze mogą mieć dwie adresacji:
- Statyczny publiczny IP, który jest bezpośrednio przypisany do Twojego serwera i dostępny publicznie z sieci Internet. Na przykład: VPS w Hostovita, Linode, Aruba i inni.
- Serwer znajduje się za NAT`em z publicznym IP i posiada tylko prywatny statyczny IP. Takie rozwiązanie jest stosowane w AWS EC2 lub Lightsail
Skrypt, podany powyżej automatycznie wykryje konfigurację Twojej maszyny i wyświetli poprawny adres IP.
Instalacja OpenVPN skryptem
Skorzystamy z wget aby pobrać plik:
wget https://git.io/vpn -O openvpn-install.sh
Ustawiamy uprawnienia dla pliku openvpn-install.sh na wszelki wypadek:
chmod +x openvpn-install.sh
Zawartość pliku możemy zobaczyć poprzez dowolny edytor:
nano openvpn-install.sh
Uruchomiamy openvpn-install.sh aby zainstalować OpenVPN server
Teraz musimy tylko uruchomić plik poleceniem:
sudo ./openvpn-install.sh
W naszym przypadku dostaliśmy następne zapytania, ponieważ nasz serwer ma normalny publiczny adres IP:
Aby nie mieć w przyszłości problemów z serwerem DNS polecamy wybierać zawsze 1.1.1.1 lub Google DNS, są to jedne z najszybszych serwerów, które aktualizowane są prawie na bieżąco.
Jak uruchomić/wstrzymać/zresetować serwer OpenVPN na Ubuntu 18.04 LTS?
sudo systemctl stop openvpn@server # <--- wstrzymanie serwera sudo systemctl start openvpn@server # <--- uruchomienie serwera OpenVPN sudo systemctl restart openvpn@server # <--- ponowne uruchomienie OpenVPN sudo systemctl status openvpn@server # <--- wyświetla status usługi
Podłączenie się do OpenVPN poprzez klient dla iOS/Android/Linux/Windows
Na serwerze VPS znajduje się plik konfiguracyjny o nazwie (w naszym przypadku): /root/klient.ovpn. Wystarczy skopiować ten plik na pulpit naszego komputera za pomocą FileZilla (sFTP) lub innego dowolnego programu FTP.
Następnie uruchomiamy dowolny klient OpenVPN z pobranym z serwera plikiem klient.ovpn:
Konfiguracja klienta OpenVPN na Linux
Instalujemy openvpn klienta na Swoim Linux komputerze:
sudo yum install openvpn
lub
sudo apt install openvpn
Kopiujemy plik klient.ovpn:
sudo cp klient.ovpn /etc/openvpn/client.conf
Sprawdzamy czy połączenie z terminalu jest ok:
sudo openvpn --client --config /etc/openvpn/klient.conf
Po uruchomieniu usługi OpenVPN system Linux będzie automatycznie łączyć się poprzez skrypt:
sudo systemctl start openvpn@client # <--- uruchomienie klienta OpenVPN
Sprawdzamy / testujemy połączenie
Uruchomiamy następne polecenia po podłączeniu się do serwera OpenVPN z poziomu terminalu Linux:
ping 10.1.0.1 #Ping`ujemy IP serwera OpenVPN lub IP gateway ip route #Sprawdzamy czy routing działa poprawnie dig TXT +short o-o.myaddr.l.google.com @ns1.google.com #Musi zwrócić publiczny IP naszego serwera OpenVPN
FAQ lub hotfixy problemów
1. Sprawdzić logi serwera OpenVPN:
journalctl --identifier ovpn-server
2. Czy firewall nie blokuje połączeń lub portów:
cat /etc/rc.local
#!/bin/sh -e iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to 172.26.6.74 exit 0
3. Czy OpenVPN serwer działa i potrzebne porty są otwarte:
netstat -tulpn | grep :1194 ## 1194 - port openVPN serwer ## ss -tulpn | grep :1194 ## 1194 - port openVPN serwer ## ps aux | grep openvpn ## czy serwer openvpn jest uruchomiony? ## ps -C openvpn ## czy serwer openvpn działa? ## pidof openvpn ## znajdź PID procesu openvpn server ##
Jeżeli usługa nie jest aktywna, wystarczy ją uruchomić:
sudo systemctl restart openvpn@server
Sprawdź błędy w:
sudo systemctl status openvpn@server
4. Czy klient na Linux może się połączyć z serwerem z OpenVPN. Sprawdzamy czy potrzebny port (UDP 1194) przyjmuje ruch (IP poniżej zamieniamy na IP serwera):
nc -vu 77.83.100.116 1194 Connection to 77.83.100.116 1194 port [udp/openvpn] succeeded!
Jeżeli nie można się połączyć – to może oznaczać że albo Firewall na komputerze (Linux) blokuje takie połączenie, albo na routerze lub u dostawcy internetu jest blokada na wybrany port/protokół.