
Pozdravljeni, nedavno sem prebral 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:
- Stranka pride
- Če zunanji strežnik ni dostopen — kot prej povezava gre na notranji strežnik
- Če je dostopen — stranko sprejme Orange Pi
- VPN na Orange Pi dešifrira pakete in jih vrne nazaj na usmerjevalnik
- 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
