Namestitev in konfiguracija strežnika in odjemalca OpenVPN v Debianu 7
Ta članek podrobno opisuje, kako pridobiti povezljivost IPv6 na OpenVPN z uporabo Debian Linuxa. Postopek je bil preizkušen na Debianu 7 na KVM VPS s povezljivostjo IPv6 kot strežnik in namizju Debian 7. Ukaze je treba zagnati kot root.
OpenVPN je program VPN, ki uporablja SSL/TLS za ustvarjanje varnih, šifriranih povezav VPN za usmerjanje vašega internetnega prometa in tako preprečuje vohljanje. Odprti VPN je zelo sposoben transparentnega prehajanja skozi požarne zidove. Dejansko ga lahko, če razmere to zahtevajo, zaženete na istih vratih TCP kot HTTPS (443), zaradi česar se promet ne razlikuje in ga tako rekoč ni mogoče blokirati.
OpenVPN lahko z različnimi metodami, kot so vnaprej deljeni skrivni ključi, potrdila ali uporabniška imena/gesla, omogoči odjemalcem, da se overjajo na strežniku. OpenVPN uporablja protokol OpenSSL in izvaja številne varnostne in nadzorne funkcije, kot so preverjanje pristnosti odziva na izzive, zmožnost enotne prijave, funkcije uravnoteženja obremenitve in odpovedi ter podpora za več demonov.
Pomislite na varne komunikacije - pomislite na OpenVPN. Če ne želite, da bi kdo vohljal po vašem internetnem prometu, uporabite OpenVPN za usmerjanje celotnega prometa skozi visoko šifriran, varen predor.
To je še posebej pomembno pri povezovanju z javnimi omrežji WIFI na letališčih in drugih krajih. Nikoli ne morete biti prepričani, kdo vam vohlja po prometu. Svoj promet lahko usmerite prek lastnega strežnika OpenVPN, da preprečite vohljanje.
Če ste v kateri od držav, ki redno spremljajo ves vaš promet in po lastni želji blokirajo spletna mesta, lahko uporabite OpenVPN prek vrat TCP 443, da ga ne boste ločili od prometa HTTPS. OpenVPN lahko celo kombinirate z drugimi varnostnimi strategijami, kot je predvajanje prometa OpenVPN prek tunela SSL, da premagate tehnike globokega pregleda paketov, ki bi lahko prepoznale podpise OpenVPN.
OpenVPN za zagon zahteva zelo minimalne zahteve. Za zagon OpenVPN zadostuje sistem s 64 MB RAM-a in 1 GB prostora na trdem disku. OpenVPN deluje v skoraj vseh običajnih operacijskih sistemih.
Namestitev in konfiguracija OpenVPN v Debianu 7
Zaženite naslednji ukaz, da namestite OpenVPN.
# apt-get install openvpn
Skripti easy-rsa so privzeto nameščeni v imeniku ‘/ usr/share/easy-rsa /’. Torej, te skripte moramo kopirati na želeno mesto, tj./Root/easy-rsa.
# mkdir /root/easy-rsa cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa
Odprite datoteko 'vars' in izvedite naslednje spremembe, vendar pred spremembami predlagam, da naredite varnostno kopijo izvirne datoteke.
# cp vars{,.orig}
Z urejevalnikom besedil nastavite privzete vrednosti za easy-rsa. Na primer.
KEY_SIZE=4096 KEY_COUNTRY="IN" KEY_PROVINCE="UP" KEY_CITY="Noida" KEY_ORG="Home" KEY_EMAIL="[email "
Tukaj uporabljam 4096-bitni ključ. Po želji lahko uporabite 1024, 2048, 4096 ali 8192 bitni ključ.
Izvozite privzete vrednosti z zagonom ukaza.
# source ./vars
Počistite predhodno ustvarjena potrdila.
./clean-all
Nato zaženite naslednji ukaz, da ustvarite potrdilo CA in ključ CA.
# ./build-ca
Z zagonom ukaza ustvarite potrdilo strežnika. Nadomestite "ime strežnika" s svojim imenom strežnika.
# ./build-key-server server-name
Ustvarite certifikat Diffie Hellman PEM.
# ./build-dh
Ustvari potrdilo odjemalca. Nadomestite "ime stranke" z imenom vašega odjemalca.
# ./build-key client-name
Ustvari kodo HMAC.
# openvpn --genkey --secret /root/easy-rsa/keys/ta.key
Kopirajte potrdila v odjemalske in strežniške stroje, kot sledi.
- Prepričajte se, da je ca.crt prisoten tako na odjemalcu kot na strežniku.
- Ključ ca.key mora biti na odjemalcu.
- Strežnik zahteva server.crt, dh4096.pem, server.key in ta.key.
- client.crt, client.key in ta.key naj bodo na odjemalcu.
Če želite na strežniku nastaviti ključe in potrdila, zaženite ukaze.
# 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/
Zdaj morate konfigurirati strežnik OpenVPN. Odprite datoteko ‘/etc/openvpn/server.conf’. Izvedite spremembe, kot je opisano spodaj.
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
Omogoči posredovanje IP na strežniku.
# echo 1 > /proc/sys/net/ipv4/ip_forward
Zaženite naslednji ukaz, da nastavite OpenVPN za zagon ob zagonu.
# update-rc.d -f openvpn defaults
Zaženite storitev OpenVPN.
# service openvpn restart
Zaženite naslednji ukaz, da namestite OpenVPN na odjemalski računalnik.
# apt-get install openvpn
Z urejevalnikom besedila v odjemalcu nastavite konfiguracijo odjemalca OpenVPN v '/etc/openvpn/client.conf'. Primer konfiguracije je naslednji:
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
Zaženite naslednji ukaz, da nastavite OpenVPN za zagon ob zagonu.
# update-rc.d -f openvpn defaults
Zaženite storitev OpenVPN na odjemalcu.
# service openvpn restart
Ko se prepričate, da OpenVPN dobro deluje na IPv4, tukaj je opisano, kako IPv6 deluje prek OpenVPN.
Na konec datoteke konfiguracije strežnika ‘/etc/openvpn/server.conf’ dodajte naslednje vrstice.
client-connect /etc/openvpn/client-connect.sh client-disconnect /etc/openvpn/client-disconnect.sh
Ta dva skripta zgradita/uničita tunel IPv6 vsakič, ko se odjemalec poveže/prekine.
Tukaj je vsebina 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
Gostitelj mi dodeli naslove IPV6 iz bloka 2a00: dd80: 003d: 000c ::/64. Zato uporabljam
2a00: dd80: 003d: 000c kot BASERANGE. Prilagodite to vrednost glede na to, kar vam je dodelil gostitelj.
Vsakič, ko se odjemalec poveže z OpenVPN, ta skript dodeli naslov 2a00: dd80: 003d: 000c: 1001 :: 1 kot naslov IPV6 vmesnika tap0 strežnika.
Zadnja vrstica postavlja Neighbor Discovery za naš predor. Kot naslov posrednika sem dodal naslov IPv6 odjemalske povezave tap0.
Tu je vsebina client-disconnect.sh.
#!/bin/bash BASERANGE="2a00:dd80:003d:000c" /sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev exit 0
To samo izbriše naslov tunela IPv6 strežnika, ko odjemalec prekine povezavo. Po potrebi spremenite vrednost BASERANGE.
Skripte naj bodo izvršljive.
# chmod 700 /etc/openvpn/client-connect.sh # chmod 700 /etc/openvpn/client-disconnect.sh
V „/etc/rc.local“ dodajte naslednje vnose (ustrezne sysctle lahko spremenite tudi v /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
Ti vnosi aktivirajo odkrivanje in posredovanje sosedov. Dodal sem tudi požarni zid.
Ustvarite '/etc/init.d/firewall' in vstavite naslednjo vsebino.
#!/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
Zaženite "/etc/rc.local" in zaženite požarni zid.
# sh /etc/rc.local
S tem so dokončane spremembe na strani strežnika.
Kot zadnje vrstice konfiguracijske datoteke odjemalca ‘/etc/openvpn/client.conf’ dodajte naslednje.
# 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
Skripti gor in dol gradijo/uničujejo končne točke odjemalca IPV6 odjemalske povezave tap0 vsakič, ko se odjemalec poveže/odklopi s strežnikom OpenVPN ali iz njega.
Tu je vsebina 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
Skript dodeli naslov IPV6 2a00: dd80: 3d: c: 1001 :: 2 kot naslov odjemalca IP in nastavi privzeto pot IPV6 skozi strežnik.
Spremenite IPV6BASE, da bo enak kot BASERANGE v konfiguraciji strežnika.
Tukaj je vsebina 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
S tem samo izbrišete naslov IPV6 odjemalca in razčlenite pot IPV6, ko se odjemalec odklopi od strežnika.
Spremenite IPV6BASE, da bo enak BASERANGE v konfiguraciji strežnika, in naredite skript izvršljiv.
# chmod 700 /etc/openvpn/up.sh # chmod 700 /etc/openvpn/down.sh
Po želji spremenite »/etc/resolv.conf« in dodajte Googlove strežnike imen IPV6 za ločljivost DNS.
nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844
Znova zaženite openvpn na strežniku in se nato nanj povežite s stranko. Moral bi biti povezan. Obiščite test-ipv6.com in se prepričajte, da vaša povezljivost IPV6 prek OpenVPN deluje.
Referenčne povezave
Domača stran OpenVPN