Openwrt marşrutlaşdırıcısında OpenVPN sürətləndirilir. Lehimləmə dəmiri və aparat ekstremizmi olmadan alternativ versiya

Openwrt marşrutlaşdırıcısında OpenVPN sürətləndirilir. Lehimləmə dəmiri və aparat ekstremizmi olmadan alternativ versiya

Hər kəsə salam, mən bu yaxınlarda oxudum köhnə məqalə şifrələməni marşrutlaşdırıcının özündə lehimlənmiş ayrıca bir aparat parçasına köçürməklə marşrutlaşdırıcıda OpenVPN-ni necə sürətləndirə biləcəyiniz haqqında. Müəllifə bənzər bir işim var - 3500 meqabayt operativ yaddaşa malik TP-Link WDR128 və tunel şifrələməsinin öhdəsindən tamamilə gələ bilməyən zəif prosessor. Ancaq mən tamamilə lehimləmə dəmiri ilə marşrutlaşdırıcıya girmək istəmədim. Aşağıda qəza halında OpenVPN-i marşrutlaşdırıcıda ehtiyat nüsxəsi olan ayrı bir aparat parçasına köçürmək təcrübəm var.

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:

  1. Bir müştəri gəlir
  2. Xarici server mövcud deyilsə, əvvəlki kimi, əlaqə daxili serverə keçir
  3. Əgər varsa, müştəri Orange Pi tərəfindən qəbul edilir
  4. Orange Pi-də VPN paketlərin şifrəsini açır və onları yenidən marşrutlaşdırıcıya tüpürür
  5. 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

Добавить комментарий