Biz sürətləndiririk OpenVPN OpenWRT routerdə. Lehimləmə dəmiri və aparat ekstremizmi olmayan alternativ versiya.

Biz sürətləndiririk OpenVPN OpenWRT routerdə. Lehimləmə dəmiri və aparat ekstremizmi olmayan alternativ versiya.

Hər kəsə salam, mən bu yaxınlarda oxudum köhnə məqalə necə sürətləndirə biləcəyiniz barədə OpenVPN Routerdə şifrələməni routerin özündə lehimlənmiş ayrı bir aparat parçasına köçürürəm. Müəlliflə oxşar bir vəziyyətim var - 128 MB RAM və tunel şifrələməsini ümumiyyətlə idarə edə bilməyən zəif prosessorlu TP-Link WDR3500. Bununla belə, routerə lehimləmə dəmiri ilə girmək qətiyyən istəmədim. Təcrübəm çox aşağıdır. OpenVPN fövqəladə hallarda routerdə ehtiyat nüsxəsi olan ayrı bir aparat parçasına.

Tapşırıq

Bizim TP-Link WDR3500 routerimiz və Orange Pi Zero H2 var. Orange Pi-nin tunel şifrələməsini normal rejimdə idarə etməsini istəyirik, amma əgər ona bir şey baş verərsə, emal Pi tərəfindən idarə olunacaq. VPN Routerə geri qaytarılacaq. Routerdəki bütün firewall parametrləri əvvəlki kimi işləməlidir. Ümumilikdə, əlavə avadanlıqların əlavə edilməsi şəffaf və hər kəs üçün nəzərə çarpmayan olmalıdır. OpenVPN körpü rejimində (server-bridge) TCP, TAP adapteri vasitəsilə işləyir.

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ə var - main(1) və guest(2), onların hər biri üçün OpenVPN kənardan qoşulmaq üçün server.

Şə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, parametrləri routerdən kopyalayırıq OpenVPN və düymələr. Parametrlər adətən aşağıdakılardan götürülə bilər /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

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster