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.
- Sørg for at ca.crt finnes på både klienten og serveren.
- ca.key-nøkkelen skal være på klienten.
- Serveren krever server.crt, dh4096.pem, server.key og ta.key.
- 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