OpenVPN Server og klientinstallation og konfiguration på Debian 7
Denne artikel beskriver, hvordan man opnår IPv6-forbindelse på OpenVPN ved hjælp af Debian Linux. Processen er testet på Debian 7 på en KVM VPS med IPv6-forbindelse som server og et Debian 7-skrivebord. Kommandoerne skal køres som root.
OpenVPN er et VPN-program, der bruger SSL/TLS til at oprette sikre, krypterede VPN-forbindelser for at dirigere din internettrafik og dermed forhindre snooping. Open VPN er meget i stand til gennemsigtig gennemkørsel af firewalls. Faktisk, hvis situationen kræver det, kan du køre den på den samme TCP-port som HTTPS (443), hvilket gør trafikken umulig at skelne mellem og dermed næsten umulig at blokere.
OpenVPN kan bruge en række forskellige metoder som forud delte hemmelige nøgler, certifikater eller brugernavne/adgangskoder for at lade klienter godkende sig til serveren. OpenVPN bruger OpenSSL-protokollen og implementerer mange sikkerheds- og kontrolfunktioner såsom udfordringsresponsgodkendelse, single sign-on-kapacitet, belastningsbalancering og failover-funktioner og multi-dæmonsupport.
Tænk sikker kommunikation - tænk OpenVPN. Hvis du ikke vil have nogen, der snoker på din internettrafik, skal du bruge OpenVPN til at dirigere al din trafik gennem en meget krypteret, sikker tunnel.
Dette er især vigtigt, når du opretter forbindelse til offentlige WIFI-netværk i lufthavne og andre steder. Du kan aldrig være sikker på, hvem der snyder på din trafik. Du kan kanalisere din trafik gennem din egen OpenVPN-server for at forhindre snooping.
Hvis du er i et af de lande, der rutinemæssigt overvåger al din trafik og blokerer websteder efter ønske, kan du bruge OpenVPN over TCP-port 443 for at gøre det skelnes ikke fra HTTPS-trafik. Du kan endda kombinere OpenVPN med andre sikkerhedsstrategier som at tunnele din OpenVPN-trafik over en SSL-tunnel for at slå Deep Packet Inspection-teknikker, der muligvis kan identificere OpenVPN-signaturer.
OpenVPN kræver meget minimale krav for at køre. Et system med 64 MB RAM og 1 GB harddiskplads er nok til at køre OpenVPN. OpenVPN kører på næsten alle de almindelige operativsystemer.
Installation og konfiguration af OpenVPN på Debian 7
Kør følgende kommando for at installere OpenVPN.
# apt-get install openvpn
Som standard er easy-rsa-scripts installeret under mappen '/ usr/share/easy-rsa /'. Så vi er nødt til at kopiere disse scripts til den ønskede placering, dvs./root/easy-rsa.
# mkdir /root/easy-rsa cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa
Åbn filen 'vars' og foretag følgende ændringer, men inden du foretager ændringer, foreslår jeg, at du tager sikkerhedskopi af den originale fil.
# cp vars{,.orig}
Brug din teksteditor til at indstille standardværdierne til easy-rsa. For eksempel.
KEY_SIZE=4096 KEY_COUNTRY="IN" KEY_PROVINCE="UP" KEY_CITY="Noida" KEY_ORG="Home" KEY_EMAIL="[email "
Her bruger jeg en 4096 bit-nøgle. Du kan bruge en 1024, 2048, 4096 eller 8192 bit nøgle efter ønske.
Eksporter standardværdierne ved at køre kommandoen.
# source ./vars
Ryd op i certifikater, der blev genereret tidligere.
./clean-all
Kør derefter følgende kommando for at generere CA-certifikat og CA-nøgle.
# ./build-ca
Generer servercertifikatet ved at køre kommandoen. Udskift 'servernavnet' med dit servernavn.
# ./build-key-server server-name
Generer Diffie Hellman PEM-certifikatet.
# ./build-dh
Generer klientcertifikatet. Udskift 'klientnavn' med dit klientnavn.
# ./build-key client-name
Generer HMAC-koden.
# openvpn --genkey --secret /root/easy-rsa/keys/ta.key
Kopier certifikaterne til klient- og servermaskinerne som følger.
- Sørg for, at ca.crt findes på både klienten og serveren.
- Ca.-tasten skal være på klienten.
- Serveren kræver server.crt, dh4096.pem, server.key og ta.key.
- client.crt, client.key og ta.key skal være på klienten.
For at konfigurere nøglerne og certifikaterne på serveren skal du køre kommandoerne.
# 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/
Nu skal du konfigurere OpenVPN-serveren. Åbn filen '/etc/openvpn/server.conf'. Foretag ændringer 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
Aktivér IP-videresendelse på serveren.
# echo 1 > /proc/sys/net/ipv4/ip_forward
Kør følgende kommando for at konfigurere OpenVPN til start ved opstart.
# update-rc.d -f openvpn defaults
Start OpenVPN-tjenesten.
# service openvpn restart
Kør følgende kommando for at installere OpenVPN på klientmaskinen.
# apt-get install openvpn
Brug en teksteditor til at konfigurere OpenVPN-klientkonfigurationen i '/etc/openvpn/client.conf' på klienten. Et eksempel på konfiguration 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
Kør følgende kommando for at konfigurere OpenVPN til start ved opstart.
# update-rc.d -f openvpn defaults
Start OpenVPN-tjenesten på klienten.
# service openvpn restart
Når du er tilfreds med, at OpenVPN kører godt på IPv4, er det her, hvordan du får IPv6 til at fungere over OpenVPN.
Tilføj de følgende linjer til slutningen af serverkonfigurationen '/etc/openvpn/server.conf' fil.
client-connect /etc/openvpn/client-connect.sh client-disconnect /etc/openvpn/client-disconnect.sh
Disse to scripts bygger/ødelægger IPv6-tunnelen, hver gang en klient tilslutter/afbryder forbindelsen.
Her er indholdet af 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
Min vært tildeler mig IPV6-adresser fra 2a00: dd80: 003d: 000c ::/64-blokken. Derfor bruger jeg
2a00: dd80: 003d: 000c som BASERANGE. Rediger denne værdi efter det, din vært har tildelt dig.
Hver gang en klient opretter forbindelse til OpenVPN, tildeler dette script adressen 2a00: dd80: 003d: 000c: 1001 :: 1 som IPV6-adressen på tap0-grænsefladen på serveren.
Den sidste linje opretter Neighbor Discovery til vores tunnel. Jeg har tilføjet IPv6-adressen på klientsiden tap0-forbindelse som proxy-adresse.
Her er indholdet af 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 serverens IPv6-tunneladresse, når klienten afbryder forbindelsen. Rediger værdien af BASERANGE efter behov.
Gør scripts eksekverbare.
# chmod 700 /etc/openvpn/client-connect.sh # chmod 700 /etc/openvpn/client-disconnect.sh
Føj følgende poster til ‘/etc/rc.local’ (Du kan også ændre de relevante sysctls 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 poster aktiverer naboopdagelse og videresendelse. Jeg har også tilføjet en firewall.
Opret ‘/etc/init.d/firewall’ og læg følgende indhold i.
#!/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
Kør ‘/etc/rc.local’ og start firewallen.
# sh /etc/rc.local
Dette afslutter modifikationerne på serversiden.
Tilføj følgende som de sidste linjer i din klientkonfigurationsfil '/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
Op- og ned-scripts bygger/ødelægger IPV6-klientens slutpunkter for klientens tap0-forbindelse, hver gang en klient tilslutter/afbryder forbindelse til eller fra OpenVPN-serveren.
Her er indholdet af 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
Scriptet tildeler IPV6-adressen 2a00: dd80: 3d: c: 1001 :: 2 som klientens IPV6-adresse og indstiller IPV6-standardruten gennem serveren.
Ændr IPV6BASE, så den er den samme som BASERANGE i serverkonfigurationen.
Her er indholdet af 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 på klienten og nedbryder IPV6-ruten, når klienten afbryder forbindelsen fra serveren.
Rediger IPV6BASE, så den er den samme som BASERANGE i serverkonfigurationen, og gør scriptet eksekverbart.
# chmod 700 /etc/openvpn/up.sh # chmod 700 /etc/openvpn/down.sh
Du kan eventuelt ændre '/etc/resolv.conf' og tilføje Googles IPV6-navneservere til DNS-opløsning.
nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844
Genstart openvpn på serveren og opret forbindelse til det fra klienten. Du skal være forbundet. Besøg test-ipv6.com for at se, at din IPV6-forbindelse over OpenVPN fungerer.
Reference Links
OpenVPN-hjemmeside