Zrýchlime OpenVPN na routeri Openwrt. Alternatívna verzia bez pájky a hardvérovej extrémnejších zásahov.

Zrýchlime OpenVPN na routeri Openwrt. Alternatívna verzia bez pájky a hardvérovej extrémnejších zásahov.

Ahojte, nedávno som prečítal starý článok o tom, ako urýchliť OpenVPN na routeri presunutím šifrovania na samostatné zariadenie, ktoré je pripájané vo vnútri samotného routera. Mám podobný prípad ako autor — TP-Link WDR3500 s 128 megabajtmi RAM a slabým procesorom, ktorý si s šifrovaním tunelov nedokáže poradiť. Avšak, zasahovať do routera so spájkovačkou sa mi rozhodne nechcelo. Pod katom nájdete moju skúsenosť s presunom OpenVPN na samostatné zariadenie s rezervovaním na routeri pre prípad havárie.

Úloha

Mám router TP-Link WDR3500 a Orange Pi Zero H2. Chceme, aby sa šifrovaním tunelov zaoberal Orange Pi, pričom ak sa mu niečo stane, spracovanie VPN sa vráti späť na router. Všetky nastavenia firewallu na routeri musia fungovať ako predtým. A celkovo by malo pridať ďalšie zariadenie pre všetkých prejsť nepozorovane a hladko. OpenVPN funguje cez TCP, adaptér TAP v režime mosta (server-bridge).

Riešenie

Namiesto pripojenia cez USB som sa rozhodol využiť jeden port routera a previesť ním na Orange Pi všetky podsiete, v ktorých je VPN most. Takže zariadenie bude fyzicky pripojené v tých istých sieťach, ako sú VPN servery na routeri. Potom nasadzujeme presne také isté servery na Orange Pi a na routeri nastavíme nejaký proxy, aby odovzdával všetky prichádzajúce pripojenia na externý server, a ak Orange Pi zlyhá alebo nie je dostupný — potom na interný záložný server. Vybral som si HAProxy.

Vyzerá to takto:

  1. Prichádza klient
  2. Ak externý server nie je dostupný — ako predtým, pripojenie ide na interný server
  3. Ak je dostupný — klienta prijíma Orange Pi
  4. VPN na Orange Pi dešifruje pakety a vypľuje ich späť do routera
  5. Router ich smeruje niekam

Príklad realizácie

Takže, predpokladajme, že máme na routeri dve siete — main(1) a guest(2), pre každú z nich existuje OpenVPN server na pripojenie zvonku.

Konfigurácia siete

Musíme previesť obidve siete cez jeden port, preto vytvárame 2 VLANy.

Na routeri v sekcii Network/Switch vytvárame VLANy (napríklad 1 a 2) a zapneme ich v režime tagged na potrebnom porte, pridáme novo vytvorené eth0.1 a eth0.2 k zodpovedajúcim sieťam (napríklad ich pridáme do brigde).

Na Orange Pi vytvárame dva VLAN rozhrania (mám Archlinux ARM + netctl):

/etc/netctl/vlan-main

Description='Hlavný VLAN na eth0'
Interface=vlan-main
Connection=vlan
BindsToInterfaces=eth0
VLANID=1
IP=no

/etc/netctl/vlan-guest

Description='Hostiteľský VLAN na eth0'
Interface=vlan-guest
Connection=vlan
BindsToInterfaces=eth0
VLANID=2
IP=no

A okamžite vytvárame dva brigde pre ne:

/etc/netctl/br-main

Popis="Hlavné pripojenie mostu"
Rozhranie=br-main
Pripojenie=bridge
BindsToInterfaces=(vlan-main)
IP=dhcp

/etc/netctl/br-guest

Popis="Pripojenie hosťa mostu"
Rozhranie=br-guest
Pripojenie=bridge
BindsToInterfaces=(vlan-guest)
IP=dhcp

Aktivujeme automatické spúšťanie pre všetky 4 profily (netctl enable). Teraz po reštarte Orange Pi bude pripojené k dvom požadovaným sieťam. Adresy rozhraní na Orange Pi nastavujeme v Static Leases na routeri.

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

Nastavenie VPN

Ďalej skopírujeme z routera nastavenia pre OpenVPN a kľúče. Nastavenia zvyčajne môžete získať v /tmp/etc/openvpn*.conf

Predvolene openvpn, spustený v režime TAP a server-bridge, udržuje svoje rozhranie neaktívne. Aby to všetko fungovalo, musíte pridať skript, ktorý sa spustí pri aktivácii pripojenia.

/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}

Výsledkom je, že akonáhle dôjde k pripojeniu, rozhranie vpn-main bude pridané do br-main. Pre sieť hosťa — analogicky so zmenou názvu rozhrania a adresy v server-bridge.

Routovanie požiadaviek z vonku a proxy

V tomto kroku už Orange Pi vie prijímať pripojenia a vpúšťať klientov do požadovaných sietí. Ostáva nastaviť proxy pre prichádzajúce pripojenia na routeri.

Premiestňujeme routerové VPN servery na iné porty, inštalujeme na router HAProxy a nastavujeme:

/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

Užívame si

Ak všetko prebehlo podľa plánu, klienti prejdú na Orange Pi a procesor routéra sa už nebude prehrievať, pričom rýchlosť VPN sa výrazne zvýši. Všetky sieťové pravidlá predpísané na routéri tak ostanú platné. V prípade poruchy Orange Pi sa odpojí a HAProxy presmeruje klientov na lokálne servery.

Ďakujeme za pozornosť, vaše názory a opravy sú vítané.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster