OpenVPN Server a Client Installatioun a Konfiguratioun op Debian 7


Dësen Artikel detailléiert wéi Dir IPv6 Konnektivitéit op OpenVPN kritt mat Debian Linux. De Prozess gouf op Debian 7 op engem KVM VPS mat IPv6 Konnektivitéit als Server getest, an engem Debian 7 Desktop. D'Befehle sollen als Root lafen.

OpenVPN ass e VPN Programm deen SSL/TLS benotzt fir sécher, verschlësselte VPN Verbindungen ze kreéieren, fir Ären Internetverkéier ze routen, sou datt d'Snooping verhënnert gëtt. Open VPN ass héich fäeg fir transparent duerch Firewalls ze goen. Tatsächlech, wann d'Situatioun et erfuerdert, kënnt Dir et um selwechten TCP Hafen wéi HTTPS (443) lafen, sou datt de Verkéier net z'ënnerscheeden an doduerch quasi onméiglech ass ze blockéieren.

OpenVPN kann eng Vielfalt vu Methoden benotzen wéi pre-shared geheime Schlësselen, Certificaten oder Benotzernimm/Passwierder, fir Clienten op de Server ze authentifizéieren. OpenVPN benotzt den OpenSSL Protokoll an implementéiert vill Sécherheets- a Kontrollfeatures wéi Challenge Response Authentifikatioun, Single Sign-on Kapazitéit, Laaschtbalancéierung a Failover Feature a Multi Daemon Support.

Denkt sécher Kommunikatiounen - denkt OpenVPN. Wann Dir kee wëllt datt iergendeen op Ären Internetverkéier snoopt, benotzt OpenVPN fir all Äre Traffic duerch en héich verschlësselten, sécheren Tunnel ze routen.

Dëst ass besonnesch wichteg wann Dir mat ëffentleche WIFI Netzwierker op Fluchhäfen an op anere Plazen verbënnt. Dir kënnt ni sécher sinn, wien op Äre Traffic snoopt. Dir kënnt Äre Traffic duerch Ären eegene OpenVPN Server kanaliséieren fir Snooping ze vermeiden.

Wann Dir an engem vun de Länner sidd, déi routinéiert all Äre Traffic iwwerwaachen an Websäite blockéieren op Wëllen, kënnt Dir OpenVPN iwwer TCP Port 443 benotzen, fir et net z'ënnerscheeden vum HTTPS Traffic. Dir kënnt souguer OpenVPN mat anere Sécherheetsstrategien kombinéieren wéi Ären OpenVPN Traffic iwwer en SSL Tunnel ze tunneléieren, fir Deep Packet Inspection Techniken ze schloen déi fäeg sinn OpenVPN Ënnerschrëften z'identifizéieren.

OpenVPN erfuerdert ganz minimal Ufuerderunge fir ze lafen. E System mat 64 MB RAM an 1 GB HDD Plaz ass genuch fir OpenVPN ze lafen. OpenVPN leeft op bal all Mainstream Betribssystemer.

Installatioun an Konfiguratioun vun OpenVPN op Debian 7

Fëllt de folgende Kommando aus fir OpenVPN z'installéieren.

# apt-get install openvpn

Par défaut sinn d'Easy-rsa Scripten ënner '/usr/share/easy-rsa/' Verzeechnes installéiert. Also musse mir dës Skripte op déi gewënschte Plaz kopéieren, dh /root/easy-rsa.

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

Öffnet Datei 'vars' a maacht déi folgend Ännerungen, awer ier Dir Ännerunge maacht, proposéiere ech Iech e Backup vun der ursprénglecher Datei ze huelen.

# cp vars{,.orig}

Benotzt Ären Texteditor, setzt d'Standardwäerter fir easy-rsa op. Zum Beispill.

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

Hei benotzen ech e 4096 Bit Schlëssel. Dir kënnt e 1024, 2048, 4096 oder 8192 Bit Schlëssel benotzen wéi Dir wëllt.

Export d'Standardwäerter andeems Dir de Kommando ausféiert.

# source ./vars

Botzen all Certificaten déi virdru generéiert goufen.

./clean-all

Als nächst, fuert de folgende Kommando fir CA Zertifikat an CA Schlëssel ze generéieren.

# ./build-ca

Generéiere de Serverzertifika andeems Dir de Kommando ausféiert. Ersetzt den 'Servernumm' mat Ärem Servernumm.

# ./build-key-server server-name

Generéiere den Diffie Hellman PEM Zertifika.

# ./build-dh

Generéiere de Client Zertifikat. Ersetzt den 'Clientnumm' mat Ärem Clientnumm.

# ./build-key client-name

Generéiere den HMAC Code.

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

Kopéiert d'Zertifikater op de Client a Servermaschinn wéi follegt.

  1. Vergewëssert Iech datt de ca.crt souwuel um Client wéi och um Server präsent ass.
  2. De ca.key Schlëssel soll um Client sinn.
  3. De Server erfuerdert server.crt, dh4096.pem, server.key an ta.key.
  4. client.crt, client.key an ta.key sollen um Client sinn.

Fir d'Schlësselen an d'Zertifikater um Server opzestellen, lafen d'Befehle.

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

Elo musst Dir den OpenVPN Server konfiguréieren. Open Datei '/etc/openvpn/server.conf'. Maacht weg Ännerungen wéi hei ënnendrënner beschriwwen.

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

Aktivéiert IP Forwarding um Server.

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

Fëllt de folgende Kommando aus fir OpenVPN opzestellen fir beim Boot ze starten.

# update-rc.d -f openvpn defaults

Start OpenVPN Service.

# service openvpn restart

Fëllt de folgende Kommando aus fir OpenVPN op der Clientmaschinn z'installéieren.

# apt-get install openvpn

Mat engem Texteditor, setze d'OpenVPN Client Konfiguratioun an '/etc/openvpn/client.conf', um Client op. E Beispill Konfiguratioun ass wéi follegt:

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ëllt de folgende Kommando aus fir OpenVPN opzestellen fir beim Boot ze starten.

# update-rc.d -f openvpn defaults

Start OpenVPN Service um Client.

# service openvpn restart

Wann Dir zefridden sidd datt OpenVPN gutt op IPv4 leeft, hei ass wéi Dir IPv6 iwwer OpenVPN funktionnéiert.

Füügt déi folgend Zeilen un d'Enn vun der Serverkonfiguratioun '/etc/openvpn/server.conf' Datei.

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

Dës zwee Skripte bauen/zerstéieren den IPv6 Tunnel all Kéier wann e Client verbënnt/trennt.

Hei ass den Inhalt vu 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äi Host gëtt mir IPV6 Adressen aus dem 2a00:dd80:003d:000c ::/64 Block zou. Dofir benotzen ech
2a00:dd80:003d:000c als BASERANGE. Ännert dëse Wäert no deem wat Ären Host Iech zougewisen huet.

All Kéier wann e Client mat OpenVPN verbënnt, gëtt dëst Skript d'Adress 2a00: dd80: 003d: 000c: 1001 :: 1 als IPV6 Adress vun der tap0 Interface vum Server zou.

Déi lescht Linn setzt Neighbor Discovery fir eisen Tunnel op. Ech hunn d'IPv6 Adress vun der Client Säit Tap0 Verbindung als Proxy Adress bäigefüügt.

Hei ass den Inhalt vu client-disconnect.sh.

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

Dëst läscht just d'IPv6 Tunnel Adress vum Server, wann de Client trennt. Änneren de Wäert vun BASERANGE wéi entspriechend.

Maacht d'Skripte ausféierbar.

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

Füügt déi folgend Entréen op '/etc/rc.local' (Dir kënnt och déi entspriechend sysctls an /etc/sysctl.conf änneren).

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

Dës Entréen aktivéieren Neighbor Discovery and Forwarding. Ech hunn och eng Firewall dobäigesat.

Erstellt '/etc/init.d/firewall' a setzt de folgenden Inhalt.

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

Run '/etc/rc.local' a fänkt d'Firewall un.

# sh /etc/rc.local

Dëst fäerdeg de Server Säit Ännerungen.

Füügt déi folgend als déi lescht Zeilen vun Ärem Client Konfiguratiounsdatei '/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

D'up an down Scripte bauen/zerstéieren d'IPV6 Client Endpunkte vun der Client tap0 Verbindung all Kéier wann e Client verbënnt/trennt op oder vum OpenVPN Server.

Hei ass den Inhalt vun 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

De Skript gëtt d'IPV6 Adress 2a00: dd80: 3d: c: 1001 :: 2 als Client IPV6 Adress a setzt den Standard IPV6 Wee duerch de Server.

Änneren IPV6BASE fir d'selwecht wéi BASERANGE an der Serverkonfiguratioun ze sinn.

Hei ass den Inhalt vun 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

Dëst läscht just d'IPV6 Adress vum Client an räissen d'IPV6 Streck erof wann de Client vum Server trennt.

Änneren IPV6BASE fir d'selwecht wéi BASERANGE an der Serverkonfiguratioun ze sinn an de Skript ausféierbar ze maachen.

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

Optional, ännert '/etc/resolv.conf' a füügt de Google IPV6 Nummserver fir DNS-Resolutioun derbäi.

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

Restart openvpn um Server a verbënnt dann mat dem Client. Dir sollt verbonne sinn. Besicht test-ipv6.com fir ze kucken datt Är IPV6 Konnektivitéit iwwer OpenVPN funktionnéiert.

Referenz Linken

OpenVPN Homepage