OpenVPN paātrināšana Openwrt maršrutētājā. Alternatīva versija bez lodāmura un aparatūras ekstrēmisma

OpenVPN paātrināšana Openwrt maršrutētājā. Alternatīva versija bez lodāmura un aparatūras ekstrēmisma

Sveiki visiem, nesen izlasīju vecs raksts par to, kā jūs varat paātrināt OpenVPN maršrutētājā, pārsūtot šifrēšanu uz atsevišķu aparatūras daļu, kas ir pielodēta pašā maršrutētājā. Man ir līdzīgs gadījums kā autoram - TP-Link WDR3500 ar 128 megabaitu operatīvo atmiņu un vāju procesoru, kas pilnībā nespēj tikt galā ar tuneļa šifrēšanu. Tomēr es absolūti negribēju iekļūt maršrutētājā ar lodāmuru. Tālāk ir sniegta mana pieredze, pārvietojot OpenVPN uz atsevišķu aparatūras daļu ar dublējumu maršrutētājā avārijas gadījumā.

Uzdevums

Ir TP-Link WDR3500 maršrutētājs un Orange Pi Zero H2. Mēs vēlamies, lai Orange Pi šifrētu tuneļus kā parasti, un, ja ar to kaut kas notiks, VPN apstrāde atgriezīsies maršrutētājā. Visiem maršrutētāja ugunsmūra iestatījumiem jādarbojas kā iepriekš. Un kopumā papildu aparatūras pievienošanai vajadzētu būt caurspīdīgai un visiem nepamanāmai. OpenVPN darbojas, izmantojot TCP, TAP adapteris ir tilta režīmā (servera tilts).

Šķīdums

Tā vietā, lai izveidotu savienojumu, izmantojot USB, es nolēmu izmantot vienu maršrutētāja portu un savienot visus apakštīklus, kuriem ir VPN tilts, ar Orange Pi. Izrādās, ka aparatūra fiziski karāsies tajos pašos tīklos, kur maršrutētāja VPN serveris. Pēc tam mēs instalējam tieši tādus pašus serverus uz Orange Pi un maršrutētājā iestatām sava veida starpniekserveri, lai tas nosūtītu visus ienākošos savienojumus uz ārējo serveri un, ja Orange Pi ir miris vai nav pieejams, tad uz iekšējais rezerves serveris. Es paņēmu HAProxy.

Tas izrādās šādi:

  1. Ierodas klients
  2. Ja ārējais serveris nav pieejams, tāpat kā iepriekš, savienojums tiek izveidots ar iekšējo serveri
  3. Ja iespējams, klientu pieņem Orange Pi
  4. Orange Pi VPN atšifrē paketes un izspiež tās atpakaļ maršrutētājā
  5. Maršrutētājs tos kaut kur novirza

Īstenošanas piemērs

Tātad, pieņemsim, ka mums maršrutētājā ir divi tīkli - galvenais (1) un viesu (2), katram no tiem ir OpenVPN serveris ārējai savienošanai.

Tīkla konfigurācija

Mums ir jāmaršrutē abi tīkli caur vienu portu, tāpēc mēs izveidojam 2 VLAN.

Maršrutētāja sadaļā Network/Switch izveidojiet VLAN (piemēram, 1 un 2) un iespējojiet tos marķēšanas režīmā vajadzīgajā portā, pievienojiet jaunizveidotos eth0.1 un eth0.2 attiecīgajiem tīkliem (piemēram, pievienot tos tiltam).

Orange Pi mēs izveidojam divas VLAN saskarnes (man ir 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

Un mēs viņiem uzreiz izveidojam divus tiltus:

/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

Iespējot automātisko palaišanu visiem 4 profiliem (netctl enable). Tagad pēc atsāknēšanas Orange Pi paliks uz diviem nepieciešamajiem tīkliem. Mēs konfigurējam Orange Pi interfeisa adreses maršrutētāja statiskajā nomā.

ip addr šovs

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 iestatīšana

Pēc tam mēs nokopējam OpenVPN iestatījumus un atslēgas no maršrutētāja. Iestatījumus parasti var atrast /tmp/etc/openvpn*.conf

Pēc noklusējuma openvpn, kas darbojas TAP režīmā, un servera tilts saglabā savu saskarni neaktīvu. Lai viss darbotos, jāpievieno skripts, kas darbojas, kad savienojums ir aktivizēts.

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

Tā rezultātā, tiklīdz tiks izveidots savienojums, vpn-main saskarne tiks pievienota br-main. Viesu tīklam - līdzīgi līdz interfeisa nosaukumam un adresei servera tiltā.

Maršrutēšanas pieprasījumi ārēji un starpniekserveri

Šajā solī Orange Pi jau spēj pieņemt savienojumus un savienot klientus ar nepieciešamajiem tīkliem. Atliek tikai konfigurēt maršrutētājā ienākošo savienojumu starpniekserveri.

Mēs pārsūtām maršrutētāja VPN serverus uz citiem portiem, maršrutētājā instalējam HAProxy un konfigurējam:

/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

Izbaudi

Ja viss noritēja saskaņā ar plānu, klienti pārslēgsies uz Orange Pi un maršrutētāja procesors vairs neuzsils, un VPN ātrums ievērojami palielināsies. Tajā pašā laikā visi maršrutētājā reģistrētie tīkla noteikumi paliks aktuāli. Negadījuma gadījumā ar Orange Pi tas nokritīs un HAProxy pārsūtīs klientus uz vietējiem serveriem.

Paldies par uzmanību, tiek gaidīti ieteikumi un labojumi.

Avots: www.habr.com

Pievieno komentāru