Salutare tuturor, am citit recent
Sarcină
Există un router TP-Link WDR3500 și Orange Pi Zero H2. Dorim ca Orange Pi să cripteze tunelurile în modul normal, iar dacă se întâmplă ceva cu el, procesarea VPN va reveni înapoi la router. Toate setările firewall-ului de pe router ar trebui să funcționeze ca înainte. Și, în general, în general, adăugarea unei piese suplimentare de fier ar trebui să fie transparentă și imperceptibilă pentru toată lumea. OpenVPN funcționează prin TCP, adaptor TAP în modul bridge (server-bridge).
decizie
În loc să mă conectez prin USB, am decis să cheltuiesc un port al routerului și să conectez toate subrețelele care au un pod VPN la Orange Pi. Se pare că bucata de fier va atârna fizic în aceleași rețele ca și serverul VPN de pe router. După aceea, ridicăm exact aceleași servere pe Orange Pi, iar pe router am configurat un fel de proxy, astfel încât acesta să trimită toate conexiunile de intrare către un server extern, iar dacă Orange Pi este mort sau indisponibil, atunci la o rezervă internă. Server. Am luat HAProxy.
Se dovedește astfel:
- Clientul sosește
- Dacă serverul extern nu este disponibil - ca și înainte, conexiunea se duce la serverul intern
- Dacă este disponibil, clientul este acceptat de Orange Pi
- VPN pe Orange Pi decriptează pachetele și le scuipă înapoi către router
- Routerul le direcționează undeva
Exemplu de implementare
Deci, să presupunem că avem două rețele pe router - main(1) și guest(2), pentru fiecare dintre ele există un server OpenVPN pentru conectarea din exterior.
Configurarea Rețelei
Trebuie să trecem ambele rețele printr-un singur port, așa că creăm 2 VLAN-uri.
Pe router, în secțiunea Network / Switch, creați VLAN-uri (de exemplu, 1 și 2) și activați-le în modul etichetat pe portul dorit, adăugați eth0.1 și eth0.2 nou create la rețelele corespunzătoare (pentru de exemplu, adăugați la bridge).
Pe Orange Pi creăm două interfețe VLAN (am 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
Și creați imediat două punți pentru ei:
/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
Activați pornirea automată pentru toate cele 4 profiluri (activare netctl). Acum, după repornire, Orange Pi se va bloca în cele două rețele necesare. Adresele de interfață de pe Orange Pi sunt configurate în Închirieri statice pe 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
Configurare VPN
Apoi, copiați setările pentru OpenVPN și cheile de pe router. De obicei, setările pot fi preluate din /tmp/etc/openvpn*.conf
În mod implicit, openvpn rulează în modul TAP și server-bridge își păstrează interfața inactivă. Pentru ca acesta să funcționeze, trebuie să adăugați un script care rulează atunci când conexiunea este activată.
/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}
Ca rezultat, de îndată ce apare o conexiune, interfața vpn-main va fi adăugată la br-main. Pentru grila oaspeților, este similar cu numele și adresa interfeței din server-bridge.
Dirijarea cererilor externe și proxy
La acest pas, Orange Pi este deja capabil să accepte conexiuni și să permită clienților să intre în rețelele dorite. Rămâne să configurați proxy-ul conexiunilor de intrare pe router.
Transferăm servere VPN de router în alte porturi, instalăm HAProxy pe router și configuram:
/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
bucură-te
Dacă totul a decurs conform planului, clienții vor merge la Orange Pi și procesorul routerului nu se va mai încălzi, iar viteza VPN va crește semnificativ. În același timp, toate regulile de rețea care sunt înregistrate pe router vor rămâne relevante. În cazul unui accident pe Orange Pi, acesta va cădea și HAProxy va împacheta clienții pe serverele locale.
Vă mulțumim pentru atenție, sugestiile și corecturile sunt binevenite.
Sursa: www.habr.com