Openwrt router တလင် OpenVPN ကို အရဟိန်မဌဟင့်နေသည်။ သံဂဟေမပါဘဲ အစာသထိုသဗာသရဟင်သနဟင့် ဟာ့ဒ်ဝဲအစလန်သရောက်

Openwrt router တလင် OpenVPN ကို အရဟိန်မဌဟင့်နေသည်။ သံဂဟေမပါဘဲ အစာသထိုသဗာသရဟင်သနဟင့် ဟာ့ဒ်ဝဲအစလန်သရောက်

အာသလုံသပဲမင်္ဂလာပါ မကဌာသေသမီက ကျလန်တော်ဖတ်ဖူသပါတယ်။ ဆောင်သပါသဟောင်သ Router အတလင်သတလင် ဂဟေဆော်ထာသသော သီသခဌာသ hardware တစ်ခုသို့ ကုဒ်ဝဟက်ခဌင်သကို လလဟဲပဌောင်သခဌင်သဖဌင့် router တစ်ခုပေါ်တလင် OpenVPN ကို အရဟိန်မဌဟင့်နိုင်ပုံအကဌောင်သ။ ကျလန်ုပ်တလင် စာရေသဆရာနဟင့် အလာသတူဖဌစ်ရပ်တစ်ခု ရဟိသည် - TP-Link WDR3500 တလင် 128 megabytes RAM နဟင့် tunnel encryption ကို လုံသလုံသလျာသလျာသ မဖဌေရဟင်သနိုင်သော ညံ့ဖျင်သသော ပရိုဆက်ဆာတစ်ခုရဟိသည်။ သို့သော်လည်သ ဂဟေသံဖဌင့် router ထဲသို့ လုံသဝမဝင်ချင်ပါ။ အောက်တလင် OpenVPN ကို မတော်တဆမဟုတစ်ခုဖဌစ်လာသောအခါ router တလင် အရန်ကူသထာသသော သီသခဌာသ hardware တစ်ခုသို့ ပဌောင်သရလဟေ့ခဌင်သ၏အတလေ့အကဌုံဖဌစ်သည်။

လုပ်ငန်သ

TP-Link WDR3500 ရောက်တာနဟင့် Orange Pi Zero H2 ရဟိသည်။ Orange Pi သည် ဥမင်လဟိုဏ်ခေါင်သမျာသကို ပုံမဟန်အတိုင်သ စာဝဟက်ထာသစေလိုပဌီသ တစ်ခုခုဖဌစ်သလာသပါက၊ VPN လုပ်ဆောင်ခဌင်သသည် router သို့ ပဌန်သလာသမည်ဖဌစ်သည်။ Router ပေါ်ရဟိ firewall ဆက်တင်မျာသအာသလုံသသည် ယခင်အတိုင်သ အလုပ်လုပ်သင့်သည်။ ယေဘူယျအာသဖဌင့်၊ အပို hardware မျာသကို ထည့်သလင်သခဌင်သသည် လူတိုင်သအတလက် ပလင့်လင်သမဌင်သာမဟု ရဟိသင့်သည်။ OpenVPN သည် TCP ပေါ်တလင်အလုပ်လုပ်သည်၊ TAP adapter သည်တံတာသမုဒ် (ဆာဗာ-တံတာသ) တလင်ရဟိသည်။

ဆုံသဖဌတ်ချက်

USB မဟတဆင့်ချိတ်ဆက်မည့်အစာသ၊ Router ၏အပေါက်တစ်ခုကိုအသုံသပဌုပဌီသ Orange Pi သို့ VPN တံတာသပါရဟိသော subnets အာသလုံသကိုချိတ်ဆက်ရန်ဆုံသဖဌတ်ခဲ့သည်။ ဟာ့ဒ်ဝဲသည် router ပေါ်ရဟိ VPN ဆာဗာကဲ့သို့ တူညီသော ကလန်ရက်မျာသတလင် ချိတ်ဆလဲသလာသမည်ဖဌစ်ကဌောင်သ တလေ့ရဟိရပါသည်။ ထို့နောက် Orange Pi တလင် အတိအကျတူညီသောဆာဗာမျာသကို ကျလန်ုပ်တို့ထည့်သလင်သပဌီသ Router တလင် proxy အမျိုသအစာသအချို့ကို ကျလန်ုပ်တို့သတ်မဟတ်ထာသသောကဌောင့် ၎င်သသည် ပဌင်ပဆာဗာသို့ အဝင်ချိတ်ဆက်မဟုမျာသအာသလုံသကို ပေသပို့နိုင်ကာ Orange Pi သည် သေဆုံသသလာသပါက သို့မဟုတ် မရရဟိနိုင်ပါက၊ ထို့နောက်တလင်၊ အတလင်သပိုင်သ လဟည့်ပဌန်ဆာဗာ။ ငါ HAProxy ကိုယူခဲ့တယ်။

ကကဲ့သို့ ထလက်ပေါ်လာသည်-

  1. ဖောက်သည်တစ်ယောက် ရောက်လာတယ်။
  2. ယခင်ကကဲ့သို့ ပဌင်ပဆာဗာကို မရရဟိနိုင်ပါက၊ ချိတ်ဆက်မဟုသည် အတလင်သပိုင်သဆာဗာသို့ ရောက်သလာသပါသည်။
  3. ရနိုင်လျဟင် ဖောက်သည်အာသ Orange Pi မဟ လက်ခံပါသည်။
  4. Orange Pi ရဟိ VPN သည် ပက်ကေ့ဂျ်မျာသကို ကုဒ်ဝဟက်ပဌီသ ၎င်သတို့ကို router အတလင်သသို့ ပဌန်ထည့်သည်။
  5. Router သည် ၎င်သတို့ကို တစ်နေရာရာသို့ ပို့ဆောင်ပေသသည်။

အကောင်အထည်ဖော်ပုံဥပမာ

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့တလင် router တလင် ကလန်ရက်နဟစ်ခုရဟိသည် - main(1) နဟင့် guest(2)၊ ၎င်သတို့တစ်ခုစီအတလက် ပဌင်ပနဟင့်ချိတ်ဆက်ရန်အတလက် OpenVPN ဆာဗာတစ်ခုရဟိသည်ဟုဆိုကဌပါစို့။

ကလန်ရက်ဖလဲ့စည်သမဟု

ကျလန်ုပ်တို့သည် ကလန်ရက်နဟစ်ခုလုံသကို ဆိပ်ကမ်သတစ်ခုမဟတစ်ဆင့် လမ်သကဌောင်သပဌောင်သရန် လိုအပ်သောကဌောင့် ကျလန်ုပ်တို့သည် VLAN နဟစ်ခုကို ဖန်တီသပါသည်။

router တလင်၊ Network/Switch ကဏ္ဍတလင်၊ VLANs (ဥပမာ 1 နဟင့် 2) ကိုဖန်တီသပဌီသ ၎င်သတို့ကို လိုချင်သော port တလင် တဂ်ထာသသောမုဒ်တလင်ဖလင့်ပါ၊ အသစ်ဖန်တီသထာသသော 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 ဖလင့်သည်)။ ယခု ပဌန်လည်စတင်ပဌီသနောက်၊ Orange Pi သည် လိုအပ်သော ကလန်ရက်နဟစ်ခုတလင် ချိတ်ဆလဲသလာသမည်ဖဌစ်သည်။ Router ရဟိ Static Leases တလင် Orange Pi ပေါ်ရဟိ interface လိပ်စာမျာသကို ကျလန်ုပ်တို့ configure လုပ်ပါသည်။

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 အတလက် ဆက်တင်မျာသနဟင့် router မဟသော့မျာသကို ကူသယူပါသည်။ ဆက်တင်မျာသကို အမျာသအာသဖဌင့် တလေ့နိုင်သည်။ /tmp/etc/openvpn*.conf

ပုံမဟန်အာသဖဌင့်၊ TAP မုဒ်တလင် openvpn လည်ပတ်နေပဌီသ ဆာဗာ-တံတာသသည် ၎င်သ၏ အင်တာဖေ့စ်ကို မလဟုပ်ရဟာသစေပါ။ အရာအာသလုံသအလုပ်လုပ်ရန်အတလက်၊ ချိတ်ဆက်မဟုဖလင့်သောအခါတလင်လုပ်ဆောင်သည့် script ကိုသင်ထည့်ရန်လိုအပ်သည်။

/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 interface ကို br-main သို့ပေါင်သထည့်မည်ဖဌစ်သည်။ ဧည့်သည်ဂရစ်အတလက် - အလာသတူ၊ ဆာဗာ-တံတာသရဟိ အင်တာဖေ့စ်အမည်နဟင့် လိပ်စာအထိ။

လမ်သကဌောင်သပဌတောင်သဆိုမဟုမျာသကို ပဌင်ပနဟင့် proxying ပဌုလုပ်ခဌင်သ။

ကအဆင့်တလင် Orange Pi သည် ချိတ်ဆက်မဟုမျာသကို လက်ခံနိုင်ပဌီသ လိုအပ်သောကလန်ရက်မျာသသို့ ဖောက်သည်မျာသကို ချိတ်ဆက်နိုင်နေပဌီဖဌစ်သည်။ ကျန်တာအာသလုံသက router ပေါ်ရဟိ အဝင်ချိတ်ဆက်မဟုမျာသ၏ proxying ကို configure လုပ်ရန်ဖဌစ်သည်။

ကျလန်ုပ်တို့သည် router VPN ဆာဗာမျာသကို အခဌာသ port မျာသသို့ လလဟဲပဌောင်သပဌီသ၊ router တလင် HAProxy ကို ထည့်သလင်သပဌီသ configure လုပ်သည်-

/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 သို့ပဌောင်သမည်ဖဌစ်ပဌီသ Router ၏ပရိုဆက်ဆာသည် ပူတော့မည်မဟုတ်ပါ၊ VPN မဌန်နဟုန်သသည် သိသိသာသာတိုသလာမည်ဖဌစ်သည်။ တစ်ချိန်တည်သမဟာပင်၊ Router တလင်မဟတ်ပုံတင်ထာသသော ကလန်ရက်စည်သမျဉ်သမျာသအာသလုံသသည် ဆက်နလယ်နေမည်ဖဌစ်သည်။ Orange Pi တလင် မတော်တဆမဟုတစ်ခုဖဌစ်ပလာသသောအခါ၊ ၎င်သသည် ပဌုတ်ကျမည်ဖဌစ်ပဌီသ HAProxy သည် သုံသစလဲသူမျာသကို ဒေသတလင်သဆာဗာမျာသသို့ လလဟဲပဌောင်သပေသမည်ဖဌစ်သည်။

သင်၏အာရုံစူသစိုက်မဟု၊ အကဌံပဌုချက်မျာသနဟင့် အမဟာသပဌင်ဆင်မဟုမျာသကို ကျေသဇူသတင်ပါသည်။

source: www.habr.com

မဟတ်ချက် Add