„OpenVPN“ serverio ir kliento diegimas ir konfigūravimas „Debian 7“.


Šiame straipsnyje išsamiai aprašoma, kaip gauti IPv6 ryšį naudojant OpenVPN naudojant Debian Linux. Procesas buvo išbandytas naudojant Debian 7, naudojant KVM VPS su IPv6 ryšiu kaip serveriu ir Debian 7 darbalaukyje. Komandos turi būti vykdomos kaip root.

Kas yra OpenVPN?

OpenVPN yra VPN programa, kuri naudoja SSL/TLS saugiems, šifruotiems VPN ryšiams kurti, interneto srautui nukreipti ir taip užkirsti kelią šnipinėjimui. Atviras VPN puikiai gali skaidriai pereiti per užkardas. Tiesą sakant, jei to reikalauja situacija, galite paleisti jį tame pačiame TCP prievade kaip ir HTTPS (443), todėl srautas tampa neatskiriamas, todėl jo blokuoti praktiškai neįmanoma.

OpenVPN gali naudoti įvairius metodus, pvz., iš anksto bendrinamus slaptuosius raktus, sertifikatus arba naudotojų vardus/slaptažodžius, kad klientai galėtų autentifikuoti serverį. „OpenVPN“ naudoja „OpenSSL“ protokolą ir įdiegia daugybę saugos ir valdymo funkcijų, tokių kaip atsako į iššūkius autentifikavimas, vieno prisijungimo galimybė, apkrovos balansavimo ir perkrovos funkcijos bei kelių demonų palaikymas.

Kodėl verta naudoti OpenVPN?

Pagalvokite apie saugų ryšį – galvokite apie „OpenVPN“. Jei nenorite, kad kas nors šnipinėtų jūsų interneto srautą, naudokite OpenVPN, kad nukreiptumėte visą srautą per labai šifruotą, saugų tunelį.

Tai ypač svarbu jungiantis prie viešųjų WIFI tinklų oro uostuose ir kitose vietose. Niekada negalite būti tikri, kas šnipinėja jūsų srautą. Galite nukreipti srautą per savo „OpenVPN“ serverį, kad išvengtumėte šnipinėjimo.

Jei esate kurioje nors iš šalių, kurios reguliariai stebi visą srautą ir blokuoja svetaines savo nuožiūra, galite naudoti OpenVPN per TCP prievadą 443, kad jis nesiskirtų nuo HTTPS srauto. Jūs netgi galite derinti „OpenVPN“ su kitomis saugos strategijomis, pvz., „OpenVPN“ srauto tuneliu per SSL tunelį, kad įveiktumėte giluminio paketo tikrinimo metodus, kurie gali identifikuoti „OpenVPN“ parašus.

Sistemos reikalavimai

„OpenVPN“ paleidimui reikalingi labai minimalūs reikalavimai. Sistemos su 64 MB RAM ir 1 GB HDD vietos pakanka OpenVPN paleisti. „OpenVPN“ veikia beveik visose pagrindinėse operacinėse sistemose.

„OpenVPN“ diegimas ir konfigūravimas „Debian 7“.

Įdiekite „OpenVPN“ pagrindiniame serveryje

Vykdykite šią komandą, kad įdiegtumėte OpenVPN.

apt-get install openvpn

Pagal numatytuosius nustatymus „easy-rsa“ scenarijai įdiegiami kataloge „/usr/share/easy-rsa/“. Taigi, turime nukopijuoti šiuos scenarijus į norimą vietą, pvz., /root/easy-rsa.

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

Sukurkite CA sertifikatą ir CA raktą

Atidarykite failą „vars“ ir atlikite toliau nurodytus pakeitimus, tačiau prieš atliekant pakeitimus siūlau pasidaryti atsarginę pradinio failo kopiją.

cp vars{,.orig}

Naudodami teksto rengyklę, nustatykite numatytąsias easy-rsa reikšmes. Pavyzdžiui.

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

Čia aš naudoju 4096 bitų raktą. Jei norite, galite naudoti 1024, 2048, 4096 arba 8192 bitų raktą.

Eksportuokite numatytąsias reikšmes vykdydami komandą.

source ./vars

Išvalykite visus anksčiau sugeneruotus sertifikatus.

./clean-all

Tada paleiskite šią komandą, kad sugeneruotumėte CA sertifikatą ir CA raktą.

./build-ca

Sukurkite serverio sertifikatą vykdydami komandą. Pakeiskite „serverio pavadinimą“ savo serverio pavadinimu.

./build-key-server server-name

Sugeneruokite Diffie Hellman PEM sertifikatą.

./build-dh

Sukurkite kliento sertifikatą. Pakeiskite „kliento vardą“ savo kliento vardu.

./build-key client-name

Sugeneruokite HMAC kodą.

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

Nukopijuokite sertifikatus į kliento ir serverio įrenginius taip.

  1. Įsitikinkite, kad ca.crt yra ir kliente, ir serveryje.
  2. Raktas ca.key turi būti kliente.
  3. Serveriui reikia server.crt, dh4096.pem, server.key ir ta.key.
  4. client.crt, client.key ir ta.key turėtų būti kliente.

Norėdami nustatyti raktus ir sertifikatus serveryje, paleiskite komandas.

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/

„OpenVPN“ serverio konfigūravimas

Dabar reikia sukonfigūruoti OpenVPN serverį. Atidarykite failą „/etc/openvpn/server.conf“. Atlikite pakeitimus, kaip aprašyta toliau.

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

Įgalinti IP persiuntimą serveryje.

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

Vykdykite šią komandą, kad nustatytumėte OpenVPN, kad jis būtų paleistas įkrovos metu.

update-rc.d -f openvpn defaults

Paleiskite „OpenVPN“ paslaugą.

service openvpn restart

Įdiekite „OpenVPN“ kliente

Vykdykite šią komandą, kad įdiegtumėte OpenVPN kliento kompiuteryje.

apt-get install openvpn

Naudodami teksto rengyklę, kliento aplanke „/etc/openvpn/client.conf“ nustatykite „OpenVPN“ kliento konfigūraciją. Konfigūracijos pavyzdys yra toks:

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

Vykdykite šią komandą, kad nustatytumėte OpenVPN, kad jis būtų paleistas įkrovos metu.

update-rc.d -f openvpn defaults

Kliente paleiskite „OpenVPN“ paslaugą.

service openvpn restart

Kai įsitikinsite, kad OpenVPN gerai veikia IPv4, štai kaip priversti IPv6 veikti per OpenVPN.

IPv6 darbas su OpenVPN serveryje

Pridėkite šias eilutes prie serverio konfigūracijos failo „/etc/openvpn/server.conf“ pabaigos.

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

Šie du scenarijai sukuria/sunaikina IPv6 tunelį kiekvieną kartą, kai klientas prisijungia/atsijungia.

Čia yra client-connect.sh turinys.

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

Mano priegloba priskiria man IPV6 adresus iš 2a00:dd80:003d:000c::/64 bloko. Todėl naudoju
2a00:dd80:003d:000c kaip BASERANGE. Pakeiskite šią vertę pagal tai, ką jums priskyrė priegloba.

Kiekvieną kartą, kai klientas prisijungia prie OpenVPN, šis scenarijus priskiria adresą 2a00:dd80:003d:000c:1001::1 kaip IPV6 adresą tap0< serverio sąsają.

Paskutinė eilutė nustato mūsų tunelio kaimynų atradimą. Pridėjau kliento pusės tap0 ryšio IPv6 adresą kaip tarpinio serverio adresą.

Čia yra client-disconnect.sh turinys.

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

Tai tiesiog ištrina serverio IPv6 tunelio adresą, kai klientas atsijungia. Jei reikia, pakeiskite BASERANGE reikšmę.

Padarykite scenarijus vykdomus.

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

Pridėkite šiuos įrašus prie „/etc/rc.local“ (taip pat galite keisti atitinkamus sysctl adresu /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

Šie įrašai suaktyvina kaimynų aptikimą ir persiuntimą. Taip pat pridėjau ugniasienę.

Sukurkite „/etc/init.d/firewall“ ir įdėkite toliau nurodytą turinį.

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

Paleiskite „/etc/rc.local“ ir paleiskite užkardą.

sh /etc/rc.local

Tai užbaigia serverio pusės modifikacijas.

IPv6 darbas su „OpenVPN“ kliente

Pridėkite toliau nurodytas paskutines kliento konfigūracijos failo eilutes „/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

Scenarijai aukštyn ir žemyn sukuria/sunaikina kliento tap0 ryšio IPV6 kliento galinius taškus kiekvieną kartą, kai klientas prisijungia/atsijungia prie OpenVPN serverio arba nuo jo.

Čia yra up.sh turinys.

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

Scenarijus priskiria IPV6 adresą 2a00:dd80:3d:c:1001::2 kaip kliento IPV6 adresą ir nustato numatytąjį IPV6 maršrutą per serverį.

Serverio konfigūracijoje pakeiskite IPV6BASE, kad ji būtų tokia pati kaip BASERANGE.

Čia yra down.sh turinys.

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

Tai tiesiog ištrina kliento IPV6 adresą ir nutraukia IPV6 maršrutą, kai klientas atsijungia nuo serverio.

Serverio konfigūracijoje pakeiskite IPV6BASE, kad jis būtų toks pat kaip BASERANGE, ir padarykite scenarijų vykdomąjį.

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

Pasirinktinai pakeiskite „/etc/resolv.conf“ ir pridėkite „Google“ IPV6 vardų serverius, kad galėtumėte išspręsti DNS.

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

Iš naujo paleiskite openvpn serveryje ir prisijunkite prie jo iš kliento. Turėtumėte būti prisijungę. Apsilankykite adresu test-ipv6.com ir sužinokite, ar veikia jūsų IPV6 ryšys per OpenVPN.

Nuorodų nuorodos

„OpenVPN“ pagrindinis puslapis

Šaltinis: stavrovski