ဆာဗာအဖြစ် 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