
Hej alla, jag lĂ€ste nyligen om hur man kan snabba upp OpenVPN pĂ„ en router genom att flytta krypteringen till en separat enhet som löds inuti routern. Jag har en liknande situation som författaren â TP-Link WDR3500 med 128 megabyte RAM och en svag processor som absolut inte klarar av krypteringen av tunnlar. Men jag ville kategoriskt inte ge mig pĂ„ att löda i routern. Nedan följer min erfarenhet av att köra OpenVPN pĂ„ en separat enhet med reservrutiner pĂ„ routern i hĂ€ndelse av fel.
Uppgift
Jag har en TP-Link WDR3500-router och en Orange Pi Zero H2. Vi vill lÄta Orange Pi ta hand om krypteringen av tunnlar, och om nÄgot hÀnder med den, sÄ ska behandlingen VPN ÄtergÄ till routern. Alla brandvÀggsinstÀllningar pÄ routern ska fungera som tidigare. Och överlag ska tillÀgg av en extra enhet ske helt transparent och utan nÄgra mÀrkliga avbrott. OpenVPN körs över TCP, TAP-adaptern Àr i brottslÀge (server-bro).
Lösning
IstĂ€llet för att ansluta via USB beslutade jag mig för att anvĂ€nda en port pĂ„ routern för att ansluta Orange Pi till alla delnĂ€t dĂ€r VPN-bryggan finns. Det innebĂ€r att enheten fysiskt kommer att finnas i samma nĂ€tverk som VPN-servrarna pĂ„ routern. Efter det startar vi exakt samma servrar pĂ„ Orange Pi, och pĂ„ routern konfigurerar vi en proxy sĂ„ att den skickar alla inkommande anslutningar till den externa servern, och om Orange Pi fĂ„r problem eller inte Ă€r tillgĂ€nglig â dĂ„ till den interna fallback-servern. Jag valde HAProxy.
SÄ hÀr blir resultatet:
- En klient ansluter
- Om den externa servern inte Ă€r tillgĂ€nglig â som tidigare gĂ„r anslutningen till den interna servern
- Om den Ă€r tillgĂ€nglig â tar Orange Pi emot klienten
- VPN pÄ Orange Pi avkrypterar paketen och skickar tillbaka dem till routern
- Routern dirigerar dem nÄgonstans
Exempel pÄ genomförande
SĂ„, lĂ„t oss sĂ€ga att vi har tvĂ„ nĂ€tverk pĂ„ routern â main(1) och guest(2), för varje av dem finns det en OpenVPN-server för externa anslutningar.
NĂ€tverkskonfiguration
Vi behöver skicka bÄda nÀtverken genom en port, sÄ vi skapar 2 VLAN.
PÄ routern, i avsnittet Network/Switch, skapar vi VLAN (till exempel 1 och 2) och aktiverar dem i tagged-lÀge pÄ den nödvÀndiga porten, lÀgger till de nyligen skapade eth0.1 och eth0.2 till respektive nÀtverk (till exempel lÀgger vi dem till bron).
PÄ Orange Pi skapar vi tvÄ VLAN-grÀnssnitt (jag har Archlinux ARM + netctl):
/etc/netctl/vlan-main
Description='Huvud VLAN pÄ eth0'
Interface=vlan-main
Connection=vlan
BindsToInterfaces=eth0
VLANID=1
IP=no
/etc/netctl/vlan-guest
Description='GÀst VLAN pÄ eth0'
Interface=vlan-guest
Connection=vlan
BindsToInterfaces=eth0
VLANID=2
IP=no
Och vi skapar omedelbart tvÄ broar för dem:
/etc/netctl/br-main
Beskrivning="Huvudbro-anslutning"
GrÀnssnitt=br-main
Anslutning=bro
BinderTillGrÀnssnitt=(vlan-main)
IP=dhcp
/etc/netctl/br-guest
Beskrivning="GĂ€stbro-anslutning"
GrÀnssnitt=br-guest
Anslutning=bro
BinderTillGrÀnssnitt=(vlan-guest)
IP=dhcp
Aktivera autostart för alla 4 profiler (netctl enable). Nu kommer Orange Pi att ansluta till de tvÄ nödvÀndiga nÀtverken efter omstart. Adresserna för grÀnssnitten pÄ Orange Pi konfigureras i statiska leasingar pÄ routern.
ip addr show
4: vlan-main@eth0: 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: 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: 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: 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-konfiguration
NÀsta steg Àr att kopiera instÀllningarna för OpenVPN och nycklarna frÄn routern. InstÀllningarna kan vanligtvis hÀmtas frÄn /tmp/etc/openvpn*.conf
Som standard hÄller openvpn, körd i TAP-lÀge och server-brygga, sitt grÀnssnitt inaktivt. För att allt ska fungera mÄste ett skript lÀggas till som körs nÀr anslutningen aktiveras.
/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}
Som ett resultat kommer grĂ€nssnittet vpn-main att lĂ€ggas till i br-main sĂ„ snart anslutningen sker. För gĂ€stnĂ€tverket â pĂ„ liknande sĂ€tt med avseende pĂ„ grĂ€nssnittsnamnet och adressen i server-brygga.
Ruttning av externa förfrÄgningar och proxying
Vid det hÀr steget kan Orange Pi redan ta emot anslutningar och slÀppa in klienter i de nödvÀndiga nÀtverken. Det ÄterstÄr att konfigurera proxying av inkommande anslutningar pÄ routern.
Flytta routerns VPN-servrar till andra portar, installera HAProxy pÄ routern och konfigurera den:
/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
Vi njuter
Om allt gÄr enligt plan kommer kunderna att gÄ över till Orange Pi och routerns processor kommer inte lÀngre att bli överhettad, medan VPN-hastigheten kommer att öka avsevÀrt. Samtidigt kommer alla nÀtverksregler som angivits pÄ routern att förbli aktuella. I hÀndelse av en krasch pÄ Orange Pi kommer den att falla bort och HAProxy kommer att dirigera kunderna till de lokala servrarna.
Tack för din uppmÀrksamhet, synpunkter och korrigeringar vÀlkomnas.
KĂ€lla: habr.com
