OpenVPN:n nopeuttaminen Openwrt-reitittimessä. Vaihtoehtoinen versio ilman juotosraudaa ja laitteistoäärimmäisyyttä

OpenVPN:n nopeuttaminen Openwrt-reitittimessä. Vaihtoehtoinen versio ilman juotosraudaa ja laitteistoäärimmäisyyttä

Hei kaikille, luin äskettäin vanha artikkeli kuinka voit nopeuttaa OpenVPN:ää reitittimessä siirtämällä salauksen erilliseen laitteistoon, joka on juotettu itse reitittimen sisään. Minulla on samanlainen tapaus kuin kirjoittajalla - TP-Link WDR3500, jossa on 128 megatavua RAM-muistia ja huono prosessori, joka ei täysin pysty selviytymään tunnelisalauksesta. En kuitenkaan ehdottomasti halunnut päästä reitittimeen juotosraudalla. Alla on kokemukseni OpenVPN:n siirtämisestä erilliseen laitteistoon, jossa on varmuuskopio reitittimestä onnettomuuden sattuessa.

Tehtävä

Siellä on TP-Link WDR3500 -reititin ja Orange Pi Zero H2. Haluamme Orange Pi:n salaavan tunnelit tavalliseen tapaan, ja jos sille tapahtuu jotain, VPN-käsittely palaa takaisin reitittimeen. Kaikkien reitittimen palomuuriasetusten pitäisi toimia kuten ennenkin. Ja yleensä lisälaitteiden lisäämisen tulisi olla läpinäkyvää ja kaikille huomaamatonta. OpenVPN toimii TCP:n yli, TAP-sovitin on siltatilassa (palvelin-silta).

päätös

USB-yhteyden sijasta päätin käyttää yhtä reitittimen porttia ja yhdistää kaikki VPN-sillalla varustetut aliverkot Orange Pi:hen. Osoittautuu, että laitteisto roikkuu fyysisesti samoissa verkoissa kuin reitittimen VPN-palvelin. Sen jälkeen asennamme täsmälleen samat palvelimet Orange Pi -palvelimeen ja reitittimeen asennamme jonkinlaisen välityspalvelimen, jotta se lähettää kaikki saapuvat yhteydet ulkoiseen palvelimeen ja jos Orange Pi on kuollut tai ei ole käytettävissä, niin sisäinen varapalvelin. Otin HAProxyn.

Se osoittautuu näin:

  1. Asiakas saapuu
  2. Jos ulkoinen palvelin ei ole käytettävissä, kuten aiemmin, yhteys siirtyy sisäiseen palvelimeen
  3. Mikäli mahdollista, Orange Pi hyväksyy asiakkaan
  4. Orange Pi:n VPN purkaa pakettien salauksen ja lähettää ne takaisin reitittimeen
  5. Reititin ohjaa ne jonnekin

Toteutusesimerkki

Oletetaan siis, että meillä on kaksi verkkoa reitittimessä - main(1) ja guest(2), joista jokaisessa on OpenVPN-palvelin ulkoisen yhteyden muodostamista varten.

Verkkoasetukset

Meidän on reitittävä molemmat verkot yhden portin kautta, joten luomme 2 VLANia.

Luo reitittimen Network/Switch-osiossa VLAN-verkkoja (esimerkiksi 1 ja 2) ja ota ne käyttöön merkityssä tilassa halutussa portissa, lisää äskettäin luodut eth0.1 ja eth0.2 vastaaviin verkkoihin (esim. lisää ne siltaan).

Orange Pi:ssä luomme kaksi VLAN-liitäntää (minulla on 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

Ja luomme heti heille kaksi siltaa:

/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

Ota automaattinen käynnistys käyttöön kaikille 4 profiilille (netctl enable). Nyt uudelleenkäynnistyksen jälkeen Orange Pi roikkuu kahdessa vaaditussa verkossa. Määritämme Orange Pi:n liitäntäosoitteet reitittimen staattisissa vuokrasopimuksissa.

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-asetukset

Seuraavaksi kopioimme OpenVPN-asetukset ja avaimet reitittimestä. Asetukset löytyvät yleensä osoitteesta /tmp/etc/openvpn*.conf

Oletuksena TAP-tilassa toimiva openvpn ja palvelinsilta pitää käyttöliittymänsä passiivisena. Jotta kaikki toimisi, sinun on lisättävä komentosarja, joka suoritetaan, kun yhteys on aktivoitu.

/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ämän seurauksena vpn-main-liitäntä lisätään br-mainiin heti yhteyden muodostuessa. Vierasgridille - vastaavasti palvelinsillan käyttöliittymän nimeen ja osoitteeseen asti.

Reitityspyynnöt ulkoisesti ja välityspalvelin

Tässä vaiheessa Orange Pi pystyy jo hyväksymään yhteydet ja yhdistämään asiakkaat vaadittuihin verkkoihin. Jäljelle jää vain saapuvien yhteyksien välityspalvelimen määrittäminen reitittimeen.

Siirrämme reitittimen VPN-palvelimet muihin portteihin, asennamme HAProxyn reitittimeen ja määritämme:

/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

Nauttia

Jos kaikki meni suunnitelmien mukaan, asiakkaat siirtyvät Orange Pi:hen ja reitittimen prosessori ei enää kuumene ja VPN-nopeus kasvaa merkittävästi. Samaan aikaan kaikki reitittimeen rekisteröidyt verkkosäännöt pysyvät voimassa. Orange Pi:n onnettomuuden sattuessa se putoaa ja HAProxy siirtää asiakkaat paikallisille palvelimille.

Kiitos huomiosta, ehdotukset ja korjaukset ovat tervetulleita.

Lähde: will.com

Lisää kommentti