Wyszukiwanie w witrynie

Instalacja i konfiguracja serwera i klienta OpenVPN w Debianie 7


W tym artykule szczegółowo opisano, jak uzyskać łączność IPv6 w OpenVPN przy użyciu Debian Linux. Proces został przetestowany na Debianie 7 na KVM VPS z łącznością IPv6 jako serwerem i na komputerze stacjonarnym Debian 7. Polecenia należy uruchamiać jako root.

Co to jest OpenVPN?

OpenVPN to program VPN, który wykorzystuje protokół SSL/TLS do tworzenia bezpiecznych, szyfrowanych połączeń VPN w celu kierowania ruchu internetowego, zapobiegając w ten sposób szpiegowaniu. Otwarta sieć VPN ma duże możliwości przejrzystego przechodzenia przez zapory sieciowe. Tak naprawdę, jeśli sytuacja tego wymaga, możesz uruchomić go na tym samym porcie TCP co HTTPS (443), dzięki czemu ruch będzie nierozróżnialny i przez to praktycznie niemożliwy do zablokowania.

OpenVPN może korzystać z różnych metod, takich jak wstępnie udostępnione tajne klucze, certyfikaty lub nazwy użytkowników/hasła, aby umożliwić klientom uwierzytelnianie na serwerze. OpenVPN korzysta z protokołu OpenSSL i implementuje wiele funkcji bezpieczeństwa i kontroli, takich jak uwierzytelnianie w odpowiedzi na wyzwanie, możliwość pojedynczego logowania, równoważenie obciążenia i funkcje przełączania awaryjnego oraz obsługa wielu demonów.

Dlaczego warto korzystać z OpenVPN?

Pomyśl o bezpiecznej komunikacji – pomyśl o OpenVPN. Jeśli nie chcesz, aby ktokolwiek szpiegował Twój ruch internetowy, użyj OpenVPN, aby przekierować cały ruch przez wysoce zaszyfrowany, bezpieczny tunel.

Jest to szczególnie ważne w przypadku łączenia się z publicznymi sieciami Wi-Fi na lotniskach i w innych miejscach. Nigdy nie możesz być pewien, kto szpieguje Twój ruch. Możesz skierować swój ruch przez własny serwer OpenVPN, aby zapobiec szpiegowaniu.

Jeśli znajdujesz się w którymkolwiek z krajów, które rutynowo monitorują cały Twój ruch i dowolnie blokują strony internetowe, możesz używać OpenVPN przez port TCP 443, aby nie do odróżnienia od ruchu HTTPS. Możesz nawet połączyć OpenVPN z innymi strategiami bezpieczeństwa, takimi jak tunelowanie ruchu OpenVPN przez tunel SSL, aby pokonać techniki głębokiej inspekcji pakietów, które mogą być w stanie zidentyfikować sygnatury OpenVPN.

wymagania systemowe

OpenVPN wymaga bardzo minimalnych wymagań do działania. Do uruchomienia OpenVPN wystarczy system z 64 MB RAM i 1 GB HDD. OpenVPN działa na prawie wszystkich popularnych systemach operacyjnych.

Instalacja i konfiguracja OpenVPN na Debianie 7

Zainstaluj OpenVPN na serwerze głównym

Uruchom następujące polecenie, aby zainstalować OpenVPN.

apt-get install openvpn

Domyślnie skrypty easy-rsa są instalowane w katalogu „/usr/share/easy-rsa/”. Musimy więc skopiować te skrypty do wybranej lokalizacji, tj. /root/easy-rsa.

mkdir /root/easy-rsa
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa

Wygeneruj certyfikat CA i klucz CA

Otwórz plik „vars” i dokonaj następujących zmian, ale przed wprowadzeniem zmian sugeruję wykonanie kopii zapasowej oryginalnego pliku.

cp vars{,.orig}

Używając edytora tekstu, skonfiguruj wartości domyślne dla easy-rsa. Na przykład.

KEY_SIZE=4096
KEY_COUNTRY="IN"
KEY_PROVINCE="UP"
KEY_CITY="Noida"
KEY_ORG="Home"
KEY_EMAIL="[email "

Tutaj używam klucza 4096-bitowego. W razie potrzeby możesz użyć klucza 1024, 2048, 4096 lub 8192 bitowego.

Wyeksportuj wartości domyślne, uruchamiając polecenie.

source ./vars

Wyczyść wszystkie certyfikaty, które zostały wcześniej wygenerowane.

./clean-all

Następnie uruchom następujące polecenie, aby wygenerować certyfikat CA i klucz CA.

./build-ca

Wygeneruj certyfikat serwera, uruchamiając komendę. Zastąp „nazwę serwera” nazwą swojego serwera.

./build-key-server server-name

Wygeneruj certyfikat Diffie Hellman PEM.

./build-dh

Wygeneruj certyfikat klienta. Zastąp „nazwę klienta” swoją nazwą klienta.

./build-key client-name

Wygeneruj kod HMAC.

openvpn --genkey --secret /root/easy-rsa/keys/ta.key

Skopiuj certyfikaty na komputery klienckie i serwerowe w następujący sposób.

  1. Upewnij się, że plik ca.crt jest obecny zarówno na kliencie, jak i na serwerze.
  2. Klucz ca.key powinien znajdować się na kliencie.
  3. Serwer wymaga plików server.crt, dh4096.pem, server.key i ta.key.
  4. client.crt, client.key i ta.key powinny znajdować się na kliencie.

Aby skonfigurować klucze i certyfikaty na serwerze, uruchom polecenia.

mkdir -p /etc/openvpn/certs
cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/

Konfiguracja serwera OpenVPN

Teraz musisz skonfigurować serwer OpenVPN. Otwórz plik „/etc/openvpn/server.conf”. Proszę wprowadzić zmiany w sposób opisany poniżej.

script security 3 system
port 1194
proto udp
dev tap

ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server-name.crt
key /etc/openvpn/certs/server-name.key
dh /etc/openvpn/certs/dh4096.pem
tls-auth /etc/openvpn/certs/ta.key 0

server 192.168.88.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

keepalive 1800 4000

cipher DES-EDE3-CBC # Triple-DES
comp-lzo

max-clients 10

user nobody
group nogroup

persist-key
persist-tun

#log openvpn.log
#status openvpn-status.log
verb 5
mute 20

Włącz przekazywanie IP na serwerze.

echo 1 > /proc/sys/net/ipv4/ip_forward

Uruchom następujące polecenie, aby skonfigurować OpenVPN tak, aby uruchamiał się podczas rozruchu.

update-rc.d -f openvpn defaults

Uruchom usługę OpenVPN.

service openvpn restart

Zainstaluj OpenVPN na kliencie

Uruchom następujące polecenie, aby zainstalować OpenVPN na komputerze klienckim.

apt-get install openvpn

Za pomocą edytora tekstu skonfiguruj konfigurację klienta OpenVPN w „/etc/openvpn/client.conf” na kliencie. Przykładowa konfiguracja wygląda następująco:

script security 3 system
client
remote vpn_server_ip
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/client.crt
key /etc/openvpn/certs/client.key
cipher DES-EDE3-CBC
comp-lzo yes
dev tap
proto udp
tls-auth /etc/openvpn/certs/ta.key 1
nobind
auth-nocache
persist-key
persist-tun
user nobody
group nogroup

Uruchom następujące polecenie, aby skonfigurować OpenVPN tak, aby uruchamiał się podczas rozruchu.

update-rc.d -f openvpn defaults

Uruchom usługę OpenVPN na kliencie.

service openvpn restart

Gdy już będziesz pewien, że OpenVPN działa dobrze na IPv4, oto jak sprawić, by IPv6 działał w OpenVPN.

Uzyskanie współpracy IPv6 z OpenVPN na serwerze

Dodaj następujące wiersze na końcu pliku konfiguracyjnego serwera „/etc/openvpn/server.conf”.

client-connect /etc/openvpn/client-connect.sh
client-disconnect /etc/openvpn/client-disconnect.sh

Te dwa skrypty budują/niszczą tunel IPv6 za każdym razem, gdy klient się łączy/rozłącza.

Oto zawartość pliku client-connect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
ifconfig $dev up
ifconfig $dev add ${BASERANGE}:1001::1/64
ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
exit 0

Mój host przydziela mi adresy IPV6 z bloku 2a00:dd80:003d:000c::/64. Dlatego używam
2a00:dd80:003d:000c jako KIERUNEK BAZOWY. Zmodyfikuj tę wartość zgodnie z tym, co przypisał Ci Twój gospodarz.

Za każdym razem, gdy klient łączy się z OpenVPN, ten skrypt przypisuje adres 2a00:dd80:003d:000c:1001::1 jako adres IPV6 elementu tap0< interfejs serwera.

Ostatnia linia konfiguruje Neighbor Discovery dla naszego tunelu. Dodałem adres IPv6 połączenia tap0 po stronie klienta jako adres proxy.

Oto zawartość pliku client-disconnect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
/sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
exit 0

Spowoduje to po prostu usunięcie adresu tunelu IPv6 serwera, gdy klient się rozłączy. Zmodyfikuj odpowiednio wartość BASERANGE.

Spraw, aby skrypty były wykonywalne.

chmod 700 /etc/openvpn/client-connect.sh
chmod 700 /etc/openvpn/client-disconnect.sh

Dodaj następujące wpisy do „/etc/rc.local” (możesz także zmodyfikować odpowiednie pliki sysctl w /etc/sysctl.conf).

echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
/etc/init.d/firewall stop && /etc/init.d/firewall start

Te wpisy aktywują wykrywanie sąsiadów i przekazywanie. Dodałem także zaporę sieciową.

Utwórz plik „/etc/init.d/firewall” i umieść w nim następującą treść.

#!/bin/sh
description: Firewall
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
case "$1" in
start)
$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
$IPT -A INPUT -i tap+ -j ACCEPT
$IPT -A FORWARD -i tap+ -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -F POSTROUTING
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$IPT -A INPUT -i eth0 -j DROP
$IPT6 -F INPUT
$IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
$IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
$IPT6 -A INPUT -i eth0 -j DROP
exit 0
;;
stop)
$IPT -F
$IPT6 -F
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac

Uruchom „/etc/rc.local” i uruchom zaporę ogniową.

sh /etc/rc.local

To kończy modyfikacje po stronie serwera.

Uzyskiwanie współpracy IPv6 z OpenVPN na kliencie

Dodaj następujące wiersze jako ostatnie wiersze pliku konfiguracyjnego klienta „/etc/openvpn/client.conf”.

create the ipv6 tunnel
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh
need this so when the client disconnects it tells the server
explicit-exit-notify

Skrypty w górę i w dół budują/niszczą punkty końcowe klienta IPV6 połączenia tap0 klienta za każdym razem, gdy klient łączy się/rozłącza z serwerem OpenVPN lub z nim.

Oto zawartość pliku up.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
ifconfig $dev up
ifconfig $dev add ${IPV6BASE}:1001::2/64
ip -6 route add default via ${IPV6BASE}:1001::1
exit 0

Skrypt przypisuje adres IPV6 2a00:dd80:3d:c:1001::2 jako adres IPV6 klienta i ustawia domyślną trasę IPV6 przez serwer.

Zmodyfikuj IPV6BASE tak, aby był taki sam jak BASERANGE w konfiguracji serwera.

Oto zawartość down.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
/sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
/sbin/ip link set dev $dev down
/sbin/ip route del ::/0 via ${IPV6BASE}::1
exit 0

Spowoduje to po prostu usunięcie adresu IPV6 klienta i zerwanie trasy IPV6, gdy klient rozłączy się z serwerem.

Zmodyfikuj IPV6BASE tak, aby był taki sam jak BASERANGE w konfiguracji serwera i spraw, aby skrypt był wykonywalny.

chmod 700 /etc/openvpn/up.sh
chmod 700 /etc/openvpn/down.sh

Opcjonalnie zmodyfikuj plik „/etc/resolv.conf” i dodaj serwery nazw IPV6 firmy Google do rozpoznawania DNS.

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

Uruchom ponownie openvpn na serwerze, a następnie połącz się z nim z poziomu klienta. Powinieneś być podłączony. Odwiedź test-ipv6.com, aby sprawdzić, czy Twoja łączność IPV6 przez OpenVPN działa.

Linki referencyjne

Strona główna OpenVPN

Źródło: stavrovski