ဆာဗာအဖဌစ် WireGuard နဟင့် Raspberry Pi ဖဌင့် ရိုသရဟင်သသော VPN တစ်ခုကို စနစ်ထည့်သလင်သခဌင်သ။

WireGuard ကဌောင့်ပါ။ အပိုင်သဖဌစ်လာလိမ့်မယ်။ လာမည့် Linux kernel 5.6 မဟ၊ က VPN ကို ကျလန်ုပ်နဟင့် မည်သို့ အကောင်သဆုံသ ပေါင်သစည်သရန် ဆုံသဖဌတ်ခဲ့သည် Raspberry Pi ရဟိ LTE router/access point.

ပစ္စည်သကရိယာ

  • LTE module နဟင့် public IP လိပ်စာပါရဟိသော Raspberry Pi 3 ကနေရာတလင် VPN ဆာဗာတစ်ခုရဟိလိမ့်မည် (၎င်သကိုစာသာသတလင်၎င်သနောက်မဟခေါ်သည်။ လမ်သလျဟောက်သူ)
  • ဆက်သလယ်ရေသအာသလုံသအတလက် VPN ကိုသုံသရမည့် Android ဖုန်သ
  • ကလန်ရက်အတလင်သ VPN တစ်ခုသာသုံသသင့်သည့် Linux လက်ပ်တော့

VPN သို့ ချိတ်ဆက်သည့် စက်ပစ္စည်သတိုင်သသည် အခဌာသစက်ပစ္စည်သမျာသအာသလုံသသို့ ချိတ်ဆက်နိုင်ရပါမည်။ ဥပမာအာသဖဌင့်၊ စက်နဟစ်ခုလုံသသည် VPN ကလန်ရက်၏အစိတ်အပိုင်သတစ်ခုဖဌစ်ပါက၊ ဖုန်သသည် လက်ပ်တော့ပေါ်တလင် ဝဘ်ဆာဗာတစ်ခုသို့ ချိတ်ဆက်နိုင်သင့်သည်။ စနစ်ထည့်သလင်သမဟုသည် အတော်လေသရိုသရဟင်သပါက၊ Desktop နဟင့် VPN (Ethernet မဟတဆင့်) ချိတ်ဆက်ခဌင်သအကဌောင်သ သင်စဉ်သစာသနိုင်ပါသည်။

ကဌိုသတပ် နဟင့် ကဌိုသမဲ့ချိတ်ဆက်မဟုမျာသသည် အချိန်ကဌာလာသည်နဟင့်အမျဟ လုံခဌုံမဟု လျော့နည်သလာသည်ကို ထည့်သလင်သစဉ်သစာသသည် (ပစ်မဟတ်ထာသတိုက်ခိုက်မဟုမျာသ, KRACK WPA2 ဖောက်ထလင်သတိုက်ခိုက်မဟု О WPA3 ကို DragonBlood တိုက်ခိုက်မဟု) ကျလန်ုပ်သည် မည်သည့်ပတ်ဝန်သကျင်တလင်ရဟိပါစေ ကျလန်ုပ်၏စက်ပစ္စည်သမျာသအာသလုံသအတလက် WireGuard ကိုအသုံသပဌုရန် အလေသအနက်စဉ်သစာသနေပါသည်။

software ကိုတပ်ဆင်

WireGuard ပေသသည်။ precompiled packages မျာသ Linux၊ Windows နဟင့် macOS ဖဌန့်ချိမဟုအမျာသစုအတလက်။ Android နဟင့် iOS အက်ပ်မျာသကို အက်ပ်လမ်သညလဟန်မျာသမဟတစ်ဆင့် ပေသပို့ပါသည်။

ကျလန်ုပ်တလင် နောက်ဆုံသပေါ် Fedora Linux 31 ရဟိပဌီသ၊ ထည့်သလင်သခဌင်သမပဌုမီ လက်စလဲစာအုပ်ကို ဖတ်ရန် အလလန်ပျင်သနေပါသည်။ အထုပ်မျာသကို တလေ့လိုက်ရသည်။ wireguard-tools၎င်သတို့ကို တပ်ဆင်ပဌီသနောက် ဘာ့ကဌောင့် အလုပ်မဖဌစ်သည်ကို အဖဌေရဟာမရပါ။ ပက်ကေ့ဂျ် တပ်ဆင်ထာသခဌင်သ မရဟိကဌောင်သ ထပ်မံစုံစမ်သသိရဟိရပါသည်။ wireguard-dkms (ကလန်ရက်ဒရိုက်ဘာတစ်ခုနဟင့်)၊ သို့သော် ၎င်သသည် ကျလန်ုပ်၏ဖဌန့်ဖဌူသရေသသိုလဟောင်ခန်သတလင် မရဟိပါ။

အကယ်၍ ကျလန်ုပ်သည် ညလဟန်ကဌာသချက်မျာသကို ဖတ်ပဌီသပါက၊ ကျလန်ုပ်သည် မဟန်ကန်သော ခဌေလဟမ်သမျာသကို လုပ်ဆောင်နိုင်လိမ့်မည်-

$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools

ကျလန်ုပ်၏ Raspberry Pi တလင် Raspbian Buster ဖဌန့်ဖဌူသမဟုကို ထည့်သလင်သထာသပဌီသ၊ ထိုနေရာတလင် ပက်ကေ့ခ်ျတစ်ခု ရဟိနဟင့်ပဌီသဖဌစ်သည်။ wireguard၊ ထည့်သလင်သပါ

$ sudo apt install wireguard

ကျလန်ုပ်၏ Android ဖုန်သတလင် အပလီကေသရဟင်သကို ထည့်သလင်သထာသပါသည်။ WireGuard VPN ကို တရာသဝင် Google App Store ကက်တလောက်မဟ။

သော့မျာသတပ်ဆင်ခဌင်သ။

သက်တူရလယ်တူစစ်မဟန်ကဌောင်သအထောက်အထာသပဌခဌင်သအတလက်၊ Wireguard သည် VPN သက်တူရလယ်တူမျာသကို စစ်မဟန်ကဌောင်သအထောက်အထာသပဌရန် ရိုသရဟင်သသောပုဂ္ဂလိက/အမျာသပဌည်သူကီသအစီအစဉ်ကိုအသုံသပဌုသည်။ အောက်ပါ command ကိုသုံသပဌီသ VPN ကီသမျာသကို အလလယ်တကူ ဖန်တီသနိုင်သည်-

$ wg genkey | tee wg-laptop-private.key |  wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key |  wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key |  wg pubkey > wg-mobile-public.key

၎င်သသည် ကျလန်ုပ်တို့အာသ သော့တလဲသုံသခု (ခဌောက်ဖိုင်) ပေသသည်။ ကျလန်ုပ်တို့သည် configs ရဟိဖိုင်မျာသကို ရည်ညလဟန်သမည်မဟုတ်သော်လည်သ အကဌောင်သအရာမျာသကို ကနေရာတလင် ကူသယူပါ- သော့တစ်ခုစီသည် base64 ရဟိ စာကဌောင်သတစ်ကဌောင်သဖဌစ်သည်။

VPN ဆာဗာ (Raspberry Pi) အတလက် ဖလဲ့စည်သမဟုပုံစံဖိုင်ကို ဖန်တီသနေသည်

configuration ကတော်တော်လေသရိုသရဟင်သပါတယ်၊ အောက်ပါဖိုင်ကိုကျလန်တော်ဖန်တီသခဲ့တယ်။ /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

မဟတ်ချက်အချို့

  • သင့်လျော်သောနေရာမျာသတလင် သော့မျာသဖဌင့် ဖိုင်မျာသမဟ စာကဌောင်သမျာသထည့်ရန် လိုအပ်သည်။
  • ကျလန်ုပ်၏ VPN သည် အတလင်သဘက်တီသဝိုင်သကို အသုံသပဌုနေသည်။ 10.200.200.0/24
  • အသင်သမျာသအတလက် PostUp/PostDown ကျလန်ုပ်တလင် ပဌင်ပကလန်ရက်အင်တာဖေ့စ် wwan0 ရဟိသည်၊ သင့်တလင် မတူညီသောတစ်ခုရဟိသည် (ဥပမာ၊ eth0)

VPN ကလန်ရက်ကို အောက်ပါ command ဖဌင့် အလလယ်တကူ မဌဟင့်တင်နိုင်သည်-

$ sudo wg-quick up wg0

အသေသစိတ်အချက်တစ်ချက်- ကျလန်ုပ်အသုံသပဌုခဲ့သည့် DNS ဆာဗာအဖဌစ် dnsmasq network interface နဟင့် ချိတ်ဆက်ထာသသည်။ br0စက်ပစ္စည်သတလေလည်သ ထည့်ထာသတယ်။ wg0 ခလင့်ပဌုထာသသော စက်မျာသစာရင်သသို့ dnsmasq တလင် ၎င်သကို configuration file တလင် network interface line အသစ်တစ်ခုထည့်ခဌင်သဖဌင့် လုပ်ဆောင်သည်။ /etc/dnsmasq.confဥပမာ:

interface=br0
interface=wg0

ထို့အပဌင်၊ UDP နာသထောင်မဟုပို့တ် (51280) သို့ အသလာသအလာကို ခလင့်ပဌုရန် iptable စည်သမျဉ်သကို ထည့်သလင်သထာသပါသည်။

$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

ယခုအရာအာသလုံသအလုပ်လုပ်နေပဌီဖဌစ်သောကဌောင့် VPN ဥမင်လိုဏ်ခေါင်သ၏အလိုအလျောက်ဖလင့်ခဌင်သကို ကျလန်ုပ်တို့သတ်မဟတ်နိုင်သည်-

$ sudo systemctl enable [email protected]

လက်ပ်တော့ပေါ်တလင် ကလိုင်သယင့်ဖလဲ့စည်သမဟုပုံစံ

လက်တော့ပ်ပေါ်တလင် ဖလဲ့စည်သမဟုပုံစံဖိုင်တစ်ခု ဖန်တီသပါ။ /etc/wireguard/wg0.conf တူညီသောဆက်တင်မျာသဖဌင့်

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

မဟတ်ချက်တလေ:

  • edgewalker အစာသ အမျာသသူငဟာ IP သို့မဟုတ် VPN ဆာဗာ host ကို သတ်မဟတ်ရန် လိုအပ်သည်။
  • setting အာသဖဌင့် AllowedIPs အပေါ် 10.200.200.0/24ကျလန်ုပ်တို့သည် အတလင်သပိုင်သကလန်ရက်ကို ဝင်ရောက်ရန် VPN ကိုသာ အသုံသပဌုပါသည်။ အခဌာသသော IP လိပ်စာမျာသ/ဆာဗာမျာသအာသလုံသသို့ လမ်သကဌောင်သအသလာသအလာသည် “ပုံမဟန်” ဖလင့်ထာသသော ချန်နယ်မျာသမဟတစ်ဆင့် ဆက်လက်သလာသနေမည်ဖဌစ်သည်။ ၎င်သသည် လက်ပ်တော့ပေါ်ရဟိ ကဌိုတင်ပဌင်ဆင်ထာသသော DNS ဆာဗာကိုလည်သ အသုံသပဌုမည်ဖဌစ်သည်။

စမ်သသပ်ခဌင်သနဟင့် အလိုအလျောက် စတင်ခဌင်သအတလက် ကျလန်ုပ်တို့သည် တူညီသော အမိန့်မျာသကို အသုံသပဌုပါသည်။ wg-quick О systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]

Android ဖုန်သတလင် ကလိုင်သယင့်ကို စနစ်ထည့်သလင်သခဌင်သ။

Andriod ဖုန်သအတလက် အလလန်ဆင်တူသော configuration file တစ်ခုကို ဖန်တီသသည် (အဲဒါကို ခေါ်ကဌည့်ရအောင် mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
        
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

လက်ပ်တော့ပေါ်ရဟိ ဖလဲ့စည်သမဟုပုံစံနဟင့်မတူဘဲ၊ ဖုန်သသည် ကျလန်ုပ်တို့၏ VPN ဆာဗာကို DNS ဆာဗာအဖဌစ် အသုံသပဌုရပါမည် (လိုင်သ DNS) နဟင့် VPN tunnel မဟတဆင့် လမ်သကဌောင်သအာသလုံသကို ဖဌတ်သန်သပါ (AllowedIPs = 0.0.0.0/0).

ဖိုင်ကို သင့်မိုဘိုင်သစက်ပစ္စည်သသို့ ကူသယူမည့်အစာသ၊ ၎င်သကို QR ကုဒ်အဖဌစ် ပဌောင်သလဲနိုင်သည်-

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

QR ကုဒ်သည် ASCII အဖဌစ် ကလန်ဆိုသလ်သို့ ထလက်မည်ဖဌစ်သည်။ ၎င်သကို Android VPN အက်ပ်မဟ စကင်န်ဖတ်နိုင်ပဌီသ VPN ဥမင်လိုဏ်ခေါင်သကို အလိုအလျောက် စနစ်ထည့်သလင်သမည်ဖဌစ်သည်။

ကောက်ချက်

WireGuard စနစ်ထည့်သလင်သခဌင်သသည် OpenVPN နဟင့် နဟိုင်သယဟဉ်လျဟင် ရိုသရဟင်သပါသည်။

source: www.habr.com

မဟတ်ချက် Add