Vi snabbar upp OpenVPN pÄ Openwrt-routern. Alternativ version utan lödning och hÄrdvaruextremism

Vi snabbar upp OpenVPN pÄ Openwrt-routern. Alternativ version utan lödning och hÄrdvaruextremism

Hej alla, jag lĂ€ste nyligen en gammal artikel 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:

  1. En klient ansluter
  2. Om den externa servern inte Ă€r tillgĂ€nglig — som tidigare gĂ„r anslutningen till den interna servern
  3. Om den Ă€r tillgĂ€nglig — tar Orange Pi emot klienten
  4. VPN pÄ Orange Pi avkrypterar paketen och skickar tillbaka dem till routern
  5. 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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster