Hər kəsə salam, mən bu yaxınlarda oxudum
Tapşırıq
TP-Link WDR3500 marşrutlaşdırıcısı və Orange Pi Zero H2 var. İstəyirik ki, Orange Pi-nin həmişə olduğu kimi tunelləri şifrələsin və əgər onunla nəsə baş verərsə, VPN emalı yenidən marşrutlaşdırıcıya qayıdacaq. Routerdəki bütün firewall parametrləri əvvəlki kimi işləməlidir. Və ümumiyyətlə, əlavə avadanlıqların əlavə edilməsi şəffaf və hər kəs üçün görünməz olmalıdır. OpenVPN TCP üzərində işləyir, TAP adapteri körpü rejimindədir (server-körpü).
qərar
USB vasitəsilə qoşulmaq əvəzinə, marşrutlaşdırıcının bir portundan istifadə etmək və VPN körpüsü olan bütün alt şəbəkələri Orange Pi-yə qoşmaq qərarına gəldim. Məlum oldu ki, aparat fiziki olaraq marşrutlaşdırıcıdakı VPN serveri ilə eyni şəbəkələrdə asılacaq. Bundan sonra biz Orange Pi-də tam olaraq eyni serverləri quraşdırırıq və marşrutlaşdırıcıda bir növ proksi quraşdırırıq ki, o, bütün daxil olan əlaqələri xarici serverə göndərsin və Orange Pi ölü və ya mövcud deyilsə, o zaman daxili ehtiyat server. HAProxy aldım.
Bu belə çıxır:
- Bir müştəri gəlir
- Xarici server mövcud deyilsə, əvvəlki kimi, əlaqə daxili serverə keçir
- Əgər varsa, müştəri Orange Pi tərəfindən qəbul edilir
- Orange Pi-də VPN paketlərin şifrəsini açır və onları yenidən marşrutlaşdırıcıya tüpürür
- Router onları harasa istiqamətləndirir
İcra nümunəsi
Beləliklə, deyək ki, marşrutlaşdırıcıda iki şəbəkəmiz var - əsas(1) və qonaq(2), onların hər biri üçün xaricdən qoşulmaq üçün OpenVPN serveri var.
Şəbəkə konfiqurasiyası
Biz hər iki şəbəkəni bir port vasitəsilə marşrutlaşdırmalıyıq, ona görə də biz 2 VLAN yaradırıq.
Routerdə Şəbəkə/Keçid bölməsində VLAN-lar yaradın (məsələn, 1 və 2) və onları istədiyiniz portda etiketli rejimdə aktivləşdirin, yeni yaradılmış eth0.1 və eth0.2-ni müvafiq şəbəkələrə əlavə edin (məsələn, onları brigde əlavə edin).
Orange Pi-də iki VLAN interfeysi yaradırıq (məndə Archlinux ARM + netctl var):
/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
Və dərhal onlar üçün iki körpü yaradırıq:
/etc/netctl/br-main
Description="Main Bridge connection"
Interface=br-main
Connection=bridge
BindsToInterfaces=(vlan-main)
IP=dhcp
/etc/netctl/br-qonaq
Description="Guest Bridge connection"
Interface=br-guest
Connection=bridge
BindsToInterfaces=(vlan-guest)
IP=dhcp
Bütün 4 profil üçün avtomatik başlamanı aktivləşdirin (netctl aktivləşdirin). İndi yenidən başladıqdan sonra Orange Pi iki tələb olunan şəbəkədə asılı olacaq. Routerdə Static Leases-də Orange Pi-də interfeys ünvanlarını konfiqurasiya edirik.
ip addr şou
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 quraşdırma
Sonra, OpenVPN parametrlərini və açarları marşrutlaşdırıcıdan kopyalayırıq. Parametrləri adətən burada tapa bilərsiniz /tmp/etc/openvpn*.conf
Varsayılan olaraq, TAP rejimində və server körpüsündə işləyən openvpn interfeysini qeyri-aktiv saxlayır. Hər şeyin işləməsi üçün əlaqə aktivləşdirildikdə işləyən skript əlavə etməlisiniz.
/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}
Nəticədə, əlaqə yaranan kimi vpn-main interfeysi br-main-ə əlavə olunacaq. Qonaq şəbəkəsi üçün - oxşar şəkildə, server körpüsündə interfeys adı və ünvanı qədər.
Xaricə yönləndirmə sorğuları və proxy
Bu addımda Orange Pi artıq əlaqələri qəbul edə və müştəriləri tələb olunan şəbəkələrə qoşa bilir. Yalnız marşrutlaşdırıcıda daxil olan bağlantıların proksisini konfiqurasiya etmək qalır.
Routerin VPN serverlərini digər portlara köçürür, marşrutlaşdırıcıya HAProxy quraşdırır və konfiqurasiya edirik:
/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
Zövq alın
Hər şey plana uyğun getsə, müştərilər Orange Pi-yə keçəcək və marşrutlaşdırıcının prosessoru artıq qızmayacaq və VPN sürəti əhəmiyyətli dərəcədə artacaq. Eyni zamanda, marşrutlaşdırıcıda qeydə alınan bütün şəbəkə qaydaları aktual qalacaq. Orange Pi-də qəza baş verərsə, o, yıxılacaq və HAProxy müştəriləri yerli serverlərə köçürəcək.
Diqqətiniz üçün təşəkkür edirik, təklif və düzəlişlər qəbul olunur.
Mənbə: www.habr.com