Moien alleguer, ech liesen viru kuerzem
Objective
Et gëtt en TP-Link WDR3500 Router an Orange Pi Zero H2. Mir wëllen datt Orange Pi Tunnel am normale Modus verschlësselt, a wann eppes geschitt ass, gëtt d'VPN-Veraarbechtung zréck op de Router. All Firewall-Astellungen um Router solle funktionnéieren wéi virdrun. An am Allgemengen, am Allgemengen, soll d'Zousatz vun engem zousätzleche Stéck Eisen transparent an onmerkbar fir jiddereen sinn. OpenVPN funktionnéiert iwwer TCP, TAP Adapter am Bréckmodus (Server-Bréck).
Decisioun
Amplaz iwwer USB ze verbannen, hunn ech décidéiert en Hafen vum Router ze verbréngen an all Subnets ze verbannen déi eng VPN Bréck op Orange Pi hunn. Et stellt sech eraus datt d'Stéck Eisen kierperlech an de selwechte Netzwierker hänkt wéi de VPN Server um Router. Duerno erhéijen mir genau déiselwecht Serveren um Orange Pi, an um Router hu mir eng Aart Proxy ageriicht, sou datt et all erakommen Verbindungen op den externen Server schéckt, a wann den Orange Pi dout oder net verfügbar ass, dann op den intern Fallback Server. Ech hunn HAProxy geholl.
Et stellt sech sou eraus:
- Client kënnt
- Wann den externen Server net verfügbar ass - wéi virdrun, geet d'Verbindung op den internen Server
- Wann verfügbar, gëtt de Client vun Orange Pi akzeptéiert
- VPN op Orange Pi entschlësselt Päckchen a spuckt se zréck op de Router
- Router routes hinnen iergendwou
Ëmsetzung Beispill
Also, loosst eis soen datt mir zwee Netzwierker um Router hunn - Main (1) a Gaascht (2), fir jidderee gëtt et en OpenVPN Server fir vu baussen ze verbannen.
Network Configuratioun
Mir mussen béid Netzwierker duerch een Hafen passéieren, also kreéiere mir 2 VLANs.
Um Router, an der Network / Switch Sektioun, erstellt VLANs (zum Beispill 1 an 2) a schalt se am tagged Modus op de gewënschten Hafen un, füügt déi nei erstallt eth0.1 an eth0.2 un déi passend Netzwierker (fir zum Beispill, add to brigde).
Op Orange Pi kreéiere mir zwee VLAN Interfaces (ech hunn 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
An direkt zwou Brécke fir si kreéieren:
/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
Aktivéiert Autostart fir all 4 Profiler (netctl aktivéieren). Elo, nom Neistart, hänkt Orange Pi an den zwee erfuerderlechen Netzwierker. Interface Adressen op Orange Pi sinn a Static Leases um Router konfiguréiert.
ip addr weisen
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 Setup
Als nächst kopéiert d'Astellunge fir OpenVPN a Schlësselen vum Router. D'Astellunge kënnen normalerweis aus geholl ginn /tmp/etc/openvpn*.conf
Par défaut hält openvpn am TAP Modus a Server-Bréck seng Interface inaktiv. Fir et ze schaffen, musst Dir e Skript addéieren deen leeft wann d'Verbindung aktivéiert ass.
/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 Resultat, soubal eng Verbindung geschitt ass, gëtt d'vpn-Main Interface op br-main bäigefüügt. Fir de Gaaschtgitter ass et ähnlech bis zum Interfacenumm an der Adress an der Serverbréck.
Extern Ufro Routing a Proxying
Op dësem Schrëtt ass Orange Pi scho fäeg Verbindungen ze akzeptéieren an Clienten an déi gewënscht Netzwierker ze loossen. Et bleift fir Proxying vun erakommende Verbindungen um Router ze konfiguréieren.
Mir transferéieren Router VPN Serveren op aner Ports, installéiere HAProxy um Router a konfiguréieren:
/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
genéissen
Wann alles no Plang gaang ass, ginn d'Clienten op Orange Pi an de Routerprozessor wäert net méi waarm ginn, an d'VPN-Geschwindegkeet wäert wesentlech eropgoen. Zur selwechter Zäit bleiwen all Netzwierkregelen, déi um Router registréiert sinn, relevant. Am Fall vun engem Accident op der Orange Pi fällt et erof an HAProxy wéckelt Clienten op lokalen Serveren.
Merci fir Är Opmierksamkeet, Virschléi a Korrekturen si wëllkomm.
Source: will.com