Pospešujemo OpenVPN na usmerjevalniku Openwrt. Alternativna različica brez spajkanja in strojnega ekstremizma

Pospešujemo OpenVPN na usmerjevalniku Openwrt. Alternativna različica brez spajkanja in strojnega ekstremizma

Pozdravljeni, nedavno sem prebral staro članko o tem, kako lahko pospešimo OpenVPN na usmerjevalniku, tako da prenesemo šifriranje na ločeno strojno opremo, ki je spajkana znotraj samega usmerjevalnika. Imamo podoben primer kot avtor — TP-Link WDR3500 z 128 megabajti RAM-a in slabim procesorjem, ki se povsem ne spopada s šifriranjem predorov. Vendar pa se mi ni želelo ukvarjati z usmerjevalnikom s spajkalnikom. Podrobneje vam predstavim svojo izkušnjo prenosa OpenVPN na ločeno strojno opremo z rezervacijo na usmerjevalniku za primer okvare.

Naloga

Imam usmerjevalnik TP-Link WDR3500 in Orange Pi Zero H2. Želimo, da bi se s šifriranjem predorov ukvarjal Orange Pi, pri čemer, če se mu kaj zgodi, obdelava VPN vrne nazaj na usmerjevalnik. Vse nastavitve požarnega zidu na usmerjevalniku morajo delovati kot prej. Na splošno bi morala dodana strojna oprema za vse potekati prozorno in neopazno. OpenVPN deluje po TCP, adapter TAP v načinu mostu (server-bridge).

Solution

Namesto povezovanja prek USB sem se odločil porabiti en od priključkov usmerjevalnika in ga povezati na Orange Pi za vse podomrežja, kjer je VPN most. Tako bo strojna oprema fizično povezana z istimi omrežji kot VPN strežniki na usmerjevalniku. Po tem postavimo enake strežnike na Orange Pi, na usmerjevalniku pa nastavimo kakšno proxy, da usmerja vse vhodne povezave na zunanji strežnik, v primeru, da je Orange Pi mrtev ali nedostopen — takrat na notranji rezervni strežnik. Izbral sem HAProxy.

Torej izgleda tako:

  1. Stranka pride
  2. Če zunanji strežnik ni dostopen — kot prej povezava gre na notranji strežnik
  3. Če je dostopen — stranko sprejme Orange Pi
  4. VPN na Orange Pi dešifrira pakete in jih vrne nazaj na usmerjevalnik
  5. Usmerjevalnik jih usmerja nekam

Primer izvedbe

Torej, recimo, da imamo na usmerjevalniku dve omrežji — main(1) in guest(2), za vsako od njih imamo OpenVPN strežnik za zunanje povezave.

Konfiguracija omrežja

Moramo priključiti obe omrežji skozi en priključek, zato ustvarimo 2 VLAN-a.

Na usmerjevalniku v razdelku Network/Switch ustvarimo VLAN-e (na primer 1 in 2) in jih vključimo v označenem načinu na ustreznem priključku ter dodamo novo ustvarjene eth0.1 in eth0.2 k ustreznim omrežjem (na primer jih dodamo v most).

Na Orange Pi ustvarimo dve VLAN vmesnici (imam Archlinux ARM + netctl):

/etc/netctl/vlan-main

Opis='Glavni VLAN na eth0'
Sučelje=vlan-glavni
Veza=vlan
PovezujeUzSučelja=eth0
VLANID=1
IP=ne

/etc/netctl/vlan-guest

Opis='Gostujući VLAN na eth0'
Sučelje=vlan-gost
Veza=vlan
PovezujeUzSučelja=eth0
VLANID=2
IP=ne

I odmah kreiramo dva mosta za njih:

/etc/netctl/br-main

Opis="Glavna mostovna veza"
Sučelje=br-glavni
Veza=most
PovezujeUzSučelja=(vlan-glavni)
IP=dhcp

/etc/netctl/br-guest

Opis="Gostujuća mostovna veza"
Sučelje=br-gost
Veza=most
PovezujeUzSučelja=(vlan-gost)
IP=dhcp

Uključujemo automatski start za svih 4 profila (netctl enable). Sada će nakon ponovnog pokretanja Orange Pi biti povezan u dvije potrebne mreže. Adrese sučelja na Orange Pi postavljamo u Static Leases na routeru.

ip addr show

4: vlan-glavni@eth0:  mtu 1500 qdisc noqueue master br-glavni stanje UP grupa 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 opseg link 
       valid_lft zauvijek preferred_lft zauvijek

5: vlan-gost@eth0:  mtu 1500 qdisc noqueue master br-gost stanje UP grupa 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 opseg link 
       valid_lft zauvijek preferred_lft zauvijek

6: br-glavni:  mtu 1500 qdisc noqueue stanje UP grupa 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 opseg global dynamic noprefixroute br-glavni
       valid_lft 29379sec preferred_lft 21439sec
    inet6 fe80::50c7:fff:fe89:716e/64 opseg link 
       valid_lft zauvijek preferred_lft zauvijek

7: br-gost:  mtu 1500 qdisc noqueue stanje UP grupa 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 opseg global br-gost
       valid_lft zauvijek preferred_lft zauvijek
    inet6 fe80::ecea:19ff:fe31:3432/64 opseg link 
       valid_lft zauvijek preferred_lft zauvijek

Postavljanje VPN-a

Dalje kopiramo s routera postavke za OpenVPN i ključeve. Postavke obično možemo uzeti u /tmp/etc/openvpn*.conf

Po defaultu openvpn, pokrenut u TAP režimu i server-bridge drži svoj sučelje neaktivnim. Da bi sve radilo, potrebno je dodati skriptu koja će se aktivirati prilikom povezivanja.

/etc/openvpn/main.conf

dev vpn-glavni
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}

Kao rezultat, čim se dogodi povezivanje, sučelje vpn-glavni će biti dodano u br-glavni. Za mrežu gostiju — isto tako s točnošću do imena sučelja i adrese u server-bridge.

Usmjeravanje zahtjeva s vanjske strane i proksiranje

U ovoj fazi Orange Pi već može primati veze i dopuštati klijentima pristup željenim mrežama. Ostaje da se postavi proksiranje dolaznih veza na routeru.

Preusmerjamo VPN strežnike na druge porte, namestimo HAProxy na usmerjevalniku in ga konfiguriramo:

/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živamo

Če bo vse šlo po načrtu, bodo stranke prešle na Orange Pi in procesor usmerjevalnika se ne bo več pregreval, hitrost VPN pa se bo znatno povečala. Vse omrežne pravilnike, ki so navedeni na usmerjevalniku, pa bodo še vedno veljali. V primeru okvare na Orange Pi se bo ta izklopil in HAProxy bo preusmeril stranke na lokalne strežnike.

Hvala za pozornost, vabljeni ste, da jih delite in priporočila so dobrodošla.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster