Bespoedig OpenVPN op 'n Openwrt-router. Alternatiewe weergawe sonder soldeerbout en hardeware-ekstremisme

Bespoedig OpenVPN op 'n Openwrt-router. Alternatiewe weergawe sonder soldeerbout en hardeware-ekstremisme

Hallo almal, ek het onlangs gelees ou artikel oor hoe u OpenVPN op 'n router kan bespoedig deur enkripsie na 'n aparte stuk hardeware oor te dra, wat binne die router self gesoldeer is. Ek het 'n soortgelyke geval as die skrywer - TP-Link WDR3500 met 128 megagrepe RAM en 'n swak verwerker wat heeltemal nie in staat is om tonnel-enkripsie te hanteer nie. Ek wou egter absoluut nie met 'n soldeerbout in die router kom nie. Hieronder is my ervaring om OpenVPN na 'n aparte stuk hardeware te skuif met rugsteun op die router in geval van 'n ongeluk.

Taak

Daar is 'n TP-Link WDR3500-roeteerder en 'n Orange Pi Zero H2. Ons wil hΓͺ die Orange Pi moet die tonnels soos gewoonlik enkripteer, en as iets daarmee gebeur, sal die VPN-verwerking na die router terugkeer. Alle firewall-instellings op die router behoort te werk soos voorheen. En oor die algemeen moet die byvoeging van bykomende hardeware deursigtig en onopvallend vir almal wees. OpenVPN werk oor TCP, die TAP-adapter is in brugmodus (bedienerbrug).

besluit

In plaas daarvan om via USB te koppel, het ek besluit om een ​​poort van die router te gebruik en alle subnette wat 'n VPN-brug het aan die Orange Pi te koppel. Dit blyk dat die stuk hardeware fisies in dieselfde netwerke sal hang as die VPN-bediener op die router. Daarna installeer ons presies dieselfde bedieners op die Orange Pi, en op die router stel ons 'n soort instaanbediener op sodat dit alle inkomende verbindings na die eksterne bediener stuur, en as die Orange Pi dood of nie beskikbaar is nie, dan na die interne terugvalbediener. Ek het HAProxy geneem.

Dit blyk so uit:

  1. 'n KliΓ«nt kom aan
  2. As die eksterne bediener nie beskikbaar is nie, soos voorheen, gaan die verbinding na die interne bediener
  3. Indien beskikbaar, word die kliΓ«nt deur Orange Pi aanvaar
  4. VPN op Orange Pi dekripteer pakkies en spoeg dit terug in die router
  5. Die router stuur hulle iewers heen

Implementering voorbeeld

So, kom ons sΓͺ ons het twee netwerke op die router - hoof(1) en gas(2), vir elkeen van hulle is daar 'n OpenVPN-bediener om ekstern te koppel.

Netwerkopset

Ons moet beide netwerke deur een poort stuur, so ons skep 2 VLAN's.

Op die router, in die Netwerk/Skakel-afdeling, skep VLAN's (byvoorbeeld 1 en 2) en aktiveer hulle in gemerkte modus op die verlangde poort, voeg die nuutgeskepte eth0.1 en eth0.2 by die ooreenstemmende netwerke (byvoorbeeld, voeg hulle by brigde).

Op Orange Pi skep ons twee VLAN-koppelvlakke (ek het 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-gas

Description='Guest VLAN on eth0'
Interface=vlan-guest
Connection=vlan
BindsToInterfaces=eth0
VLANID=2
IP=no

En ons skep dadelik twee brΓ»e vir hulle:

/etc/netctl/br-main

Description="Main Bridge connection"
Interface=br-main
Connection=bridge
BindsToInterfaces=(vlan-main)
IP=dhcp

/etc/netctl/br-gas

Description="Guest Bridge connection"
Interface=br-guest
Connection=bridge
BindsToInterfaces=(vlan-guest)
IP=dhcp

Aktiveer outobegin vir al 4 profiele (netctl enable). Nou na 'n herlaai, sal die Orange Pi op die twee vereiste netwerke hang. Ons konfigureer die koppelvlakadresse op die Orange Pi in Static Leases op die router.

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

Vervolgens kopieer ons die instellings vir OpenVPN en sleutels vanaf die router. Instellings kan gewoonlik gevind word in /tmp/etc/openvpn*.conf

Openvpn wat standaard in TAP-modus en bedienerbrug loop, hou sy koppelvlak onaktief. Vir alles om te werk, moet jy 'n skrip byvoeg wat loop wanneer die verbinding geaktiveer is.

/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}

As gevolg hiervan, sodra die verbinding plaasvind, sal die vpn-hoofkoppelvlak by br-main gevoeg word. Vir die gasrooster - net so, tot by die koppelvlaknaam en -adres in bedienerbrug.

Stuur versoeke ekstern en volmag

Op hierdie stap is Orange Pi reeds in staat om verbindings te aanvaar en kliΓ«nte aan die vereiste netwerke te koppel. Al wat oorbly, is om instaanbediener van inkomende verbindings op die router op te stel.

Ons dra die router VPN-bedieners oor na ander poorte, installeer HAProxy op die router en stel op:

/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

Geniet

As alles volgens plan verloop, sal kliΓ«nte na Orange Pi oorskakel en die roeteerder se verwerker sal nie meer warm word nie, en VPN-spoed sal aansienlik toeneem. Terselfdertyd sal alle netwerkreΓ«ls wat op die router geregistreer is, relevant bly. In die geval van 'n ongeluk op die Orange Pi, sal dit afval en HAProxy sal kliΓ«nte na plaaslike bedieners oordra.

Dankie vir u aandag, voorstelle en regstellings is welkom.

Bron: will.com

Voeg 'n opmerking