Openwrt маршрутизаторында OpenVPN жылдамдығын арттыру. Дәнекерлеу және аппараттық экстремизмсіз балама нұсқасы

Openwrt маршрутизаторында OpenVPN жылдамдығын арттыру. Дәнекерлеу және аппараттық экстремизмсіз балама нұсқасы

Барлығына сәлем, мен жақында оқыдым ескі мақала маршрутизаторда шифрлауды маршрутизатордың ішінде дәнекерленген бөлек аппараттық құралға тасымалдау арқылы OpenVPN қызметін қалай жылдамдатуға болатындығы туралы. Менде авторға ұқсас жағдай бар - 3500 мегабайт жедел жады бар TP-Link WDR128 және туннельді шифрлауды толығымен жеңе алмайтын нашар процессор. Дегенмен, мен маршрутизаторға дәнекерлеу үтікпен кіргім келмеді. Төменде апат болған жағдайда маршрутизаторда сақтық көшірмесі бар OpenVPN-ді бөлек аппараттық құралға көшіру тәжірибем берілген.

Мақсаты

TP-Link WDR3500 маршрутизаторы және Orange Pi Zero H2 бар. Біз Orange Pi туннельдерді әдеттегідей шифрлауын қалаймыз және оған бірдеңе болса, VPN өңдеуі маршрутизаторға қайта оралады. Маршрутизатордағы барлық брандмауэр параметрлері бұрынғыдай жұмыс істеуі керек. Жалпы, қосымша жабдықты қосу мөлдір және барлығына байқалмайтын болуы керек. OpenVPN TCP арқылы жұмыс істейді, TAP адаптері көпір режимінде (сервер-көпір).

шешім

USB арқылы қосылудың орнына мен маршрутизатордың бір портын пайдалануды және VPN көпірі бар барлық ішкі желілерді Orange Pi-ге қосуды шештім. Аппараттық құрал маршрутизатордағы VPN сервері сияқты желілерде физикалық түрде ілінетіні белгілі болды. Осыдан кейін біз дәл сол серверлерді Orange Pi-ге орнатамыз, ал маршрутизаторда біз барлық кіріс қосылымдарды сыртқы серверге жіберетіндей прокси-серверді орнатамыз, ал егер Orange Pi өлі немесе қолжетімсіз болса, онда ішкі резервтік сервер. Мен HAProxy қабылдадым.

Мынадай көрінеді:

  1. Клиент келеді
  2. Егер сыртқы сервер қолжетімсіз болса, бұрынғыдай қосылым ішкі серверге өтеді
  3. Қол жетімді болса, клиент Orange Pi арқылы қабылданады
  4. Orange Pi жүйесіндегі VPN пакеттердің шифрын шешеді және оларды маршрутизаторға қайта жібереді
  5. Маршрутизатор оларды бір жерге бағыттайды

Іске асыру мысалы

Сонымен, бізде маршрутизаторда екі желі бар делік - негізгі (1) және қонақ (2), олардың әрқайсысы үшін сыртқы қосылу үшін OpenVPN сервері бар.

Желінің конфигурациясы

Біз екі желіні бір порт арқылы бағыттауымыз керек, сондықтан біз 2 VLAN жасаймыз.

Маршрутизаторда «Желі/қосылғыш» бөлімінде VLAN желілерін жасаңыз (мысалы, 1 және 2) және оларды қажетті портта тегтелген режимде қосыңыз, сәйкес желілерге жаңадан жасалған eth0.1 және eth0.2 қосыңыз (мысалы, оларды бригадаға қосыңыз).

Orange Pi-де біз екі VLAN интерфейсін жасаймыз (менде 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

Біз олар үшін бірден екі көпір жасаймыз:

/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

Барлық 4 профиль үшін автоматты іске қосуды қосыңыз (netctl қосу). Енді қайта жүктеуден кейін Orange Pi екі қажетті желіге ілінеді. Маршрутизатордағы Static Leases ішіндегі Orange Pi интерфейсінің мекенжайларын конфигурациялаймыз.

ip addr шоу

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 орнату

Содан кейін біз OpenVPN параметрлерін және маршрутизатордан кілттерді көшіреміз. Параметрлерді әдетте мына жерден табуға болады /tmp/etc/openvpn*.conf

Әдепкі бойынша, TAP режимінде және сервер-көпірде жұмыс істейтін openvpn интерфейсін белсенді емес сақтайды. Барлығы жұмыс істеуі үшін қосылым іске қосылғанда жұмыс істейтін сценарийді қосу керек.

/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}

Нәтижесінде қосылым орын алған бойда vpn-main интерфейсі br-main-ге қосылады. Қонақ торы үшін - сол сияқты сервер-көпірдегі интерфейс атауы мен мекенжайына дейін.

Сұраныстарды сыртқы бағыттау және проксиді жіберу

Бұл қадамда Orange Pi қосылымдарды қабылдап, клиенттерді қажетті желілерге қоса алады. Маршрутизатордағы кіріс қосылымдарының проксиін конфигурациялау ғана қалады.

Біз маршрутизатордың VPN серверлерін басқа порттарға тасымалдаймыз, маршрутизаторға HAProxy орнатамыз және конфигурациялаймыз:

/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

Ләззат алыңыз

Егер бәрі жоспарға сай болса, клиенттер Orange Pi-ге ауысады және маршрутизатордың процессоры енді қызбайды және VPN жылдамдығы айтарлықтай артады. Бұл ретте маршрутизаторда тіркелген барлық желі ережелері өзекті болып қалады. Orange Pi-де апат болған жағдайда, ол құлап, HAProxy клиенттерді жергілікті серверлерге тасымалдайды.

Назарларыңызға рахмет, ұсыныстар мен түзетулер қабылданады.

Ақпарат көзі: www.habr.com

пікір қалдыру