Openwrt راؤٹر پر OpenVPN کو تیز کرنا۔ سولڈرنگ آئرن اور ہارڈ ویئر کی انتہا پسندی کے بغیر متبادل ورژن

Openwrt راؤٹر پر OpenVPN کو تیز کرنا۔ سولڈرنگ آئرن اور ہارڈ ویئر کی انتہا پسندی کے بغیر متبادل ورژن

سب کو ہیلو، میں نے حال ہی میں پڑھا۔ پرانا مضمون اس کے بارے میں کہ آپ کس طرح ایک راؤٹر پر اوپن وی پی این کو تیز کر سکتے ہیں انکرپشن کو ہارڈ ویئر کے ایک علیحدہ ٹکڑے میں منتقل کر کے، جو خود روٹر کے اندر سولڈرڈ ہوتا ہے۔ میرے پاس مصنف کے ساتھ بھی ایسا ہی معاملہ ہے - TP-Link WDR3500 جس میں 128 میگا بائٹس RAM اور ایک ناقص پروسیسر ہے، جو سرنگ کی خفیہ کاری کا بالکل بھی مقابلہ نہیں کرتا ہے۔ تاہم، میں واضح طور پر سولڈرنگ آئرن کے ساتھ روٹر پر چڑھنا نہیں چاہتا تھا۔ کٹ کے تحت، کسی حادثے کی صورت میں راؤٹر پر بیک اپ کے ساتھ اوپن وی پی این کو ہارڈ ویئر کے ایک علیحدہ ٹکڑے میں منتقل کرنے کا میرا تجربہ ہے۔

ٹاسک

ایک TP-Link WDR3500 راؤٹر اور اورنج پائی زیرو H2 ہے۔ ہم چاہتے ہیں کہ اورنج پائی سرنگوں کو نارمل موڈ میں انکرپٹ کرے، اور اگر اس کے ساتھ کچھ ہوتا ہے، تو VPN پروسیسنگ روٹر پر واپس آجائے گی۔ راؤٹر پر تمام فائر وال سیٹنگز کو پہلے کی طرح کام کرنا چاہیے۔ اور عام طور پر، عام طور پر، لوہے کے ایک اضافی ٹکڑے کا اضافہ ہر ایک کے لئے شفاف اور ناقابل تصور ہونا چاہئے. اوپن وی پی این برج موڈ (سرور برج) میں TCP، TAP اڈاپٹر پر کام کرتا ہے۔

حل

USB کے ذریعے جڑنے کے بجائے، میں نے راؤٹر کا ایک پورٹ خرچ کرنے اور VPN برج والے تمام ذیلی نیٹ کو اورنج پائی سے جوڑنے کا فیصلہ کیا۔ اس سے پتہ چلتا ہے کہ لوہے کا ٹکڑا جسمانی طور پر انہی نیٹ ورکس میں لٹک جائے گا جس طرح راؤٹر پر VPN سرور ہوتا ہے۔ اس کے بعد، ہم اورنج پائی پر بالکل وہی سرورز اٹھاتے ہیں، اور راؤٹر پر ہم کسی قسم کی پراکسی سیٹ کرتے ہیں تاکہ یہ آنے والے تمام کنکشنز کو بیرونی سرور پر بھیجے، اور اگر اورنج پائی مر جائے یا دستیاب نہ ہو، تو پھر اندرونی فال بیک سرور میں نے HAProxy لی۔

یہ اس طرح نکلا:

  1. کلائنٹ آتا ہے
  2. اگر بیرونی سرور دستیاب نہیں ہے - پہلے کی طرح، کنکشن اندرونی سرور پر جاتا ہے۔
  3. اگر دستیاب ہو تو، کلائنٹ کو اورنج پائی کے ذریعے قبول کیا جاتا ہے۔
  4. Orange Pi پر VPN پیکٹوں کو ڈیکرپٹ کرتا ہے اور انہیں واپس راؤٹر پر تھوک دیتا ہے۔
  5. راؤٹر انہیں کہیں روٹ کرتا ہے۔

نفاذ کی مثال

تو، ہم کہتے ہیں کہ ہمارے روٹر پر دو نیٹ ورکس ہیں - مین (1) اور گیسٹ (2)، ان میں سے ہر ایک کے لیے باہر سے جڑنے کے لیے اوپن وی پی این سرور موجود ہے۔

نیٹ ورک کنفیگریشن

ہمیں دونوں نیٹ ورکس کو ایک بندرگاہ سے گزارنے کی ضرورت ہے، اس لیے ہم 2 VLANs بناتے ہیں۔

روٹر پر، نیٹ ورک/سوئچ سیکشن میں، VLANs بنائیں (مثال کے طور پر، 1 اور 2) اور انہیں مطلوبہ پورٹ پر ٹیگ شدہ موڈ میں آن کریں، نئے بنائے گئے eth0.1 اور eth0.2 کو مناسب نیٹ ورکس میں شامل کریں (اس کے لیے مثال کے طور پر، brigde میں شامل کریں)۔

اورنج پائی پر ہم دو 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)۔ اب، ریبوٹ کرنے کے بعد، اورنج پائی دو مطلوبہ نیٹ ورکس میں لٹک جائے گی۔ اورنج پائی پر انٹرفیس ایڈریسز روٹر پر سٹیٹک لیز میں کنفیگر کیے گئے ہیں۔

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

پہلے سے طے شدہ طور پر، اوپن وی پی این ٹی اے پی موڈ میں چل رہا ہے اور سرور برج اپنے انٹرفیس کو غیر فعال رکھتا ہے۔ اسے کام کرنے کے لیے، آپ کو ایک اسکرپٹ شامل کرنے کی ضرورت ہے جو کنکشن کے فعال ہونے پر چلتا ہے۔

/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 میں شامل کر دیا جائے گا۔ مہمان گرڈ کے لیے، یہ سرور برج میں انٹرفیس کے نام اور پتے کی طرح ہے۔

بیرونی درخواست کی روٹنگ اور پراکسینگ

اس مرحلے پر، اورنج پائی پہلے سے ہی کنکشن قبول کرنے اور کلائنٹس کو مطلوبہ نیٹ ورکس میں جانے کے قابل ہے۔ یہ روٹر پر آنے والے کنکشن کی پراکسی کو ترتیب دینا باقی ہے۔

ہم راؤٹر 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

لطف اندوز

اگر سب کچھ منصوبہ بندی کے مطابق ہوا تو کلائنٹ اورنج پائی پر جائیں گے اور روٹر پروسیسر مزید گرم نہیں ہوگا، اور VPN کی رفتار میں نمایاں اضافہ ہوگا۔ ساتھ ہی، نیٹ ورک کے تمام قواعد جو روٹر پر رجسٹرڈ ہیں متعلقہ رہیں گے۔ اورنج پائی پر حادثے کی صورت میں، یہ گر جائے گا اور HAProxy کلائنٹس کو مقامی سرورز پر لپیٹ دے گا۔

آپ کی توجہ کا شکریہ، تجاویز اور اصلاحات خوش آئند ہیں۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں