Az OpenVPN felgyorsítása egy Openwrt útválasztón. Alternatív változat forrasztópáka és hardveres szélsőségesség nélkül

Az OpenVPN felgyorsítása egy Openwrt útválasztón. Alternatív változat forrasztópáka és hardveres szélsőségesség nélkül

Hello mindenkinek, nemrég olvastam régi cikk arról, hogyan gyorsíthatja fel az OpenVPN-t egy útválasztón, ha a titkosítást egy különálló hardverre viszi át, amely magában az útválasztóban van forrasztva. Hasonló esetem van a szerzőhöz - TP-Link WDR3500 128 megabájt RAM-mal és gyenge processzorral, amely teljesen képtelen megbirkózni az alagút titkosítással. A routerbe viszont végképp nem akartam forrasztópákával beszállni. Az alábbiakban az OpenVPN egy külön hardverre való áthelyezésével kapcsolatos tapasztalataim olvashatók, biztonsági mentéssel az útválasztón baleset esetén.

Feladat

Van egy TP-Link WDR3500 router és egy Orange Pi Zero H2. Szeretnénk, ha az Orange Pi a szokásos módon titkosítaná az alagutakat, és ha valami történik vele, a VPN feldolgozás visszakerül a routerhez. Az útválasztó összes tűzfalbeállításának a korábbiak szerint kell működnie. És általában, a további hardverek hozzáadásának átláthatónak és mindenki számára észrevehetetlennek kell lennie. Az OpenVPN TCP-n keresztül működik, a TAP adapter híd módban van (szerver-híd).

döntés

Az USB-n keresztüli csatlakozás helyett úgy döntöttem, hogy az útválasztó egyik portját használom, és az összes VPN-híddal rendelkező alhálózatot az Orange Pi-hez csatlakoztatom. Kiderült, hogy a hardver fizikailag ugyanabban a hálózatban fog lógni, mint az útválasztó VPN-kiszolgálója. Ezt követően az Orange Pi-re pontosan ugyanazokat a szervereket telepítjük, a routeren pedig beállítunk valamiféle proxyt, hogy az minden bejövő kapcsolatot a külső szerverre küldjön, és ha az Orange Pi halott vagy nem elérhető, akkor a belső tartalék szerver. Vettem HAProxyt.

Így alakul:

  1. Egy ügyfél érkezik
  2. Ha a külső szerver nem érhető el, mint korábban, akkor a kapcsolat a belső szerverhez megy
  3. Ha rendelkezésre áll, az ügyfelet az Orange Pi elfogadja
  4. Az Orange Pi VPN-je dekódolja a csomagokat, és visszaküldi az útválasztóba
  5. A router elvezeti őket valahova

Megvalósítási példa

Tehát tegyük fel, hogy két hálózatunk van az útválasztón - a main(1) és a guest(2), mindegyikhez tartozik egy OpenVPN szerver a külső csatlakozáshoz.

Hálózati konfiguráció

Mindkét hálózatot egy porton kell irányítanunk, ezért 2 VLAN-t hozunk létre.

Az útválasztón a Network/Switch szakaszban hozzon létre VLAN-okat (például 1-es és 2-es), és engedélyezze azokat címkézett módban a kívánt porton, majd adja hozzá az újonnan létrehozott eth0.1-et és eth0.2-t a megfelelő hálózatokhoz (például add hozzá őket a brigde-hez).

Az Orange Pi-n két VLAN interfészt hozunk létre (van Archlinux ARM + netctl):

/etc/netctl/vlan-main

Description='Main VLAN on eth0'
Interface=vlan-main
Connection=vlan
BindsToInterfaces=eth0
VLANID=1
IP=no

/etc/netctl/vlan-guest

Description='Guest VLAN on eth0'
Interface=vlan-guest
Connection=vlan
BindsToInterfaces=eth0
VLANID=2
IP=no

És azonnal létrehozunk nekik két hidat:

/etc/netctl/br-main

Description="Main Bridge connection"
Interface=br-main
Connection=bridge
BindsToInterfaces=(vlan-main)
IP=dhcp

/etc/netctl/br-guest

Description="Guest Bridge connection"
Interface=br-guest
Connection=bridge
BindsToInterfaces=(vlan-guest)
IP=dhcp

Engedélyezze az automatikus indítást mind a 4 profilhoz (netctl enable). Most egy újraindítás után az Orange Pi lógni fog a két szükséges hálózaton. Az Orange Pi interfészcímeit az útválasztó Static Leases részében konfiguráljuk.

ip addr show

4: vlan-main@eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 beállítása

Ezután átmásoljuk az OpenVPN beállításait és a kulcsokat az útválasztóról. A beállítások általában itt találhatók /tmp/etc/openvpn*.conf

Alapértelmezés szerint a TAP módban futó openvpn és a szerver-híd inaktív állapotban tartja a felületet. Ahhoz, hogy minden működjön, hozzá kell adni egy szkriptet, amely a kapcsolat aktiválásakor fut le.

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

Ennek eredményeként, amint a kapcsolat létrejön, a vpn-main interfész hozzáadódik a br-mainhez. A vendég gridnél - hasonlóan a szerver-bridge-ben szereplő interfésznévig és címig.

Külső irányítási kérések és proxykezelés

Ennél a lépésnél az Orange Pi már képes fogadni a kapcsolatokat és csatlakoztatni a klienseket a szükséges hálózatokhoz. Már csak a bejövő kapcsolatok proxyjának konfigurálása van hátra az útválasztón.

Az útválasztó VPN-kiszolgálóit más portokra helyezzük, telepítjük a HAProxy-t az útválasztóra, és konfiguráljuk:

/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

Élvezd

Ha minden a tervek szerint ment, a kliensek Orange Pi-re váltanak, és a router processzora már nem melegszik fel, a VPN sebessége pedig jelentősen megnő. Ugyanakkor az útválasztón regisztrált összes hálózati szabály releváns marad. Az Orange Pi balesete esetén leesik, és a HAProxy áthelyezi a klienseket a helyi szerverekre.

Köszönöm figyelmüket, javaslatokat, javításokat szívesen fogadunk.

Forrás: will.com

Hozzászólás