OpenVPN-palvelimen ja -asiakkaan asennus ja konfigurointi Debian 7:ssä


Tässä artikkelissa kerrotaan, kuinka saat IPv6-yhteyden OpenVPN-verkkoon käyttämällä Debian Linuxia. Prosessi on testattu Debian 7:llä KVM VPS:llä, jossa on IPv6-yhteys palvelimena, ja Debian 7 -työpöydällä. Komennot tulee suorittaa root-käyttäjänä.

Mikä on OpenVPN?

OpenVPN on VPN-ohjelma, joka käyttää SSL/TLS:ää luomaan turvallisia, salattuja VPN-yhteyksiä, reitittämään Internet-liikennettäsi, mikä estää nuuskimisen. Avoin VPN pystyy erittäin hyvin kulkemaan läpinäkyvästi palomuurien läpi. Itse asiassa, jos tilanne sitä vaatii, voit käyttää sitä samassa TCP-portissa kuin HTTPS (443), jolloin liikenne on erottamaton ja siten käytännössä mahdoton estää.

OpenVPN voi käyttää useita menetelmiä, kuten ennalta jaettuja salaisia avaimia, varmenteita tai käyttäjänimiä/salasanoja, jotta asiakkaat voivat todentaa palvelimelle. OpenVPN käyttää OpenSSL-protokollaa ja toteuttaa monia suojaus- ja ohjausominaisuuksia, kuten haastevastaustodennusta, kertakirjautumisominaisuutta, kuormituksen tasapainotus- ja vikasietoominaisuuksia sekä usean demonin tuki.

Miksi käyttää OpenVPN:ää?

Ajattele turvallista viestintää – ajattele OpenVPN:ää. Jos et halua kenenkään nuuskivan Internet-liikennettäsi, käytä OpenVPN:ää reitittämään kaikki liikenteesi erittäin salatun, suojatun tunnelin läpi.

Tämä on erityisen tärkeää yhdistettäessä julkisiin WIFI-verkkoihin lentokentillä ja muissa paikoissa. Et voi koskaan olla varma siitä, kuka nuuskii liikennettäsi. Voit kanavoida liikennettä oman OpenVPN-palvelimesi kautta nuuskimisen estämiseksi.

Jos olet jossakin niistä maista, jotka valvovat rutiininomaisesti kaikkea liikennettäsi ja estävät verkkosivustoja halutessasi, voit käyttää OpenVPN:ää TCP-portin 443 kautta, jotta se ei erottuisi HTTPS-liikenteestä. Voit jopa yhdistää OpenVPN:n muihin tietoturvastrategioihin, kuten OpenVPN-liikenteen tunnelointiin SSL-tunnelin kautta, voittaaksesi Deep Packet Inspection -tekniikat, jotka saattavat pystyä tunnistamaan OpenVPN-allekirjoitukset.

Laitteistovaatimukset

OpenVPN vaatii erittäin vähän vaatimuksia toimiakseen. Järjestelmä, jossa on 64 Mt RAM-muistia ja 1 Gt kiintolevytilaa, riittää OpenVPN:n käyttämiseen. OpenVPN toimii lähes kaikissa yleisimmissä käyttöjärjestelmissä.

OpenVPN:n asennus ja konfigurointi Debian 7:ssä

Asenna OpenVPN Master Serveriin

Asenna OpenVPN suorittamalla seuraava komento.

apt-get install openvpn

Oletusarvoisesti easy-rsa-skriptit asennetaan hakemistoon /usr/share/easy-rsa/. Joten meidän on kopioitava nämä skriptit haluttuun paikkaan, eli /root/easy-rsa.

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

Luo CA-sertifikaatti ja CA-avain

Avaa tiedosto vars ja tee seuraavat muutokset, mutta ennen muutosten tekemistä suosittelen, että otat varmuuskopion alkuperäisestä tiedostosta.

cp vars{,.orig}

Määritä easy-rsa:n oletusarvot tekstieditorillasi. Esimerkiksi.

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

Tässä käytän 4096-bittistä avainta. Voit käyttää 1024-, 2048-, 4096- tai 8192-bittistä avainta haluamallasi tavalla.

Vie oletusarvot suorittamalla komento.

source ./vars

Puhdista kaikki aiemmin luodut varmenteet.

./clean-all

Luo seuraavaksi CA-varmenne ja CA-avain suorittamalla seuraava komento.

./build-ca

Luo palvelinvarmenne suorittamalla komento. Korvaa "palvelimen nimi" palvelimesi nimellä.

./build-key-server server-name

Luo Diffie Hellman PEM -sertifikaatti.

./build-dh

Luo asiakassertifikaatti. Korvaa "asiakkaan nimi" asiakkaan nimellä.

./build-key client-name

Luo HMAC-koodi.

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

Kopioi varmenteet asiakas- ja palvelinkoneille seuraavasti.

  1. Varmista, että ca.crt on sekä asiakaskoneessa että palvelimessa.
  2. ca.key-avaimen tulee olla asiakassovelluksessa.
  3. Palvelin vaatii server.crt, dh4096.pem, server.key ja ta.key.
  4. client.crt, client.key ja ta.key pitäisi olla asiakassovelluksessa.

Määritä avaimet ja varmenteet palvelimelle suorittamalla komennot.

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-palvelimen määrittäminen

Nyt sinun on määritettävä OpenVPN-palvelin. Avaa tiedosto /etc/openvpn/server.conf. Tee muutokset alla kuvatulla tavalla.

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

Ota IP-lähetys käyttöön palvelimella.

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

Suorita seuraava komento asettaaksesi OpenVPN käynnistymään käynnistyksen yhteydessä.

update-rc.d -f openvpn defaults

Käynnistä OpenVPN-palvelu.

service openvpn restart

Asenna OpenVPN asiakaskoneeseen

Suorita seuraava komento asentaaksesi OpenVPN asiakaskoneeseen.

apt-get install openvpn

Määritä OpenVPN-asiakasmääritykset tekstieditorilla asiakkaan tiedostossa /etc/openvpn/client.conf. Esimerkki kokoonpanosta on seuraava:

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

Suorita seuraava komento asettaaksesi OpenVPN käynnistymään käynnistyksen yhteydessä.

update-rc.d -f openvpn defaults

Käynnistä OpenVPN-palvelu asiakkaalla.

service openvpn restart

Kun olet varma, että OpenVPN toimii hyvin IPv4:ssä, voit saada IPv6:n toimimaan OpenVPN:n kanssa seuraavasti.

IPv6:n saaminen toimimaan OpenVPN:n kanssa palvelimella

Lisää seuraavat rivit palvelimen /etc/openvpn/server.conf-tiedoston loppuun.

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

Nämä kaksi komentosarjaa rakentavat/tuhoavat IPv6-tunnelin joka kerta, kun asiakas muodostaa yhteyden tai katkaisee yhteyden.

Tässä on client-connect.sh:n sisältö.

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

Isäntäni määrittää minulle IPV6-osoitteet 2a00:dd80:003d:000c::/64-lohkosta. Siksi käytän
2a00:dd80:003d:000c BASERANGE-arvona. Muokkaa tätä arvoa sen mukaan, mitä isäntäsi on sinulle määrittänyt.

Aina kun asiakas muodostaa yhteyden OpenVPN:ään, tämä komentosarja määrittää osoitteen 2a00:dd80:003d:000c:1001::1 tap0<:n IPV6-osoitteeksi. palvelimen käyttöliittymä.

Viimeinen rivi asettaa Neighbor Discoveryn tunneliimme. Olen lisännyt asiakaspuolen tap0-yhteyden IPv6-osoitteen välityspalvelimen osoitteeksi.

Tässä on client-disconnect.sh-tiedoston sisältö.

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

Tämä vain poistaa palvelimen IPv6-tunneliosoitteen, kun asiakas katkaisee yhteyden. Muokkaa BASERANGE-arvoa tarpeen mukaan.

Tee skriptit suoritettaviksi.

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

Lisää seuraavat merkinnät kohtaan '/etc/rc.local' (Voit myös muokata asianmukaisia sysctl-tiedostoja tiedostossa /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

Nämä merkinnät aktivoivat naapurin etsinnän ja edelleenlähetyksen. Lisäsin myös palomuurin.

Luo /etc/init.d/firewall ja lisää seuraava sisältö.

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

Suorita '/etc/rc.local' ja käynnistä palomuuri.

sh /etc/rc.local

Tämä suorittaa palvelinpuolen muutokset.

IPv6:n saaminen toimimaan OpenVPN:n kanssa asiakassovelluksessa

Lisää seuraavat rivit asiakkaan määritystiedoston '/etc/openvpn/client.conf' viimeisiksi riveiksi.

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

Ylös- ja alas-skriptit rakentavat/tuhoavat asiakkaan tap0-yhteyden IPV6-asiakaspäätepisteet aina, kun asiakas muodostaa yhteyden OpenVPN-palvelimeen tai katkaisee yhteyden siitä.

Tässä on up.sh:n sisältö.

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

Komentosarja määrittää IPV6-osoitteen 2a00:dd80:3d:c:1001::2 asiakkaan IPV6-osoitteeksi ja määrittää oletusarvoisen IPV6-reitin palvelimen kautta.

Muokkaa IPV6BASE olemaan sama kuin BASERANGE palvelimen asetuksissa.

Tässä on down.sh:n sisältö.

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

Tämä vain poistaa asiakkaan IPV6-osoitteen ja purkaa IPV6-reitin, kun asiakas katkaisee yhteyden palvelimeen.

Muokkaa IPV6BASE samaksi kuin BASERANGE palvelimen asetuksissa ja tee komentosarjasta suoritettava.

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

Vaihtoehtoisesti muokkaa /etc/resolv.conf-tiedostoa ja lisää Googlen IPV6-nimipalvelimet DNS-selvitystä varten.

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

Käynnistä openvpn uudelleen palvelimella ja muodosta sitten yhteys siihen asiakkaalta. Sinun pitäisi olla yhteydessä. Käy osoitteessa test-ipv6.com nähdäksesi, että IPV6-yhteytesi OpenVPN:n kautta toimii.

Viitelinkit

OpenVPN-kotisivu

Lähde: stavrovski