Kiirendame OpenVPN-i Openwrt ruuteris. Alternatiivne versioon ilma jootmis- ja riistvarakuulutusteta.

Kiirendame OpenVPN-i Openwrt ruuteris. Alternatiivne versioon ilma jootmis- ja riistvarakuulutusteta.

Tere kõigile, lugesin hiljuti ammu artiklit sellest, kuidas on võimalik kiirendada OpenVPN-i ruuteri peal, viies krüpteerimise üle eraldi riistvarale, mis on siseruuterisse joodetud. Mul on autoriga sarnane juhtum — TP-Link WDR3500, millel on 128 megabaiti RAM-i ja nõrk protsessor, mis ei suuda tunneli krüpteerimisega tõhusalt toime tulla. Siiski ei tahtnud ma ruuteri kallale jootmisriistaga minna. Allpool on minu kogemus OpenVPN-i viimisest eraldi riistvarale koos varukoopiaga ruuteris juhuks, kui midagi juhtub.

Ülesanne

Käes on TP-Link WDR3500 ja Orange Pi Zero H2. Soovime, et tunnelite krüpteerimisega tegeleb Orange Pi, samas kui juhul, kui temaga midagi juhtub, naaseb töö VPN uuesti ruuterile. Kõik tulemüüri seaded ruuteris peavad tööle nagu varem. Üldiselt peaks täiendava riistvara lisamine olema kõigile läbipaistev ja märkamatud. OpenVPN töötab TCP protokollil, TAP adapter töötab silla režiimis (server-sild).

Lahendus

USB-ühenduse asemel otsustasin kasutada ühte ruuteri porti ja suunata selle kaudu Orange Pi kõik alamvõrgud, kus asub VPN sild. See tähendab, et seadmed on füüsiliselt ühendatud samadesse võrkudesse nagu ruuteri VPN serverid. Seejärel loome Orange Pi's täiesti samad serverid, samas kui ruuteris seadistame mingi proksi, et see suunaks kõik sissetulevad ühendused välisele serverile, ja kui Orange Pi on surnud või juurdepääsetav ei ole — siis sisemisele tagavaraserverile. Mina kasutasin HAProxy.

Nii see välja käib:

  1. Kliendilt tuleb ühendus
  2. Kui väline server ei ole saadaval — siis nagu varem, ühendus läheb sisemisele serverile
  3. Kui server on kätte saadav — võtab Orange Pi kliendi vastu
  4. VPN Orange Pi's dekodeerib paketid ja saadab need tagasi ruuterisse
  5. Ruuter suunab need kuhugi mujale

Rakenduse näide

Oletame, et meil on ruuteris kaks võrku — main(1) ja guest(2), igaühel neist on OpenVPN server välistest ühendustest.

Võrgu konfiguratsioon

Kuna peame mõlemad võrgud ühe pordi kaudu suunama, loome 2 VLAN'i.

Routteril jaotises Network/Switch loome VLAN'e (näiteks 1 ja 2) ja aktiveerime need sildistatud režiimis soovitud porti, lisame uued eth0.1 ja eth0.2 vastavatesse võrkudesse (näiteks lisame sillale).

Orange Pi'l loome kaks VLAN-ühendust (mul on Archlinux ARM + netctl):

/etc/netctl/vlan-main

Description='Peamine VLAN eth0-l'
Interface=vlan-peamine
Connection=vlan
BindsToInterfaces=eth0
VLANID=1
IP=ei

/etc/netctl/vlan-guest

Description='Külastaja VLAN eth0-l'
Interface=vlan-külastaja
Connection=vlan
BindsToInterfaces=eth0
VLANID=2
IP=ei

Ja loome kohe kaks sillat nende jaoks:

/etc/netctl/br-main

Description="Peamine sillaliideseühendus"
Interface=br-peamine
Connection=bridge
BindsToInterfaces=(vlan-peamine)
IP=dhcp

/etc/netctl/br-guest

Description="Külastaja sillaliideseühendus"
Interface=br-külastaja
Connection=bridge
BindsToInterfaces=(vlan-külastaja)
IP=dhcp

Aktiveerime automaatse käivitamise kõikidele 4 profiilile (netctl enable). Nüüd pärast Orange Pi taaskäivitamist jääb see kinni kahes nõutud võrgus. Orange Pi liideste aadressid seadistame ruuteri Static Leases-se.

ip addr show

4: vlan-main@eth0:  mtu 1500 qdisc noqueue master br-main state UP group default qlen 1000
    link/ether 02:42:f0:f8:23:c8 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::42:f0ff:fef8:23c8/64 scope link 
       valid_lft forever preferred_lft forever

5: vlan-guest@eth0:  mtu 1500 qdisc noqueue master br-guest state UP group default qlen 1000
    link/ether 02:42:f0:f8:23:c8 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::42:f0ff:fef8:23c8/64 scope link 
       valid_lft forever preferred_lft forever

6: br-main:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:c7:0f:89:71:6e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global dynamic noprefixroute br-main
       valid_lft 29379sec preferred_lft 21439sec
    inet6 fe80::50c7:fff:fe89:716e/64 scope link 
       valid_lft forever preferred_lft forever

7: br-guest:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether ee:ea:19:31:34:32 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.3/24 brd 192.168.2.255 scope global br-guest
       valid_lft forever preferred_lft forever
    inet6 fe80::ecea:19ff:fe31:3432/64 scope link 
       valid_lft forever preferred_lft forever

VPN seadmine

Jätkame роутерist OpenVPN-i seadeid ja võtmeid. Seadeid saab tavaliselt võtta /tmp/etc/openvpn*.conf

Vaikimisi openvpn, töötab TAP- ja server-sildirežiimis, hoiab oma liidest mitteaktiivsena. Kõik peab tööle saama, tuleb lisada skript, mis käivitatakse ühenduse aktiveerimisel.

/etc/openvpn/main.conf

dev vpn-main
dev-type tap

client-to-client
persist-key
persist-tun
ca /etc/openvpn/main/ca.crt
cert /etc/openvpn/main/main.crt
cipher AES-256-CBC
comp-lzo yes
dh /etc/openvpn/main/dh2048.pem
ifconfig-pool-persist /etc/openvpn/ipp_main.txt
keepalive 10 60
key /etc/openvpn/main/main.key
port 443
proto tcp
push "redirect-gateway"
push "dhcp-option DNS 192.168.1.1"
server-bridge 192.168.1.3 255.255.255.0 192.168.1.200 192.168.1.229
status /tmp/openvpn.main.status
verb 3

setenv profile_name main
script-security 2
up /etc/openvpn/vpn-up.sh

/etc/openvpn/vpn-up.sh

#!/bin/sh

ifconfig vpn-${profile_name} up
brctl addif br-${profile_name} vpn-${profile_name}

Niipea, kui ühendus luuakse, lisatakse vpn-main liides br-main'i. Külastusvõrgule kehtib sama põhimõte, seda täpselt liidese nime ja aadressi osas server-sillal.

Väliste päringute suunamine ja vahendamine

Selle sammu jooksul on Orange Pi juba suuteline võtma ühendusi ja suunama kliente õigesse võrgusüsteemi. Järele on jäänud seadistada sisse tulevate ühenduste vahendamine ruuteris.

Kandke ruuterite VPN serverid üle teistele portidele, seadke ruuterile HAProxy ja seadistage:

/etc/haproxy.cfg

global
        maxconn 256
        uid 0
        gid 0
        daemon

defaults
        retries 1
        contimeout 1000
        option splice-auto

listen guest_vpn
        bind :444
        mode tcp
        server 0-orange 192.168.2.3:444 check
        server 1-local  127.0.0.1:4444 check backup

listen main_vpn
        bind :443
        mode tcp
        server 0-orange 192.168.1.3:443 check
        server 1-local  127.0.0.1:4443 check backup

Naudi

Kui kõik läheb plaanipäraselt, suunduvad kliendid Orange Pi juurde ning ruuteri protsessor ei kuumene enam ja VPN-kiirus tõuseb oluliselt. Samuti jäävad kehtima kõik võrgu reeglid, mis on ruuteris määratletud. Juhul kui Orange Pi avarii korral lakkab see töötamast, suunab HAProxy kliendid kohalikesse serveritesse.

Täname tähelepanu eest, ettepanekud ja parandused on oodatud.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster