Vyhledávání na webu

Instalace a konfigurace OpenVPN serveru a klienta v Debianu 7


Tento článek podrobně popisuje, jak získat připojení IPv6 na OpenVPN pomocí Debian Linux. Proces byl testován na Debianu 7 na KVM VPS s připojením IPv6 jako server a na desktopu Debian 7. Příkazy se mají spouštět jako root.

Co je OpenVPN?

OpenVPN je program VPN, který používá SSL/TLS k vytváření bezpečných, šifrovaných připojení VPN, ke směrování vašeho internetového provozu, čímž zabraňuje snoopingu. Otevřená VPN je vysoce schopná transparentně procházet firewally. Ve skutečnosti, pokud to situace vyžaduje, můžete jej spustit na stejném TCP portu jako HTTPS (443), díky čemuž je provoz nerozlišitelný, a tudíž prakticky nemožné jej zablokovat.

OpenVPN může používat různé metody, jako jsou předem sdílené tajné klíče, certifikáty nebo uživatelská jména/hesla, aby se klienti mohli ověřit na serveru. OpenVPN používá protokol OpenSSL a implementuje mnoho bezpečnostních a kontrolních funkcí, jako je autentizace s odezvou na výzvu, možnost jednotného přihlášení, vyvažování zátěže a funkce převzetí služeb při selhání a podpora více démonů.

Proč používat OpenVPN?

Myslete na bezpečnou komunikaci – myslete na OpenVPN. Pokud nechcete, aby někdo šmíroval váš internetový provoz, použijte OpenVPN ke směrování veškerého provozu přes vysoce šifrovaný a bezpečný tunel.

To je důležité zejména při připojení k veřejným WIFI sítím na letištích a dalších místech. Nikdy si nemůžete být jisti, kdo váš provoz slídí. Svůj provoz můžete nasměrovat přes svůj vlastní server OpenVPN, abyste zabránili slídění.

Pokud se nacházíte v některé ze zemí, které běžně sledují veškerý váš provoz a blokují webové stránky podle libosti, můžete použít OpenVPN přes TCP port 443, aby bylo nerozeznatelné od provozu HTTPS. OpenVPN můžete dokonce kombinovat s dalšími bezpečnostními strategiemi, jako je tunelování vašeho provozu OpenVPN přes tunel SSL, abyste porazili techniky hluboké inspekce paketů, které by mohly být schopny identifikovat podpisy OpenVPN.

Požadavky na systém

OpenVPN vyžaduje ke spuštění velmi minimální požadavky. Ke spuštění OpenVPN stačí systém s 64 MB RAM a 1 GB HDD. OpenVPN běží na téměř všech běžných operačních systémech.

Instalace a konfigurace OpenVPN na Debianu 7

Nainstalujte OpenVPN na hlavní server

Spusťte následující příkaz a nainstalujte OpenVPN.

apt-get install openvpn

Ve výchozím nastavení se skripty easy-rsa instalují do adresáře „/usr/share/easy-rsa/“. Musíme tedy tyto skripty zkopírovat do požadovaného umístění, tj. /root/easy-rsa.

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

Vygenerujte certifikát CA a klíč CA

Otevřete soubor „vars“ a proveďte následující změny, ale před provedením změn vám doporučuji zálohovat původní soubor.

cp vars{,.orig}

Pomocí textového editoru nastavte výchozí hodnoty pro easy-rsa. Například.

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

Zde používám 4096bitový klíč. Podle potřeby můžete použít bitový klíč 1024, 2048, 4096 nebo 8192.

Spuštěním příkazu exportujte výchozí hodnoty.

source ./vars

Vyčistěte všechny dříve vygenerované certifikáty.

./clean-all

Dále spusťte následující příkaz pro vygenerování certifikátu CA a klíče CA.

./build-ca

Spuštěním příkazu vygenerujte certifikát serveru. Nahraďte „název serveru“ svým názvem serveru.

./build-key-server server-name

Vygenerujte certifikát Diffie Hellman PEM.

./build-dh

Vygenerujte klientský certifikát. Nahraďte „jméno klienta“ svým jménem klienta.

./build-key client-name

Vygenerujte kód HMAC.

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

Zkopírujte certifikáty na klientské a serverové počítače následovně.

  1. Ujistěte se, že ca.crt je přítomen na klientovi i na serveru.
  2. Klíč ca.key by měl být na klientovi.
  3. Server vyžaduje server.crt, dh4096.pem, server.key a ta.key.
  4. client.crt, client.key a ta.key by měly být na klientovi.

Chcete-li nastavit klíče a certifikáty na serveru, spusťte příkazy.

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/

Konfigurace serveru OpenVPN

Nyní musíte nakonfigurovat server OpenVPN. Otevřete soubor „/etc/openvpn/server.conf“. Proveďte změny, jak je popsáno níže.

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

Povolit předávání IP na serveru.

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

Spuštěním následujícího příkazu nastavte OpenVPN tak, aby se spustil při spouštění.

update-rc.d -f openvpn defaults

Spusťte službu OpenVPN.

service openvpn restart

Nainstalujte OpenVPN na klienta

Spusťte následující příkaz a nainstalujte OpenVPN na klientský počítač.

apt-get install openvpn

Pomocí textového editoru nastavte konfiguraci klienta OpenVPN v „/etc/openvpn/client.conf“ na klientovi. Příklad konfigurace je následující:

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

Spuštěním následujícího příkazu nastavte OpenVPN tak, aby se spustil při spouštění.

update-rc.d -f openvpn defaults

Spusťte službu OpenVPN na klientovi.

service openvpn restart

Jakmile budete spokojeni, že OpenVPN funguje dobře na IPv4, zde je návod, jak zprovoznit IPv6 přes OpenVPN.

Zprovoznění IPv6 s OpenVPN na serveru

Přidejte následující řádky na konec souboru konfigurace serveru „/etc/openvpn/server.conf“.

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

Tyto dva skripty vytvářejí/zničí tunel IPv6 pokaždé, když se klient připojí/odpojí.

Zde je obsah 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

Můj hostitel mi přiděluje adresy IPV6 z bloku 2a00:dd80:003d:000c::/64. Proto používám
2a00:dd80:003d:000c jako BASERANGE. Upravte tuto hodnotu podle toho, co vám přidělil váš hostitel.

Pokaždé, když se klient připojí k OpenVPN, tento skript přiřadí adresu 2a00:dd80:003d:000c:1001::1 jako IPV6 adresu tap0< rozhraní serveru.

Poslední řada nastavuje Neighbor Discovery pro náš tunel. Přidal jsem adresu IPv6 připojení tap0 na straně klienta jako adresu proxy.

Zde je obsah client-disconnect.sh.

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

Tím se pouze smaže adresa tunelu IPv6 serveru, když se klient odpojí. Podle potřeby upravte hodnotu BASERANGE.

Udělejte ze skriptů spustitelné.

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

Přidejte následující položky do „/etc/rc.local“ (příslušné sysctls můžete také upravit 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

Tyto položky aktivují zjišťování sousedů a předávání. Přidal jsem také firewall.

Vytvořte „/etc/init.d/firewall“ a vložte následující obsah.

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

Spusťte ‘/etc/rc.local‘ a spusťte bránu firewall.

sh /etc/rc.local

Tím jsou úpravy na straně serveru dokončeny.

Zprovoznění IPv6 s OpenVPN na klientovi

Přidejte následující jako poslední řádky konfiguračního souboru vašeho klienta „/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

Skripty nahoru a dolů vytvářejí/ničí koncové body klienta IPV6 klientského připojení tap0 pokaždé, když se klient připojí/odpojí k serveru OpenVPN nebo od něj.

Zde je obsah 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 přiřadí adresu IPV6 2a00:dd80:3d:c:1001::2 jako adresu IPV6 klienta a nastaví výchozí trasu IPV6 přes server.

Upravte IPV6BASE tak, aby byl stejný jako BASERANGE v konfiguraci serveru.

Zde je obsah 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

Tím se pouze smaže adresa IPV6 klienta a zruší se trasa IPV6, když se klient odpojí od serveru.

Upravte IPV6BASE tak, aby byl stejný jako BASERANGE v konfiguraci serveru a udělejte skript spustitelný.

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

Volitelně upravte „/etc/resolv.conf“ a přidejte jmenné servery Google IPV6 pro překlad DNS.

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

Restartujte openvpn na serveru a poté se k němu připojte z klienta. Měli byste být připojeni. Navštivte test-ipv6.com a zjistěte, že vaše konektivita IPV6 přes OpenVPN funguje.

Referenční odkazy

Domovská stránka OpenVPN

Zdroj: stavrovski