ရိုးရှင်းသော VPN တစ်ခု တည်ဆောက်ခြင်း WireGuard နှင့် Raspberry Pi ကို server အဖြစ်

အဖြစ် WireGuard အပိုင်းဖြစ်လာလိမ့်မယ်။ အနာဂတ် အဓိက Linux ၅.၆ မှာ ဒီ VPN ကို ကျွန်တော့်ရဲ့ VPN နဲ့ ဘယ်လိုပေါင်းစပ်ရမလဲဆိုတာ ကြည့်ဖို့ ဆုံးဖြတ်လိုက်တယ်။ Raspberry Pi ရှိ LTE router/access point.

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

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

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

ကြိုးတပ် နှင့် ကြိုးမဲ့ချိတ်ဆက်မှုများသည် အချိန်ကြာလာသည်နှင့်အမျှ လုံခြုံမှု လျော့နည်းလာသည်ကို ထည့်သွင်းစဉ်းစားသည် (ပစ်မှတ်ထားတိုက်ခိုက်မှုများ, KRACK WPA2 ဖောက်ထွင်းတိုက်ခိုက်မှု и WPA3 ကို DragonBlood တိုက်ခိုက်မှု) ကျွန်တော်/ကျွန်မ အလေးအနက်ထားပြီး အသုံးပြုဖို့ စဉ်းစားနေပါတယ် WireGuard မည်သည့်ပတ်ဝန်းကျင်တွင်မဆို ကျွန်ုပ်၏ စက်ပစ္စည်းအားလုံးအတွက်။

software ကိုတပ်ဆင်

WireGuard ထောက်ပံ့ precompiled packages များ ဖြန့်ဖြူးမှုအများစုအတွက် Linux, Windows и macOSလျှောက်လွှာများအတွက် Android နှင့် iOS ကို app store များမှတစ်ဆင့် ပေးပို့သည်။

ကျွန်တော့်မှာ နောက်ဆုံးပေါ် Fedora ရှိပါတယ် Linux ၃၁ ပါ၊ install မလုပ်ခင်မှာ manual ကိုဖတ်ဖို့ ပျင်းနေခဲ့တယ်။ package တွေကိုပဲ တွေ့ခဲ့တယ်။ 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 ကျွန်တော် application ကို install လုပ်လိုက်ပါပြီ WireGuard VPN ကို တရားဝင် Google App Store ကက်တလောက်မှ။

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

node များကို အထောက်အထားစိစစ်ရန် Wireguard VPN node များကို authenticate လုပ်ရန် ရိုးရှင်းသော private/public key scheme တစ်ခုကို အသုံးပြုသည်။ အောက်ပါ command ဖြင့် VPN key များကို အလွယ်တကူ generate လုပ်နိုင်သည်။

$ 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 wg-quick@wg0.service

လက်ပ်တော့ပေါ်တွင် ကလိုင်းယင့်ဖွဲ့စည်းမှုပုံစံ

လက်တော့ပ်ပေါ်တွင် ဖွဲ့စည်းမှုပုံစံဖိုင်တစ်ခု ဖန်တီးပါ။ /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 wg-quick@wg0.service

client ကို စနစ်ထည့်သွင်းခြင်း Android-ဖုန်း

ဖုန်းအတွက် Android ကျွန်ုပ်တို့သည် အလွန်ဆင်တူသော 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 အဖြစ် console သို့ ထုတ်ပေးပါမည်။ အက်ပ်မှ စကင်ဖတ်နိုင်ပါသည်။ Android VPN နှင့် VPN tunnel ကို အလိုအလျောက် configure လုပ်ပါ။

ကောက်ချက်

သင့်အောင်လုပ်ခြင်း WireGuard နှိုင်းယှဉ်လျှင် ရိုးရိုးရှင်းရှင်း မှော်ဆန်သော OpenVPN.

source: www.habr.com

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster