افزایش سرعت 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 مرده یا در دسترس نیست، به سرور بازگشتی داخلی من HAProxy گرفتم.

اینطور معلوم می شود:

  1. مشتری می آید
  2. اگر سرور خارجی مانند قبل در دسترس نباشد، اتصال به سرور داخلی می رود
  3. در صورت وجود، مشتری توسط Orange Pi پذیرفته می شود
  4. VPN در Orange Pi بسته ها را رمزگشایی می کند و آنها را به روتر باز می گرداند
  5. روتر آنها را به جایی هدایت می کند

مثال پیاده سازی

بنابراین، فرض کنید ما دو شبکه در روتر داریم - main(1) و guest (2)، برای هر یک از آنها یک سرور OpenVPN برای اتصال خارجی وجود دارد.

تنظیمات شبکه

ما باید هر دو شبکه را از طریق یک پورت مسیریابی کنیم، بنابراین 2 VLAN ایجاد می کنیم.

در روتر، در بخش Network/Switch، VLAN ها (مثلا 1 و 2) را ایجاد کنید و آنها را در حالت برچسب گذاری شده در پورت مورد نظر فعال کنید، eth0.1 و eth0.2 را که به تازگی ایجاد شده را به شبکه های مربوطه اضافه کنید (مثلا آنها را به brigde اضافه کنید).

در 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 enable). اکنون پس از راه اندازی مجدد، Orange Pi در دو شبکه مورد نیاز آویزان می شود. ما آدرس های رابط را در Orange Pi در Static Leases روی روتر پیکربندی می کنیم.

ip addr show

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

اضافه کردن نظر