Translation(s): English - Français -Русский - Polski
Contents
Przegląd OpenVPN
OpenVPN jest pakietem oprogramowania VPN opartym na SSL/TLS. Jest w stanie trasować połączenia NAT i zapory sieciowe. Ta strona wyjaśnia zwięźle jak skonfigurować VPN z OpenVPN zarówno od strony serwerowej jak i klienckiej.
Instalacja
Zainstaluj pakiet openvpn zarówno na serwerze jak i kliencie.
# apt-get install openvpn
Żeby włączyć OpenVPN w GNOME NetworkManager, dodatkowy pakiet network-manager-openvpn-gnome musi zostać zainstalowany:
# apt-get install network-manager-openvpn-gnome
Konfiguracja
OpenVPN może uwierzytelniać użytkowników przez login i hasło, wstępnie udostępniony klucz, certyfikaty itd.
Testowanie VPN
Przetestuj surowe połączenie.
test serwera
Z powłoki serwera wykonaj:
# openvpn --remote CLIENT_IP --dev tun1 --ifconfig 10.9.8.1 10.9.8.2
jeśli twój klient posiada statyczne IP#, w przeciwnym wypadku uruchom:
# openvpn --dev tun1 --ifconfig 10.9.8.1 10.9.8.2
Powinieneś zobaczyć wyjście terminala przypominające
Wed Mar 7 06:03:03 2012 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables Wed Mar 7 06:03:03 2012 ******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext Wed Mar 7 06:03:03 2012 TUN/TAP device tun1 opened ...
Podczas gdy openvpn jest uruchomiony, sprawdź swoją konfigurację sieci używając sudo ifconfig -a. Wyjście powinno zawierać
tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.9.8.1 P-t-P:10.9.8.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:13 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:2262 (2.2 KiB) TX bytes:1819 (1.7 KiB)
Zauważ że jeśli zabijesz proces openvpn (np. naciskając Control-c w konsoli), nie zobaczysz powyższego interfejsu sieciowego.
test klienta
# openvpn --remote SERVER_IP --dev tun1 --ifconfig 10.9.8.2 10.9.8.1 ... Wed Mar 7 18:05:30 2012 Peer Connection Initiated with [AF_INET]SERVER_IP:PORT Wed Mar 7 18:05:30 2012 Initialization Sequence Completed ...
Możesz także przetestować używając polecenia ping.
Statyczny klucz VPN
W katalogu serwera /etc/openvpn, uruchom następującą komendę aby wygenerować statyczny klucz:
# openvpn --genkey --secret static.key
Skopiuj statyczny klucz do katalogu klienta /etc/openvpn używając bezpiecznego kanału takiego jak scp czy sftp.
Na serwerze utwórz nowy plik /etc/openvpn/tun0.conf i dodaj następujący kod:
dev tun0 ifconfig 10.9.8.1 10.9.8.2 secret /etc/openvpn/static.key
10.9.8.x to twoja podsieć VPN, 10.9.8.1 jest adresem IP serwera, 10.9.8.2 jest adresem IP klienta.
Na komputerze klienta skopiuj /etc/openvpn/static.key z serwera i utwórz nowy plik /etc/openvpn/tun0.conf i dodaj następujący kod:
remote your-server.org dev tun0 ifconfig 10.9.8.2 10.9.8.1 secret /etc/openvpn/static.key
W zaporze sieciowej serwera otwórz port UDP 1194 (domyślny port).
Jeśli używasz na obu urządzeniach ?shorewall, dodaj nową strefę VPN aby reprezentowała tun0 i utwórz domyślną politykę dla niej. To znaczy dodanie czegoś do następujących plików w /etc/shorewall:
- zone
- interfaces
- policy
Miej na uwadze że w 90% wszystkich problemów z połączeniem napotkanych przez nowych użytkowników OpenVPN są związane z zaporą sieciową.
Uruchom OpenVPN ręcznie po obu stronach poleceniem:
# openvpn --config /etc/openvpn/tun0.conf --verb 6 // verbose output.
Na tym etapie prawdopodobnie należy skonfigurować trasę.
Aby sprawdzić, czy sieć VPN działa, należy pingować 10.9.8.2 z serwera i 10.9.8.1 z klienta.
VPN z włączonym TLS
Na serwerze skopiuj klucz generujący skrypt z przykładów openvpn do /etc/openvpn i dodaj uprawnienia do wykonywania:
# cd /etc/openvpn # mkdir easy-rsa
W Jessie i powyższych easy-rsa jest osobnym pakietem. Więc musisz zainstalować to, oprócz openvpn.
Na Wheezy:
# cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* easy-rsa/
Na Jessie i powyższych:
# apt-get install easy-rsa # cp -R /usr/share/easy-rsa/* easy-rsa/
Edytuj dół /etc/openvpn/easy-rsa/vars zgodnie z Twoją organizacją.
export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="mail@domain" export KEY_EMAIL=mail@domain
Wykonaj następujące polecenie:
# cd easy-rsa/ # touch keys/index.txt # echo 01 > keys/serial # . ./vars # set environment variables # ./clean-all
Zapamiętaj:
- tylko pliki .key powinny być poufne.
- pliki .crt i .csr mogą być wysyłane przez niebezpieczne kanały, takie jak e-mail zwykłego tekstu.
- nie potrzebujesz kopiować pliku .key między komputerami.
- każdy komputer będzie miał własny certyfikat/parę kluczy.
Generuj CERTIFICATE AUTHORITY (CA) CERTIFICATE/KEY:
# ./build-ca
To wygeneruje ca.crt i ca.key w katalogu /etc/openvpn/easy-rsa/keys/.
Generuj BUILD AN INTERMEDIATE CERTIFICATE AUTHORITY CERTIFICATE/KEY (opcjonalne):
# ./build-key-server server
To wygeneruje server.crt i server.key w katalogu /etc/openvpn/easy-rsa/keys/, i podpisany certyfikatem głównym.
Generuj BUILD DIFFIE-HELLMAN PARAMETERS (Konieczne do zakończenia połączenia z serwerem SSL/TLS):
./build-dh
Generuj klucz dla każdego klienta:
./build-key clientname
Wygeneruj klucz za pomocą hasła (co chroni klucz i zażąda hasła za każdym razem, gdy łączysz się z serwerem), dla każdego klienta:
./build-key-pass clientname
To wygeneruje klucze w katalogu /etc/openvpn/easy-rsa/keys/
Skopiuj ca.crt, clientname.crt, clientname.key z serwera do katalogu klienta /etc/openvpn/easy-rsa/keys/.
Sprawdź OpenVPN RSA Key i code.mixpanel.com VPN po więcej szczegółów.
Sprawdź połączenie z wiersza polecenia.
Serwer:
openvpn --dev tun1 --ifconfig 10.9.8.1 10.9.8.2 --tls-server --dh /etc/openvpn/easy-rsa/keys/dh2048.pem --ca /etc/openvpn/easy-rsa/keys/ca.crt --cert /etc/openvpn/easy-rsa/keys/server.crt --key /etc/openvpn/easy-rsa/keys/server.key --reneg-sec 60 --verb 5
Klient:
openvpn --remote SERVER_IP --dev tun1 --ifconfig 10.9.8.2 10.9.8.1 --tls-client --ca /etc/openvpn/easy-rsa/keys/ca.crt --cert /etc/openvpn/easy-rsa/keys/clientname.crt --key /etc/openvpn/easy-rsa/keys/clientname.key --reneg-sec 60 --verb 5
Jeśli połączenie się powiedzie, utwórz konfigurację pliku.
Na serwerze utwórz /etc/openvpn/server.conf następująco:
port 1194 proto udp dev tun ca /etc/openvpn/easy-rsa/keys/ca.crt # generated keys cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key # keep secret dh /etc/openvpn/easy-rsa/keys/dh2048.pem server 10.9.8.0 255.255.255.0 # internal tun0 connection IP ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo # Compression - must be turned on at both end persist-key persist-tun status log/openvpn-status.log verb 3 # verbose mode client-to-client
Sprawdź code.mixpanel.com VPN i rackspace OpenVPN po więcej szczegółów.
Utwórz katalog dzienników:
# cd /etc/openvpn # mkdir -p log/ # touch log/openvpn-status.log
Uruchom ponownie OpenVPN (pamiętaj, że /etc/init.d/openvpn skrypt uruchamia serwer openvpn dla każdego pliku .conf w /etc/openvpn/, więc jeśli nadal masz plik tun0.conf z powyższego, zmień jego nazwę na coś innego niż * .conf):
# /etc/init.d/openvpn restart
W kliencie tworzysz /etc/openvpn/client.conf jak następująco:
(Uwaga: możesz użyć graficznego interfejsu menedżera sieciowego narzędzia vpn, dostarczając klucz i certyfikaty)
client dev tun port 1194 proto udp remote VPNSERVER_IP 1194 # VPN server IP : PORT nobind ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/clientname.crt key /etc/openvpn/easy-rsa/keys/clientname.key comp-lzo persist-key persist-tun verb 3
Restartuj OpenVPN:
# /etc/init.d/openvpn restart
Serwer Debian z urządzeniami Android / iOS
OpenVPN może być skonfigurowany do używania z urządzeniami Android / iO.
Na serwerze Debian utworzyć wymagane certyfikaty, jeśli masz nową instalację OpenVPN:
# cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 # . ./vars # ./clean-all # ./build-ca # ./build-key-server server # ./build-key client # ./build-dh # cd keys # mv *.pem *.crt *.csr *.key /etc/openvpn # cd /usr/share/doc/openvpn/examples/sample-config-files # gunzip -c server.conf.gz > /etc/openvpn/server.conf
Modyfikuj poniżej wierszy w /etc/openvpn/server.conf:
... proto tcp push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" user nobody group nogroup ...
8.8.8.8 to serwer Google DNS. Możesz zmienić na preferowany serwer DNS.
Po zakończeniu uruchom ponownie serwer OpenVPN, aby użyć nowej konfiguracji:
# /etc/init.d/openvpn restart
Utwórz plik profilu klienta /etc/openvpn/client.ovpn i dołącz do niego certyfikaty:
# cd /etc/openvpn # cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf client.ovpn # echo "key-direction 1" >> client.ovpn # echo "<ca>" >> client.ovpn # cat ca.crt | grep -A 100 "BEGIN CERTIFICATE" | grep -B 100 "END CERTIFICATE" >> client.ovpn # echo "</ca>" >> client.ovpn # echo "<cert>" >> client.ovpn # cat client.crt | grep -A 100 "BEGIN CERTIFICATE" | grep -B 100 "END CERTIFICATE" >> client.ovpn # echo "</cert>" >> client.ovpn # echo "<key>" >> client.ovpn # cat client.key | grep -A 100 "BEGIN PRIVATE KEY" | grep -B 100 "END PRIVATE KEY" >> client.ovpn # echo "</key>" >> client.ovpn
Modyfikuj poniższe linie w pliku profilu klienta /etc/openvpn/client.ovpn:
... proto tcp remote YourServerIp YourServerPort mute-replay-warnings # ca ca.crt # cert client.crt # key client.key key-direction 1 ...
Gdzie ?YourServerIp i ?YourServerPort powinny zostać zmienione na serwer. Trzy wiersze (#ca, #cert, #key) są oznaczone jako wymagane certyfikaty zostały dołączone do pliku profilu zamiast poszczególnych plików.
Wyślij e-maila lub załaduj do Google Drive plik konfiguracyjny klienta /etc/openvpn/client.ovpn aby go pobrać na iPhone.
Dla urządzeń iOS zainstaluj klienta OpenVPN Connect. Następnie prześlij plik konfiguracyjny klienta /etc/openvpn/client.ovpn do urządzenia pocztą e-mail lub na Dysku Google. Otwórz plik konfiguracyjny w aplikacji Poczta lub aplikacje Dysk Google.
Dla urządzeń Android zainstaluj klienta OpenVPN Connect. Następnie skopiuj plik konfiguracyjny klienta /etc/openvpn/client.ovpn do pamięci urządzenia. Otwórz plik konfiguracyjny w aplikacjach OpenVPN.
Przekazywanie ruchu przez VPN
W serwerze włącz przekierowanie IP w czasie pracy:
echo 1 > /proc/sys/net/ipv4/ip_forward
Edytuj /etc/sysctl.conf , aby zmiany stały się trwałe:
net.ipv4.ip_forward = 1
Wykonaj następujące polecenie na serwerze do testów:
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -s 10.9.8.0/24 -o eth0 -j ACCEPT iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -o eth0 -j MASQUERADE
Możesz także użyć skryptu rc.firewall-iptables z TLDP Masquerade jako alternatywę.
W kliencie:
# ip route add VPNSERVER_IP via LOCALGATEWAY_IP dev eth0 proto static # ip route change default via 10.9.8.5 dev tun0 proto static //client tun0 10.9.8.5
Jeśli zazwyczaj używasz klienta graficznego, może nie być konieczne wykonanie tej komendy.
Jeśli wszystko działa poprawnie, zapisz reguły iptables:
# iptables-save > /etc/iptables.up.rules
Żeby przywrócić:
# iptables-restore < /etc/iptables.up.rules
Dodaj to do skryptu startowego. Odwiedź stronę Debian wiki iptables po szczegóły.
Uruchamianie automatyczne
Domyślnie wszystkie skonfigurowane sieci VPN są uruchamiane podczas rozruchu systemu. Edytuj /etc/default/openvpn, aby uruchomić określone sieci VPN lub wyłączyć to zachowanie. Użytkownicy systemu mogą potrzebować Uruchom ponownie systemcat-daemon-reload, aby włączyć nowe sieci VPN.
openvpn Haki ifupdown są również dostępne do uruchamiania/zatrzymywania tuneli używających /etc/network/interfaces np.:
auto dsl iface dsl inet ppp provider dsl-provider openvpn work_vpn
Zobacz /usr/share/doc/openvpn/README.Debian.gz po więcej informacji.
Aplikacja VPN przechodząca przez proxy http
W tej części opisano, jak konfigurować VPN, aby przejść przez proxy http, które umożliwiają tylko dostęp do portu 443 (i 80). Użyj tego protokołu http_proxy OpenVPN.
- Przede wszystkim sprawdź, czy port 443 nie jest już używany przez inną usługę na Twoim serwerze.
Konfiguruj OpenVPN po stronie serwera, dodając port 443 i proto tcp-server do pliku konfiguracyjnego.
- Konfiguruj OpenVPN po stronie klienta, dodając do pliku konfiguracyjnego "port 443", "proto tcp-client" i "http-proxy 1.1.1.1 8080".
Gdzie 1.1.1.1 i 8080 to IP i port Twojego proxy.
- Teraz należy uruchomić OpenVPN na serwerze, a następnie na komputerze klienckim.
- W tej chwili należy skonfigurować trasy do korzystania z tunelu VPN:
Usuń domyślną trasę przez proxy: route default default eth0
Dodaj domyślną trasę przez VPN: route add default gw 10.9.8.1 dev tun0
- Powinieneś zachować trasę do serwera proxy: "route add 1.1.1.1 eth0"
Zaktualizuj plik /etc/resolv.conf zgodnie z Twoimi potrzebami.
TODO
Wyjaśnij, jak włączyć interfejs zarządzania (http://openvpn.net/index.php/open-source/documentation/miscellaneous/79-management-interface.html)