تسريع OpenVPN على جهاز توجيه Openwrt. نسخة بديلة بدون مكواة لحام وتطرف الأجهزة

تسريع OpenVPN على جهاز توجيه Openwrt. نسخة بديلة بدون مكواة لحام وتطرف الأجهزة

مرحبا بالجميع، قرأت مؤخرا مقالة قديمة حول كيفية تسريع OpenVPN على جهاز التوجيه عن طريق نقل التشفير إلى قطعة منفصلة من الأجهزة، والتي يتم لحامها داخل جهاز التوجيه نفسه. لدي حالة مماثلة للمؤلف - TP-Link WDR3500 مع 128 ميجابايت من ذاكرة الوصول العشوائي ومعالج ضعيف غير قادر تمامًا على التعامل مع تشفير النفق. ومع ذلك، لم أرغب مطلقًا في الدخول إلى جهاز التوجيه باستخدام مكواة لحام. فيما يلي تجربتي في نقل OpenVPN إلى قطعة منفصلة من الأجهزة مع نسخة احتياطية على جهاز التوجيه في حالة وقوع حادث.

مهمة

يوجد جهاز توجيه TP-Link WDR3500 وجهاز Orange Pi Zero H2. نريد أن يقوم Orange Pi بتشفير الأنفاق كالمعتاد، وإذا حدث شيء ما لها، فستعود معالجة VPN إلى جهاز التوجيه. يجب أن تعمل جميع إعدادات جدار الحماية على جهاز التوجيه كما كانت من قبل. وبشكل عام، يجب أن تكون إضافة أجهزة إضافية شفافة وغير ملحوظة للجميع. يعمل OpenVPN عبر TCP، ومحول TAP في وضع الجسر (جسر الخادم).

حل

بدلاً من الاتصال عبر USB، قررت استخدام منفذ واحد لجهاز التوجيه وتوصيل جميع الشبكات الفرعية التي تحتوي على جسر VPN بـ Orange Pi. اتضح أن الأجهزة ستتعطل فعليًا في نفس الشبكات مثل خادم VPN الموجود على جهاز التوجيه. بعد ذلك، نقوم بتثبيت نفس الخوادم بالضبط على Orange Pi، وعلى جهاز التوجيه نقوم بإعداد نوع من الوكيل بحيث يرسل جميع الاتصالات الواردة إلى الخادم الخارجي، وإذا كان Orange Pi ميتًا أو غير متاح، فإلى خادم احتياطي داخلي. أخذت هابروكسي.

اتضح مثل هذا:

  1. وصول عميل
  2. إذا كان الخادم الخارجي غير متاح، كما كان من قبل، ينتقل الاتصال إلى الخادم الداخلي
  3. إذا كان متاحًا، يتم قبول العميل بواسطة Orange Pi
  4. تقوم VPN على Orange Pi بفك تشفير الحزم وإعادتها إلى جهاز التوجيه
  5. يقوم جهاز التوجيه بتوجيههم إلى مكان ما

مثال على التنفيذ

لذلك، لدينا شبكتان على جهاز التوجيه - الرئيسية (1) والضيف (2)، لكل منهما خادم OpenVPN للاتصال خارجيًا.

تكوين شبكة

نحن بحاجة إلى توجيه كلا الشبكتين من خلال منفذ واحد، لذلك نقوم بإنشاء شبكتين 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

تمكين التشغيل التلقائي لجميع الملفات الشخصية الأربعة (تمكين netctl). الآن بعد إعادة التشغيل، سيتم تعليق Orange Pi على الشبكتين المطلوبتين. نقوم بتكوين عناوين الواجهة على Orange Pi في Static Leases على جهاز التوجيه.

عرض 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

افتراضيًا، يعمل openvpn في وضع TAP ويحافظ جسر الخادم على واجهته غير نشطة. لكي يعمل كل شيء، تحتاج إلى إضافة برنامج نصي يتم تشغيله عند تنشيط الاتصال.

/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

إضافة تعليق