OpenWrt router-də OpenVPN sürətləndirilir. Solderlə olmadan və hardware ekstremizmi olmadan alternativ versiya

OpenWrt router-də OpenVPN sürətləndirilir. Solderlə olmadan və hardware ekstremizmi olmadan alternativ versiya

Hər kəsə salam, yaxınlarda köhnə bir məqalə OpenVPN-in sürətini artırmaq barədə oxudum, şifrələməni router-in içindəki ayrı bir cihazda keçirərək. Mənim də müəlliflə eyni vəziyyətim var — TP-Link WDR3500, 128 megabayt RAM və zəif bir prosessor, hansı ki, tunellərin şifrələməsi ilə tam olaraq mübarizə aparmır. Amma, solder ilə router-ə girməyə cürət etmirdim. Aşağıda, OpenVPN-i ayrı bir cihazda işlətmək və routerdə ehtiyatla yanaşma təcrübəmi paylaşacağam.

Vəzifə

Mənimdə TP-Link WDR3500 router və Orange Pi Zero H2 var. İstəyirik ki, tunellərin şifrələnməsi normal vəziyyətdə Orange Pi tərəfindən həyata keçirilsin, eyni zamanda, əgər onunla bir şey olarsa, emal VPN yenidən router-ə qaytarılsın. Routerdəki bütün firewall tənzimləmələri əvvəlki kimi işləməlidir. Əslində, əlavə cihazın əlavə edilməsi hər kəs üçün şəffaf və görünməz olmalıdır. OpenVPN TCP vasitəsilə işləyir, TAP adapteri körpü rejimində (server-bridge).

Həll

Mən USB bağlantısı əvəzinə router-in bir portunu istifadə etməyə qərar verdim və onun vasitəsilə Orange Pi-yə VPN körpüsü olan bütün şəbəkələri bağlayıram. Bu vəziyyətdə, cihaz fiziki olaraq routerdəki VPN serverləri ilə eyni şəbəkələrdə olacaq. Bundan sonra, Orange Pi-də eyni serverləri qururuq və routerdə hər hansı bir proxy tənzimləyərək bütün daxil olan bağlantıları xarici serverə yönləndiririk, əgər Orange Pi-nin vəziyyəti pis olarsa və ya əlçatan olmazsa — içəriyə yönləndirilən ehtiyat serverə.

Belə görünür:

  1. Müştəri gəlir
  2. Əgər xarici server əlçatan deyilsə — əvvəlki kimi bağlantı daxili serverə gedir
  3. Əgər əlçatandırsa — müştəri Orange Pi tərəfindən qəbul edilir
  4. VPN Orange Pi-də paketləri deşifrə edir və onları geri router-ə atır
  5. Router onları bir yerə yönləndirir

Tətbiq nümunəsi

Beləliklə, routerdə iki şəbəkə var — main(1) və guest(2), hər birinin xaricdən bağlantı üçün bir OpenVPN serveri var.

Şəbəkə konfiqurasiyası

Hər iki şəbəkəni bir port vasitəsilə keçirməyə çalışmalıyıq, buna görə də 2 VLAN yaradırıq.

Routerdə Network/Switch bölməsində VLAN-lar yaradırıq (məsələn 1 və 2) və onları lazım olan portda tagged rejimində aktiv edirik, yeni yaradılmış eth0.1 və eth0.2-ni müvafiq şəbəkələrə (məsələn, körpüyə əlavə edirik).

Orange Pi-də iki VLAN interfeysi yaradırıq (mənimdə 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-guest

Description="Guest Bridge connection"
Interface=br-guest
Connection=bridge
BindsToInterfaces=(vlan-guest)
IP=dhcp

Bütün 4 profili (netctl enable) avtomatik aktiv edirik. İndi Orange Pi yenidən başladıqda, tələb olunan iki şəbəkədə olacaq. Orange Pi-dəki interfeys adreslərini routerdə Static Leases-də tənzimləyirik.

ip addr show

4: vlan-main@eth0:  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:  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:  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:  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 konfiqurasiyası

Daha sonra OpenVPN üçün routerdən parametrləri və açarları köçürürük. Parametrləri ümumiyyətlə burada tapa bilərsiniz /tmp/etc/openvpn*.conf

Varsayılan olaraq, TAP rejimində işləyən openvpn və server-bridge öz interfeysini passiv saxlayır. Hər şeyin işləməsi üçün bağlantı aktivləşərkən işə düşən bir skript əlavə etmək lazımdır.

/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ə bağlantı baş verdikdə, vpn-main interfeysi br-mainə əlavə ediləcək. Guest şəbəkəsi üçün də, interfeys adı və server-bridge-dəki adresi də daxil olmaqla eynilə.

Dışardan sorğuların yönləndirilməsi və proksi xidmət

Bu mərhələdə Orange Pi artıq bağlantıları qəbul etməyi bacarır və müştəriləri lazım olan şəbəkələrə buraxır. İndi routerdə daxil olan bağlantıların proksi xidmətini konfiqurasiya etmək lazımdır.

Router VPN serverlərini digər portlara köçürürük, routerdə HAProxy quraşdırırıq 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

Nüansdan zövq alırıq

Hər şey plan üzrə getdisə - müştərilər Orange Pi-yə yönləndiriləcək və routerin prosessoru artıq istilənməyəcək, VPN sürəti isə nəzərəçarpacaq dərəcədə artacaq. Bununla yanaşı, routerdə təyin olunmuş bütün şəbəkə qaydaları qüvvədə qalacaq. Orange Pi-də qəza baş verdikdə, müvafiq ağır xidmət yerli serverlərə müştəriləri yönləndirəcək.

Diqqətinizə görə təşəkkür edirik, təkliflər və düzəlişlərə açığıq.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster