Website-Suche

Installation und Konfiguration von OpenVPN-Server und -Client unter Debian 7


In diesem Artikel erfahren Sie, wie Sie mit Debian Linux eine IPv6-Konnektivität auf OpenVPN erhalten. Der Prozess wurde unter Debian 7 auf einem KVM VPS mit IPv6-Konnektivität als Server und einem Debian 7-Desktop getestet. Die Befehle sind als Root auszuführen.

Was ist OpenVPN?

OpenVPN ist ein VPN-Programm, das SSL/TLS verwendet, um sichere, verschlüsselte VPN-Verbindungen zu erstellen, Ihren Internetverkehr weiterzuleiten und so Schnüffeln zu verhindern. Open VPN ist in hohem Maße in der Lage, Firewalls transparent zu passieren. Wenn es die Situation erfordert, können Sie es sogar auf demselben TCP-Port wie HTTPS (443) ausführen, wodurch der Datenverkehr nicht unterscheidbar und somit praktisch unmöglich zu blockieren ist.

OpenVPN kann eine Vielzahl von Methoden wie vorab freigegebene geheime Schlüssel, Zertifikate oder Benutzernamen/Passwörter verwenden, um Clients die Authentifizierung beim Server zu ermöglichen. OpenVPN verwendet das OpenSSL-Protokoll und implementiert zahlreiche Sicherheits- und Kontrollfunktionen wie Challenge-Response-Authentifizierung, Single-Sign-On-Funktion, Lastausgleichs- und Failover-Funktionen sowie Multi-Daemon-Unterstützung.

Warum OpenVPN verwenden?

Denken Sie an sichere Kommunikation – denken Sie an OpenVPN. Wenn Sie nicht möchten, dass jemand Ihren Internetverkehr ausspioniert, nutzen Sie OpenVPN, um Ihren gesamten Datenverkehr durch einen hochverschlüsselten, sicheren Tunnel zu leiten.

Dies ist besonders wichtig, wenn Sie eine Verbindung zu öffentlichen WLAN-Netzwerken an Flughäfen und anderen Orten herstellen. Sie können nie sicher sein, wer Ihren Datenverkehr ausspioniert. Sie können Ihren Datenverkehr über Ihren eigenen OpenVPN-Server leiten, um Schnüffeln vorzubeugen.

Wenn Sie sich in einem der Länder befinden, die Ihren gesamten Datenverkehr routinemäßig überwachen und Websites nach Belieben blockieren, können Sie OpenVPN über den TCP-Port 443 verwenden, um ihn nicht vom HTTPS-Datenverkehr zu unterscheiden. Sie können OpenVPN sogar mit anderen Sicherheitsstrategien kombinieren, wie z. B. dem Tunneln Ihres OpenVPN-Verkehrs über einen SSL-Tunnel, um Deep Packet Inspection-Techniken zu schlagen, die möglicherweise OpenVPN-Signaturen identifizieren können.

System Anforderungen

Für die Ausführung von OpenVPN sind nur minimale Anforderungen erforderlich. Ein System mit 64 MB RAM und 1 GB Festplattenspeicher reicht aus, um OpenVPN auszuführen. OpenVPN läuft auf fast allen gängigen Betriebssystemen.

Installation und Konfiguration von OpenVPN unter Debian 7

Installieren Sie OpenVPN auf dem Masterserver

Führen Sie den folgenden Befehl aus, um OpenVPN zu installieren.

apt-get install openvpn

Standardmäßig werden die easy-rsa-Skripte im Verzeichnis „/usr/share/easy-rsa/“ installiert. Daher müssen wir diese Skripte an den gewünschten Speicherort kopieren, z. B. /root/easy-rsa.

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

CA-Zertifikat und CA-Schlüssel generieren

Öffnen Sie die Datei „vars“ und nehmen Sie die folgenden Änderungen vor. Bevor Sie jedoch Änderungen vornehmen, empfehle ich Ihnen, eine Sicherungskopie der Originaldatei zu erstellen.

cp vars{,.orig}

Richten Sie mit Ihrem Texteditor die Standardwerte für easy-rsa ein. Zum Beispiel.

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

Hier verwende ich einen 4096-Bit-Schlüssel. Sie können je nach Wunsch einen 1024-, 2048-, 4096- oder 8192-Bit-Schlüssel verwenden.

Exportieren Sie die Standardwerte, indem Sie den Befehl ausführen.

source ./vars

Bereinigen Sie alle zuvor generierten Zertifikate.

./clean-all

Führen Sie als Nächstes den folgenden Befehl aus, um das CA-Zertifikat und den CA-Schlüssel zu generieren.

./build-ca

Generieren Sie das Serverzertifikat, indem Sie den Befehl ausführen. Ersetzen Sie den „Servernamen“ durch Ihren Servernamen.

./build-key-server server-name

Generieren Sie das Diffie Hellman PEM-Zertifikat.

./build-dh

Generieren Sie das Client-Zertifikat. Ersetzen Sie den „Kundennamen“ durch Ihren Kundennamen.

./build-key client-name

Generieren Sie den HMAC-Code.

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

Kopieren Sie die Zertifikate wie folgt auf die Client- und Servercomputer.

  1. Stellen Sie sicher, dass ca.crt sowohl auf dem Client als auch auf dem Server vorhanden ist.
  2. Der Schlüssel ca.key sollte sich auf dem Client befinden.
  3. Der Server benötigt server.crt, dh4096.pem, server.key und ta.key.
  4. client.crt, client.key und ta.key sollten sich auf dem Client befinden.

Führen Sie die Befehle aus, um die Schlüssel und Zertifikate auf dem Server einzurichten.

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/

Konfigurieren des OpenVPN-Servers

Jetzt müssen Sie den OpenVPN-Server konfigurieren. Öffnen Sie die Datei „/etc/openvpn/server.conf“. Bitte nehmen Sie die Änderungen wie unten beschrieben vor.

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

Aktivieren Sie die IP-Weiterleitung auf dem Server.

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

Führen Sie den folgenden Befehl aus, um OpenVPN so einzurichten, dass es beim Booten startet.

update-rc.d -f openvpn defaults

Starten Sie den OpenVPN-Dienst.

service openvpn restart

Installieren Sie OpenVPN auf dem Client

Führen Sie den folgenden Befehl aus, um OpenVPN auf dem Client-Computer zu installieren.

apt-get install openvpn

Richten Sie mit einem Texteditor die OpenVPN-Client-Konfiguration in „/etc/openvpn/client.conf“ auf dem Client ein. Eine Beispielkonfiguration sieht wie folgt aus:

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

Führen Sie den folgenden Befehl aus, um OpenVPN so einzurichten, dass es beim Booten startet.

update-rc.d -f openvpn defaults

Starten Sie den OpenVPN-Dienst auf dem Client.

service openvpn restart

Wenn Sie davon überzeugt sind, dass OpenVPN unter IPv4 gut läuft, erfahren Sie hier, wie Sie IPv6 über OpenVPN zum Laufen bringen.

IPv6 mit OpenVPN auf dem Server zum Laufen bringen

Fügen Sie die folgenden Zeilen am Ende der Serverkonfigurationsdatei „/etc/openvpn/server.conf“ hinzu.

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

Diese beiden Skripte bauen/zerstören den IPv6-Tunnel jedes Mal, wenn ein Client eine Verbindung herstellt/trennt.

Hier ist der Inhalt von 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

Mein Host weist mir IPV6-Adressen aus dem Block 2a00:dd80:003d:000c::/64 zu. Daher verwende ich
2a00:dd80:003d:000c als BASERANGE. Ändern Sie diesen Wert gemäß den Anweisungen Ihres Gastgebers.

Jedes Mal, wenn sich ein Client mit OpenVPN verbindet, weist dieses Skript die Adresse 2a00:dd80:003d:000c:1001::1 alsIPV6-Adresse des tap0< zu Schnittstelle des Servers.

Die letzte Zeile richtet Neighbor Discovery für unseren Tunnel ein. Ich habe die IPv6-Adresse der clientseitigen tap0-Verbindung als Proxy-Adresse hinzugefügt.

Hier ist der Inhalt von client-disconnect.sh.

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

Dadurch wird lediglich die IPv6-Tunneladresse des Servers gelöscht, wenn der Client die Verbindung trennt. Ändern Sie den Wert von BASERANGE entsprechend.

Machen Sie die Skripte ausführbar.

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

Fügen Sie die folgenden Einträge zu „/etc/rc.local“ hinzu (Sie können die entsprechenden Sysctls auch in /etc/sysctl.conf ändern).

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

Diese Einträge aktivieren Neighbor Discovery und Forwarding. Ich habe auch eine Firewall hinzugefügt.

Erstellen Sie „/etc/init.d/firewall“ und geben Sie den folgenden Inhalt ein.

#!/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

Führen Sie ‘/etc/rc.local‘ aus und starten Sie die Firewall.

sh /etc/rc.local

Damit sind die serverseitigen Änderungen abgeschlossen.

IPv6 mit OpenVPN auf dem Client zum Laufen bringen

Fügen Sie Folgendes als letzte Zeile Ihrer Client-Konfigurationsdatei „/etc/openvpn/client.conf“ hinzu.

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

Die Up- und Down-Skripte erstellen/zerstören die IPV6-Client-Endpunkte der Client-Tap0-Verbindung jedes Mal, wenn ein Client eine Verbindung zum oder von dem OpenVPN-Server herstellt bzw. trennt.

Hier ist der Inhalt von 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

Das Skript weist die IPV6-Adresse 2a00:dd80:3d:c:1001::2 als Client-IPV6-Adresse zu und legt die Standard-IPV6-Route über den Server fest.

Ändern Sie IPV6BASE so, dass es mit BASERANGE in der Serverkonfiguration übereinstimmt.

Hier ist der Inhalt von 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

Dadurch wird lediglich die IPV6-Adresse des Clients gelöscht und die IPV6-Route unterbrochen, wenn der Client die Verbindung zum Server trennt.

Ändern Sie IPV6BASE so, dass es mit BASERANGE in der Serverkonfiguration übereinstimmt, und machen Sie das Skript ausführbar.

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

Ändern Sie optional „/etc/resolv.conf“ und fügen Sie die IPV6-Nameserver von Google für die DNS-Auflösung hinzu.

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

Starten Sie openvpn auf dem Server neu und stellen Sie dann vom Client aus eine Verbindung her. Sie sollten verbunden sein. Besuchen Sie test-ipv6.com, um zu sehen, ob Ihre IPV6-Konnektivität über OpenVPN funktioniert.

Referenzlinks

OpenVPN-Homepage

Quelle: stavrovski