OpenVPN-server og klientinstallasjon og konfigurasjon på Debian 7


Denne artikkelen beskriver hvordan du får IPv6-tilkobling på OpenVPN ved å bruke Debian Linux. Prosessen har blitt testet på Debian 7 på en KVM VPS med IPv6-tilkobling som server, og en Debian 7-stasjonær. Kommandoene skal kjøres som root.

Hva er OpenVPN?

OpenVPN er et VPN-program som bruker SSL/TLS til å lage sikre, krypterte VPN-tilkoblinger, for å rute Internett-trafikken din, og dermed forhindre snoking. Open VPN er svært i stand til å gå gjennom brannmurer på en transparent måte. Faktisk, hvis situasjonen krever det, kan du kjøre den på samme TCP-port som HTTPS (443), noe som gjør trafikken umulig å skille og dermed praktisk talt umulig å blokkere.

OpenVPN kan bruke en rekke metoder som forhåndsdelte hemmelige nøkler, sertifikater eller brukernavn/passord for å la klienter autentisere seg til serveren. OpenVPN bruker OpenSSL-protokollen og implementerer mange sikkerhets- og kontrollfunksjoner som autentisering av utfordringssvar, mulighet for enkel pålogging, lastbalansering og failover-funksjoner og støtte for flere daemoner.

Hvorfor bruke OpenVPN?

Tenk sikker kommunikasjon – tenk OpenVPN. Hvis du ikke vil at noen skal snoke på Internett-trafikken din, bruk OpenVPN til å rute all trafikken din gjennom en svært kryptert, sikker tunnel.

Dette er spesielt viktig ved tilkobling til offentlige WIFI-nettverk på flyplasser og andre steder. Du kan aldri være sikker på hvem som snoker på trafikken din. Du kan kanalisere trafikken din gjennom din egen OpenVPN-server for å forhindre snoking.

Hvis du er i noen av landene som rutinemessig overvåker all trafikken din og blokkerer nettsteder etter ønske, kan du bruke OpenVPN over TCP-port 443 for å gjøre det umulig å skille fra HTTPS-trafikk. Du kan til og med kombinere OpenVPN med andre sikkerhetsstrategier som å tunnelere OpenVPN-trafikken din over en SSL-tunnel, for å slå Deep Packet Inspection-teknikker som kan være i stand til å identifisere OpenVPN-signaturer.

Systemkrav

OpenVPN krever svært minimale krav for å kjøre. Et system med 64 MB RAM og 1 GB HDD plass er nok til å kjøre OpenVPN. OpenVPN kjører på nesten alle de vanlige operativsystemene.

Installasjon og konfigurasjon av OpenVPN på Debian 7

Installer OpenVPN på Master Server

Kjør følgende kommando for å installere OpenVPN.

apt-get install openvpn

Som standard er easy-rsa-skriptene installert under «/usr/share/easy-rsa/»-katalogen. Så vi må kopiere disse skriptene til ønsket plassering, dvs. /root/easy-rsa.

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

Generer CA-sertifikat og CA-nøkkel

Åpne filen «vars» og gjør følgende endringer, men før du gjør endringer foreslår jeg at du tar sikkerhetskopi av originalfilen.

cp vars{,.orig}

Bruk tekstredigeringsprogrammet til å sette opp standardverdiene for easy-rsa. For eksempel.

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

Her bruker jeg en 4096 bits nøkkel. Du kan bruke en 1024, 2048, 4096 eller 8192 bit nøkkel etter ønske.

Eksporter standardverdiene ved å kjøre kommandoen.

source ./vars

Rydd opp i alle sertifikater som ble generert tidligere.

./clean-all

Deretter kjører du følgende kommando for å generere CA-sertifikat og CA-nøkkel.

./build-ca

Generer serversertifikatet ved å kjøre kommandoen. Bytt ut "servernavnet" med servernavnet ditt.

./build-key-server server-name

Generer Diffie Hellman PEM-sertifikatet.

./build-dh

Generer klientsertifikatet. Bytt ut "klientnavnet" med ditt klientnavn.

./build-key client-name

Generer HMAC-koden.

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

Kopier sertifikatene til klient- og servermaskinene som følger.

  1. Sørg for at ca.crt finnes på både klienten og serveren.
  2. ca.key-nøkkelen skal være på klienten.
  3. Serveren krever server.crt, dh4096.pem, server.key og ta.key.
  4. client.crt, client.key og ta.key skal være på klienten.

For å sette opp nøklene og sertifikatene på serveren, kjør kommandoene.

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/

Konfigurere OpenVPN Server

Nå må du konfigurere OpenVPN-serveren. Åpne filen '/etc/openvpn/server.conf'. Vennligst foreta endringer som beskrevet nedenfor.

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

Aktiver IP-videresending på serveren.

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

Kjør følgende kommando for å sette opp OpenVPN til å starte ved oppstart.

update-rc.d -f openvpn defaults

Start OpenVPN-tjenesten.

service openvpn restart

Installer OpenVPN på klienten

Kjør følgende kommando for å installere OpenVPN på klientmaskinen.

apt-get install openvpn

Bruk et tekstredigeringsprogram, konfigurer OpenVPN-klientkonfigurasjonen i ‘/etc/openvpn/client.conf’, på klienten. Et eksempel på konfigurasjonen er som følger:

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

Kjør følgende kommando for å sette opp OpenVPN til å starte ved oppstart.

update-rc.d -f openvpn defaults

Start OpenVPN-tjenesten på klienten.

service openvpn restart

Når du er fornøyd med at OpenVPN kjører bra på IPv4, er det her hvordan du får IPv6 til å fungere over OpenVPN.

Få IPv6 til å fungere med OpenVPN på server

Legg til følgende linjer på slutten av serverkonfigurasjonsfilen «/etc/openvpn/server.conf».

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

Disse to skriptene bygger/ødelegger IPv6-tunnelen hver gang en klient kobler til/fra.

Her er innholdet til 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

Verten min tildeler meg IPV6-adresser fra 2a00:dd80:003d:000c::/64-blokken. Derfor bruker jeg
2a00:dd80:003d:000c som BASERANGE. Endre denne verdien i henhold til hva verten din har tildelt deg.

Hver gang en klient kobler til OpenVPN, tildeler dette skriptet adressen 2a00:dd80:003d:000c:1001::1 somIPV6-adressen til tap0< grensesnittet til serveren.

Den siste linjen setter opp Neighbour Discovery for tunnelen vår. Jeg har lagt til IPv6-adressen til tap0-tilkoblingen på klientsiden som proxy-adresse.

Her er innholdet på client-disconnect.sh.

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

Dette sletter bare IPv6-tunneladressen til serveren når klienten kobler fra. Endre verdien til BASERANGE etter behov.

Gjør skriptene kjørbare.

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

Legg til følgende oppføringer i ‘/etc/rc.local’ (Du kan også endre de riktige sysctlene i /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

Disse oppføringene aktiverer Neighbor Discovery and Forwarding. Jeg har også lagt til en brannmur.

Opprett «/etc/init.d/firewall» og legg inn følgende innhold.

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

Kjør ‘/etc/rc.local‘ og start brannmuren.

sh /etc/rc.local

Dette fullfører endringene på serversiden.

Få IPv6 til å fungere med OpenVPN på klienten

Legg til følgende som de siste linjene i klientkonfigurasjonsfilen «/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

Opp- og ned-skriptene bygger/ødelegger IPV6-klientens sluttpunkter for klientens tap0-tilkobling hver gang en klient kobler til/frakobler til eller fra OpenVPN-serveren.

Her er innholdet i 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

Skriptet tildeler IPV6-adressen 2a00:dd80:3d:c:1001::2 som klientens IPV6-adresse og angir standard IPV6-rute gjennom serveren.

Endre IPV6BASE til å være det samme som BASERANGE i serverkonfigurasjonen.

Her er innholdet i 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

Dette sletter bare IPV6-adressen til klienten og river IPV6-ruten når klienten kobler fra serveren.

Endre IPV6BASE til å være det samme som BASERANGE i serverkonfigurasjonen og gjør skriptet kjørbart.

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

Eventuelt kan du endre '/etc/resolv.conf' og legge til Googles IPV6-navneservere for DNS-oppløsning.

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

Start openvpn på nytt på serveren og koble til den fra klienten. Du bør være tilkoblet. Besøk test-ipv6.com for å se at IPV6-tilkoblingen din over OpenVPN fungerer.

Referanselenker

OpenVPN-hjemmesiden

Kilde: stavrovski