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.

  1. Prepričajte se, da je ca.crt prisoten tako na odjemalcu kot na strežniku.
  2. Ključ ca.key mora biti na odjemalcu.
  3. Strežnik zahteva server.crt, dh4096.pem, server.key in ta.key.
  4. 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