Hallo allemaal, heb ik onlangs gelezen
Taak
Er is een TP-Link WDR3500-router en een Orange Pi Zero H2. We willen dat de Orange Pi de tunnels zoals gewoonlijk versleutelt, en als er iets mee gebeurt, keert de VPN-verwerking terug naar de router. Alle firewall-instellingen op de router zouden moeten werken zoals voorheen. En over het algemeen moet het toevoegen van extra hardware transparant en onmerkbaar voor iedereen zijn. OpenVPN werkt via TCP, de TAP-adapter bevindt zich in bridge-modus (server-bridge).
beslissing
In plaats van verbinding te maken via USB, besloot ik één poort van de router te gebruiken en alle subnetten die een VPN-brug hebben met de Orange Pi te verbinden. Het blijkt dat de hardware fysiek in dezelfde netwerken blijft hangen als de VPN-server op de router. Daarna installeren we precies dezelfde servers op de Orange Pi, en op de router zetten we een soort proxy op zodat deze alle inkomende verbindingen naar de externe server stuurt, en als de Orange Pi dood of niet beschikbaar is, dan naar de interne fallback-server. Ik heb HAProxy gebruikt.
Het blijkt als volgt:
- Er komt een cliΓ«nt aan
- Als de externe server niet beschikbaar is, zoals voorheen, gaat de verbinding naar de interne server
- Indien beschikbaar wordt de klant geaccepteerd door Orange Pi
- VPN op Orange Pi decodeert pakketten en spuugt ze terug in de router
- De router leidt ze ergens heen
Implementatie voorbeeld
Laten we dus zeggen dat we twee netwerken op de router hebben: main(1) en guest(2), voor elk daarvan is er een OpenVPN-server om extern verbinding te maken.
Netwerk configuratie
We moeten beide netwerken via één poort routeren, dus creëren we 2 VLAN's.
Maak op de router, in de sectie Netwerk/Switch, VLAN's aan (bijvoorbeeld 1 en 2) en schakel deze in getagde modus in op de gewenste poort. Voeg de nieuw gemaakte eth0.1 en eth0.2 toe aan de overeenkomstige netwerken (bijvoorbeeld voeg ze toe aan de brug).
Op Orange Pi creΓ«ren we twee VLAN-interfaces (ik heb 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-guest
Description='Guest VLAN on eth0'
Interface=vlan-guest
Connection=vlan
BindsToInterfaces=eth0
VLANID=2
IP=no
En we creΓ«ren meteen twee bruggen voor hen:
/etc/netctl/br-main
Description="Main Bridge connection"
Interface=br-main
Connection=bridge
BindsToInterfaces=(vlan-main)
IP=dhcp
/etc/netctl/br-guest
Description="Guest Bridge connection"
Interface=br-guest
Connection=bridge
BindsToInterfaces=(vlan-guest)
IP=dhcp
Schakel autostart in voor alle vier de profielen (netctl enable). Nu zal de Orange Pi na een herstart op de twee vereiste netwerken blijven hangen. We configureren de interface-adressen op de Orange Pi in Static Leases op de 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
Een VPN instellen
Vervolgens kopiΓ«ren we de instellingen voor OpenVPN en sleutels van de router. Instellingen zijn meestal te vinden in /tmp/etc/openvpn*.conf
Standaard houdt openvpn in TAP-modus en server-bridge de interface inactief. Om alles te laten werken, moet je een script toevoegen dat wordt uitgevoerd wanneer de verbinding wordt geactiveerd.
/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}
Als gevolg hiervan wordt, zodra de verbinding tot stand komt, de vpn-main interface toegevoegd aan br-main. Voor het gastraster - op dezelfde manier, tot aan de interfacenaam en het adres in server-bridge.
Externe routering van verzoeken en proxying
Bij deze stap kan Orange Pi al verbindingen accepteren en clients verbinden met de vereiste netwerken. Het enige dat overblijft is het configureren van proxying van inkomende verbindingen op de router.
We zetten de VPN-servers van de router over naar andere poorten, installeren HAProxy op de router en configureren:
/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
Genieten
Als alles volgens plan verloopt, zullen klanten overstappen op Orange Pi, zal de processor van de router niet meer warm worden en zal de VPN-snelheid aanzienlijk toenemen. Tegelijkertijd blijven alle netwerkregels die op de router zijn geregistreerd relevant. Bij een ongeluk met de Orange Pi zal deze eraf vallen en zal HAProxy clients overbrengen naar lokale servers.
Bedankt voor uw aandacht, suggesties en correcties zijn welkom.
Bron: www.habr.com