
Hallo allemaal, ik heb onlangs een oud artikel gelezen Er is een TP-Link WDR3500 router en een Orange Pi Zero H2. We willen dat de encryptie van de tunnels officieel door de Orange Pi wordt gedaan, terwijl, als er iets met de Pi gebeurt, de verwerking
Task
teruggaat naar de router. Alle firewall-instellingen op de router moeten zoals voorheen blijven functioneren. En in het algemeen moet de toevoeging van het extra apparaat voor iedereen transparant en onopvallend verlopen. OpenVPN werkt via TCP, de TAP-adapter in bridge-modus (server-bridge). VPN In plaats van een USB-verbinding te gebruiken, besloot ik een poort van de router te gebruiken en via die poort al zijn subnetten naar de Orange Pi te leiden, waarin de VPN-brug zich bevindt. Dat betekent dat het apparaat fysiek in dezelfde netwerken hangt als de VPN-servers op de router. Vervolgens zetten we precies dezelfde servers op de Orange Pi op, en op de router configureren we een proxy zodat deze alle binnenkomende verbindingen naar de externe server doorstuurt, en als de Orange Pi omgevallen is of niet bereikbaar is, dan naar de interne fallback-server. Ik ben HAProxy gaan gebruiken.
Oplossing
Het komt erop neer:
Een cliƫnt komt binnen
- Als de externe server niet bereikbaar is ā zoals voorheen, dan gaat de verbinding naar de interne server
- Als deze beschikbaar is ā neemt de Orange Pi de cliĆ«nt aan
- VPN op de Orange Pi decrypt de pakketten en gooit ze weer terug in de router
- De router routeert ze ergens naartoe
- Voorbeeld van implementatie
Laten we zeggen dat we op de router twee netwerken hebben ā main(1) en guest(2), voor elk van hen is er een OpenVPN-server voor verbinding van buitenaf.
We moeten beide netwerken via ƩƩn poort doorsturen, dus creƫren we 2 VLAN's.
Netwerkconfiguratie
Op de router in het gedeelte Network/Switch creƫren we VLAN's (bijvoorbeeld 1 en 2) en schakelen ze in tagged modus op de gewenste poort in, voegt de nieuw gemaakte eth0.1 en eth0.2 toe aan de bijbehorende netwerken (bijvoorbeeld door ze aan de bridge toe te voegen).
Op de Orange Pi creƫren we twee VLAN-interfaces (ik gebruik Archlinux ARM + netctl):
Description='Main VLAN op eth0' Interface=vlan-main Connection=vlan BindsToInterfaces=eth0 VLANID=1 IP=no
/etc/netctl/vlan-main
Description='Guest VLAN op eth0'
Interface=vlan-guest
Connection=vlan
BindsToInterfaces=eth0
VLANID=2
IP=no
/etc/netctl/vlan-guest
Description='Guest VLAN op 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
Beschrijving="Hoofdbrugverbinding"
Interface=br-hoofd
Verbinding=brug
BindtAanInterfaces=(vlan-hoofd)
IP=dhcp
/etc/netctl/br-guest
Beschrijving="Gastbrugverbinding"
Interface=br-gast
Verbinding=brug
BindtAanInterfaces=(vlan-gast)
IP=dhcp
We schakelen autostart in voor alle 4 profielen (netctl enable). Nu zal de Orange Pi na herstart in twee vereiste netwerken verschijnen. We configureren de IP-adressen van de interfaces op de Orange Pi in Static Leases op de router.
ip addr show
4: vlan-hoofd@eth0: mtu 1500 qdisc noqueue master br-hoofd 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-gast@eth0: mtu 1500 qdisc noqueue master br-gast 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-hoofd: 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-hoofd
valid_lft 29379sec preferred_lft 21439sec
inet6 fe80::50c7:fff:fe89:716e/64 scope link
valid_lft forever preferred_lft forever
7: br-gast: 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-gast
valid_lft forever preferred_lft forever
inet6 fe80::ecea:19ff:fe31:3432/64 scope link
valid_lft forever preferred_lft forever
VPN-configuratie
Vervolgens kopiƫren we de instellingen voor OpenVPN en de sleutels van de router. De instellingen zijn meestal verkrijgbaar in /tmp/etc/openvpn*.conf
Standaard houdt openvpn, dat draait in TAP-modus en server-bridge, zijn interface inactief. Om alles te laten werken, moet er een script worden toegevoegd dat wordt uitgevoerd bij het activeren van de verbinding.
/etc/openvpn/main.conf
dev vpn-hoofd
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 daarvan zal, zodra de verbinding tot stand komt, de interface vpn-hoofd worden toegevoegd aan br-hoofd. Voor het gastnetwerk is het vergelijkbaar, met dat verschil dat de naam van de interface en het adres in server-bridge anders zijn.
Routering van externe aanvragen en proxying
Op dit punt kan de Orange Pi al verbindingen accepteren en klanten naar de gewenste netwerken doorlaten. We moeten alleen nog de proxy voor binnenkomende verbindingen op de router instellen.
We verplaatsen de VPN-servers van de router 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, gaan klanten naar de Orange Pi en zal de processor van de router niet meer oververhitten, terwijl de snelheid van de VPN aanzienlijk toeneemt. Alle netwerkregels die op de router zijn ingesteld, blijven van kracht. In het geval van een storing op de Orange Pi zal deze uitvallen en zal HAProxy klanten naar lokale servers omleiden.
Bedankt voor uw aandacht, wensen en correcties zijn welkom.
Bron: habr.com
