Debian 10 ဖြင့် လက်ပ်တော့တွင် SOCKS တွင် router တစ်ခုကို တည်ဆောက်ခြင်း။

တစ်နှစ်ပတ်လုံး (သို့မဟုတ်) နှစ်ပတ်လုံး ဤဆောင်းပါးကို ထုတ်ဝေခြင်းမှ ရပ်ဆိုင်းလိုက်သည် - Debian ဖြင့် သာမန်လက်ပ်တော့တစ်လုံးမှ SOCKS တွင် router တစ်ခုဖန်တီးခြင်းလုပ်ငန်းစဉ်ကို ဖော်ပြခဲ့သည့် ဆောင်းပါးနှစ်ပုဒ်ကို ထုတ်ဝေခဲ့ပြီးဖြစ်သည်။

သို့သော်လည်း၊ ထိုအချိန်မှစ၍ Debian ၏တည်ငြိမ်သောဗားရှင်းကို Buster သို့မွမ်းမံပြီးကတည်းက၊ လုံလောက်သောလူအများအပြားသည် ကျွန်ုပ်အား တပ်ဆင်မှုအတွက်အကူအညီတောင်းရန် သီးသန့်ဆက်သွယ်ခဲ့ပြီး၊ ဆိုလိုသည်မှာ ကျွန်ုပ်၏ယခင်ဆောင်းပါးများသည် မကုန်နိုင်ဟု ဆိုလိုပါသည်။ ကောင်းပြီ၊ ၎င်းတို့တွင်ဖော်ပြထားသောနည်းလမ်းများသည် SOCKS တွင်လမ်းကြောင်းတင်ရန်အတွက် Linux ကိုစတင်သတ်မှတ်ခြင်း၏ရှုပ်ထွေးရှုပ်ထွေးမှုများကို အပြည့်အ၀ဖော်ပြခြင်းမရှိကြောင်း ကျွန်ုပ်ကိုယ်တိုင် ခန့်မှန်းခဲ့သည်။ ထို့အပြင်၊ ၎င်းတို့ကို Debian Stretch အတွက် ရေးသားထားပြီး Buster သို့ အဆင့်မြှင့်တင်ပြီးနောက်၊ systemd init system တွင်၊ ဝန်ဆောင်မှုများ၏ အပြန်အလှန်အကျိုးပြုမှုတွင် အနည်းငယ်ပြောင်းလဲမှုများကို ကျွန်ုပ်သတိပြုမိခဲ့သည်။ ပြီးတော့ ဆောင်းပါးတွေမှာတော့ systemd-networkd ကို မသုံးခဲ့ဘူး၊ ရှုပ်ထွေးတဲ့ network configuration တွေအတွက် အသင့်တော်ဆုံးဖြစ်ပေမယ့်၊

အထက်ပါပြောင်းလဲမှုများအပြင်၊ အောက်ပါဝန်ဆောင်မှုများကို ကျွန်ုပ်၏ဖွဲ့စည်းပုံတွင် ထည့်သွင်းခဲ့သည်- ဆွ - access point virtualization အတွက် ဝန်ဆောင်မှု၊ နင် local network clients တွေရဲ့ အချိန်ကို synchronize လုပ်ရန်၊ dnscrypt-proxy DNS မှတစ်ဆင့် ချိတ်ဆက်မှုများကို စာဝှက်ရန်နှင့် ဒေသတွင်း ကွန်ရက်ဖောက်သည်များအတွက် ကြော်ငြာများကို ပိတ်ရန်၊ အစောပိုင်းတွင် ဖော်ပြခဲ့သည့်အတိုင်း၊ systemd-ကွန်ရက် ကွန်ရက်အင်တာဖေ့စ်များကို ပြင်ဆင်သတ်မှတ်ခြင်းအတွက်။

ဤသည်မှာ Router ၏ အတွင်းပိုင်းတည်ဆောက်ပုံ၏ ရိုးရှင်းသော ဘလောက်ပုံစံတစ်ခုဖြစ်သည်။

Debian 10 ဖြင့် လက်ပ်တော့တွင် SOCKS တွင် router တစ်ခုကို တည်ဆောက်ခြင်း။

ဒါကြောင့် ဒီဆောင်းပါးစီးရီးရဲ့ ပန်းတိုင်က ဘာလဲဆိုတာကို သတိပေးပါရစေ။

  1. OS ချိတ်ဆက်မှုအားလုံးကို SOCKS သို့ လမ်းကြောင်းပေးသည့်အပြင် လက်ပ်တော့ကဲ့သို့ ကွန်ရက်တစ်ခုတည်းရှိ စက်ပစ္စည်းအားလုံးမှ ချိတ်ဆက်မှုများကို လမ်းကြောင်းပေးပါ။
  2. ငါ့ကိစ္စအတွက် လက်တော့ပ်သည် လုံးဝ လက်ကိုင်ဖုန်း ဖြစ်သင့်သည်။ ဆိုလိုသည်မှာ၊ desktop ပတ် ၀ န်းကျင်ကိုအသုံးပြုရန်နှင့်ရုပ်ပိုင်းဆိုင်ရာတည်နေရာနှင့်မချိတ်ဆက်ရန်အခွင့်အရေးပေးရန်ဖြစ်သည်။
  3. နောက်ဆုံးအချက်မှာ တပ်ဆင်ထားသောကြိုးမဲ့အင်တာဖေ့စ်မှတစ်ဆင့်သာ ချိတ်ဆက်မှုနှင့် လမ်းကြောင်းလမ်းကြောင်းကို ရည်ညွှန်းသည်။
  4. ကောင်းပြီ၊ ပြီးပြည့်စုံသော လမ်းညွှန်ဖန်တီးမှုအပြင် ကျွန်ုပ်၏ ကျိုးနွံသော ဗဟုသုတအတွက် အကောင်းဆုံးသော သက်ဆိုင်ရာနည်းပညာများကို ခွဲခြမ်းစိတ်ဖြာခြင်းလည်း ဖြစ်သည်။

ဤဆောင်းပါးတွင် အဘယ်အရာပါဝင်မည်နည်း။

  1. git - ပရောဂျက်သိုလှောင်မှုများကိုဒေါင်းလုဒ်လုပ်ပါ။ tun2socksTCP အသွားအလာကို SOCKS သို့လမ်းကြောင်းပေးရန်လိုအပ်သည်။ ဖန်တီးသူ — အသုံးပြု၍ virtual access point ၏ setup ကို အလိုအလျောက်လုပ်ဆောင်ရန် script တစ်ခု ဆွ.
  2. tun2socks - စနစ်တွင် systemd ဝန်ဆောင်မှုကိုတည်ဆောက်ပြီးထည့်သွင်းပါ။
  3. systemd-ကွန်ရက် — ကြိုးမဲ့နှင့် virtual interfaces၊ static routing tables နှင့် packet redirection ကို configure လုပ်ပါ။
  4. ဖန်တီးသူ — စနစ်တွင် systemd ဝန်ဆောင်မှုကို ထည့်သွင်းပါ၊ virtual access point တစ်ခုကို ပြင်ဆင်ပြီး စတင်ပါ။

ရွေးချယ်နိုင်သော အဆင့်များ-

  • နင် — virtual access point clients များပေါ်တွင် အချိန်တစ်ပြိုင်တည်းချိန်ကိုက်ရန် ဆာဗာတစ်ခုကို ထည့်သွင်းပြီး စီစဉ်သတ်မှတ်ပါ။
  • dnscrypt-proxy — ကျွန်ုပ်တို့သည် DNS တောင်းဆိုမှုများကို ကုဒ်ဝှက်ပြီး၊ ၎င်းတို့အား SOCKS သို့ လမ်းကြောင်းပေးကာ ဒေသတွင်း ကွန်ရက်အတွက် ကြော်ငြာဒိုမိန်းများကို ပိတ်ပါမည်။

ဒါတွေအားလုံးက ဘာအတွက်လဲ။

၎င်းသည် ဒေသတွင်း ကွန်ရက်တစ်ခုပေါ်တွင် TCP ချိတ်ဆက်မှုများကို လုံခြုံစေမည့် နည်းလမ်းများထဲမှ တစ်ခုဖြစ်သည်။ အဓိကအားသာချက်မှာ ချိတ်ဆက်မှုအားလုံးကို မူလတံခါးပေါက်မှတဆင့် ၎င်းတို့အတွက် static route မတည်ဆောက်ထားပါက၊ ချိတ်ဆက်မှုများအားလုံးကို SOCKS ဖြင့်ပြုလုပ်ထားခြင်းဖြစ်ပါသည်။ ဆိုလိုသည်မှာ သင်သည် SOCKS ဆာဗာဆက်တင်များကို သီးခြားပရိုဂရမ်များ သို့မဟုတ် စက်တွင်းကွန်ရက်ရှိ client များအတွက် SOCKS ဆာဗာဆက်တင်များကို သတ်မှတ်ရန် မလိုအပ်ပါ - ၎င်းတို့အားလုံးသည် ကျွန်ုပ်တို့မှ အခြားမဟုတ်သည်ကို မညွှန်မပြမချင်း ၎င်းသည် ပုံသေတံခါးပေါက်ဖြစ်သောကြောင့် SOCKS သို့သွားပါသည်။

အခြေခံအားဖြင့် ကျွန်ုပ်တို့သည် မူရင်း router ၏ရှေ့တွင် လက်ပ်တော့တစ်လုံးအဖြစ် ဒုတိယ ကုဒ်ဝှက်ထားသော router တစ်ခုကို ပေါင်းထည့်ကာ လက်တော့ပ်၏ ကုဒ်ရေးပြီးသား SOCKS တောင်းဆိုမှုများအတွက် မူလ router ၏ အင်တာနက်ချိတ်ဆက်မှုကို အသုံးပြုကာ LAN ဖောက်သည်များထံမှ တောင်းဆိုမှုများကို လမ်းကြောင်းများနှင့် စာဝှက်ပေးပါသည်။

ဝန်ဆောင်မှုပေးသူ၏အမြင်အရ၊ ကျွန်ုပ်တို့သည် ကုဒ်ဝှက်ထားသောလမ်းကြောင်းဖြင့် ဆာဗာတစ်ခုသို့ အဆက်မပြတ်ချိတ်ဆက်နေပါသည်။

ထို့ကြောင့်၊ စက်အားလုံးသည် လက်ပ်တော့၏ virtual access point သို့ ချိတ်ဆက်ထားသည်။

စနစ်တွင် tun2socks တပ်ဆင်ပါ။

သင့်စက်တွင် အင်တာနက်ရှိသရွေ့ လိုအပ်သောကိရိယာအားလုံးကို ဒေါင်းလုဒ်လုပ်ပါ။

apt update
apt install git make cmake

badvpn အထုပ်ကို ဒေါင်းလုဒ်လုပ်ပါ။

git clone https://github.com/ambrop72/badvpn

သင့်စနစ်တွင် ဖိုင်တွဲတစ်ခု ပေါ်လာလိမ့်မည်။ badvpn. တည်ဆောက်မှုအတွက် သီးခြား folder တစ်ခုဖန်တီးပါ။

mkdir badvpn-build

သွားလိုက်ပါ။

cd badvpn-build

စုဆောင်းပါ။ tun2socks

cmake ../badvpn -DBUILD_NOTHING_BY_DEFAULT=1 -DBUILD_TUN2SOCKS=1

စနစ်တွင်ထည့်သွင်းပါ။

make install
  • parameter သည် -DBUILD_NOTHING_BY_DEFAULT=1 badvpn repository ၏ အစိတ်အပိုင်းအားလုံး၏ တည်ဆောက်မှုကို ပိတ်သည်။
  • -DBUILD_TUN2SOCKS=1 စည်းဝေးပွဲတွင် အစိတ်အပိုင်းတစ်ခု ပါဝင်သည်။ tun2socks.
  • make install — သင့်စနစ်တွင် tun2socks binary ကို တပ်ဆင်ပါမည်။ /usr/local/bin/badvpn-tun2socks.

tun2socks ဝန်ဆောင်မှုကို systemd တွင် ထည့်သွင်းပါ။

ဖိုင်တစ်ခုဖန်တီးပါ။ /etc/systemd/system/tun2socks.service အောက်ပါအကြောင်းအရာနှင့်အတူ

[Unit]
Description=SOCKS TCP Relay

[Service]
ExecStart=/usr/local/bin/badvpn-tun2socks --tundev tun2socks --netif-ipaddr 172.16.1.1 --netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:9050

[Install]
WantedBy=multi-user.target
  • --tundev - systemd-networkd ဖြင့်ကျွန်ုပ်တို့စတင်လုပ်ဆောင်သော virtual interface ၏အမည်ကိုယူပါ။
  • --netif-ipaddr — virtual interface ကိုချိတ်ဆက်ထားသည့် tun2socks “router” ၏ကွန်ရက်လိပ်စာ။ ခွဲထားတာ ပိုကောင်းပါတယ်။ သီးသန့်ခွဲကွန်ရက်.
  • --socks-server-addr - socket လက်ခံသည် (адрес:порт SOCKS ဆာဗာများ)။

သင်၏ SOCKS ဆာဗာသည် စစ်မှန်ကြောင်းသက်သေပြရန် လိုအပ်ပါက၊ သင်သည် ကန့်သတ်ချက်များကို သတ်မှတ်နိုင်သည်။ --username и --password.

ထို့နောက် ဝန်ဆောင်မှုကို စာရင်းသွင်းပါ။

systemctl daemon-reload

အဖွင့်

systemctl enable tun2socks

ဝန်ဆောင်မှုမစတင်မီ၊ ကျွန်ုပ်တို့က ၎င်းကို virtual network interface တစ်ခုဖြင့် ပံ့ပိုးပေးပါမည်။

systemd-networkd သို့ပြောင်းနေသည်။

ကျနော်တို့ပါဝင်သည် systemd-networkd:

systemctl enable systemd-networkd

လက်ရှိကွန်ရက်ဝန်ဆောင်မှုများကို ပိတ်ပါ။

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-စောင့်ဆိုင်း-အွန်လိုင်း systemd သည် ကွန်ရက်တစ်ခု၏ရှေ့မှောက်တွင် မူတည်သော အခြားဝန်ဆောင်မှုများကို မစတင်မီ အလုပ်လုပ်သော ကွန်ရက်ချိတ်ဆက်မှုကို စောင့်မျှော်နေသည့် ဝန်ဆောင်မှုတစ်ခုဖြစ်သည်။ systemd-networkd analogue သို့ပြောင်းထားသောကြောင့် ၎င်းကို disable လုပ်ထားပါသည်။

ချက်ချင်းဖွင့်လိုက်ရအောင်-

systemctl enable systemd-networkd-wait-online

ကြိုးမဲ့ကွန်ရက် အင်တာဖေ့စ်ကို စနစ်ထည့်သွင်းပါ။

ကြိုးမဲ့ကွန်ရက်အင်တာဖေ့စ်အတွက် systemd-networkd configuration file ကိုဖန်တီးပါ။ /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • အမည် သင်၏ကြိုးမဲ့ interface ၏အမည်ဖြစ်သည်။ အမိန့်ဖြင့် ခွဲခြားသတ်မှတ်ပါ။ ip a.
  • IPForward - network interface တွင် packet redirection ကို enable လုပ်သည့် ညွှန်ကြားချက်။
  • လိပ်စာ ကြိုးမဲ့အင်တာဖေ့စ်သို့ IP လိပ်စာတစ်ခုသတ်မှတ်ပေးရန်တာဝန်ရှိသည်။ ညီမျှသော ညွှန်ကြားချက်ဖြင့် ၎င်းကို တည်ငြိမ်စွာ သတ်မှတ်ပါသည်။ DHCP=yes၊ systemd-networkd သည် စနစ်တွင် ပုံသေတံခါးပေါက်တစ်ခုကို ဖန်တီးသည်။ ထို့နောက် အသွားအလာအားလုံးသည် မူလတံခါးပေါက်မှတဆင့် ဖြတ်သန်းသွားမည်ဖြစ်ပြီး အခြားကွန်ရက်ခွဲတစ်ခုရှိ အနာဂတ် virtual interface ကို ဖြတ်သန်းမည်မဟုတ်ပါ။ အမိန့်ဖြင့် လက်ရှိ default gateway ကိုသင်စစ်ဆေးနိုင်သည်။ ip r

အဝေးထိန်း SOCKS ဆာဗာအတွက် တည်ငြိမ်သောလမ်းကြောင်းတစ်ခု ဖန်တီးပါ။

သင့် SOCKS ဆာဗာသည် စက်တွင်းမဟုတ်သော်လည်း အဝေးထိန်းစနစ်ဖြစ်ပါက ၎င်းအတွက် တည်ငြိမ်လမ်းကြောင်းတစ်ခု ဖန်တီးရန် လိုအပ်သည်။ ဒါကိုလုပ်ဖို့၊ အပိုင်းတစ်ခုထည့်ပါ။ Route အောက်ပါအကြောင်းအရာဖြင့် သင်ဖန်တီးထားသော wireless interface configuration file ၏အဆုံးအထိ

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway — ဤသည်မှာ မူရင်းဝင်ပေါက် သို့မဟုတ် သင့်မူရင်းဝင်ရောက်ခွင့်အချက်၏လိပ်စာဖြစ်သည်။
  • Destination — SOCKS ဆာဗာလိပ်စာ။

systemd-networkd အတွက် wpa_supplicant ကို စီစဉ်သတ်မှတ်ပါ။

systemd-networkd သည် လုံခြုံသော access point သို့ ချိတ်ဆက်ရန် wpa_supplicant ကို အသုံးပြုသည်။ ကြိုးမဲ့ interface ကို "မြှင့်တင်ရန်" ကြိုးစားသောအခါ၊ systemd-networkd သည်ဝန်ဆောင်မှုကိုစတင်သည်။ wpa_supplicant@имяဘယ်မှာ နာမတျောကို wireless interface ၏အမည်ဖြစ်ပါသည်။ ဤအချက်မတိုင်မီတွင် systemd-networkd ကို အသုံးမပြုပါက၊ ဤဝန်ဆောင်မှုသည် သင့်စနစ်တွင် ပျောက်ဆုံးသွားနိုင်သည်။

ထို့ကြောင့် ၎င်းကို command ဖြင့် ဖန်တီးပါ။

systemctl enable wpa_supplicant@wlp6s0

ငါသုံးခဲ့တယ် wlp6s0 ၎င်း၏ wireless interface ၏အမည်အဖြစ်။ သင့်အမည် ကွဲပြားနိုင်သည်။ ၎င်းကို အမိန့်ဖြင့် မှတ်မိနိုင်သည်။ ip l.

ယခုဖန်တီးထားသောဝန်ဆောင်မှု wpa_supplicant@wlp6s0 ကြိုးမဲ့အင်တာဖေ့စ်ကို "မြှင့်တင်သည်" သောအခါတွင်စတင်လိမ့်မည်၊ သို့သော်၎င်းသည်ဖိုင်အတွင်းရှိဝင်ရောက်ခွင့်ပွိုင့်၏ SSID နှင့်စကားဝှက်ဆက်တင်များကိုရှာဖွေလိမ့်မည်။ /etc/wpa_supplicant/wpa_supplicant-wlp6s0. ထို့ကြောင့်၊ သင်သည် utility ကိုအသုံးပြု၍ ၎င်းကိုဖန်တီးရန်လိုအပ်သည်။ wpa_passphrase.

ဒါကိုလုပ်ဖို့၊ command ကို run ပါ။

wpa_passphrase SSID password>/etc/wpa_supplicant/wpa_supplicant-wlp6s0.conf

ဘယ်မှာ SSID သို့ သင်၏ဝင်ရောက်ခွင့်အမှတ်၊ စကားဝှက်သည် စကားဝှက်ဖြစ်ပြီး၊ wlp6s0 - သင်၏ကြိုးမဲ့အင်တာဖေ့စ်၏အမည်။

tun2socks အတွက် virtual interface ကို စတင်လိုက်ပါ။

စနစ်ရှိ virtual interface အသစ်တစ်ခုကို စတင်ရန် ဖိုင်တစ်ခုဖန်တီးပါ။/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • အမည် ၎င်းကို စတင်သောအခါတွင် systemd-networkd သည် အနာဂတ် virtual interface ကို သတ်မှတ်ပေးမည့် အမည်ဖြစ်သည်။
  • အမျိုးအစား virtual interface အမျိုးအစားတစ်ခုဖြစ်သည်။ tun2socks ဝန်ဆောင်မှု၏အမည်မှ၊ ၎င်းသည်ကဲ့သို့သောအင်တာဖေ့စ်ကိုအသုံးပြုသည်ဟုသင်ခန့်မှန်းနိုင်သည်။ tun.
  • နက်ဖြန် ဖိုင်တွေရဲ့ extension တစ်ခုဖြစ်ပါတယ်။ systemd-networkd virtual network interface များကို အစပြုရန် အသုံးပြုသည်။ ဤအင်တာဖေ့စ်များအတွက် လိပ်စာနှင့် အခြားသော ကွန်ရက်ဆက်တင်များကို ဖော်ပြထားပါသည်။ .network- ဖိုင်များ။

ဤကဲ့သို့သောဖိုင်ကိုဖန်တီးပါ။ /etc/systemd/network/25-tun2socks.network အောက်ပါအကြောင်းအရာနှင့်အတူ

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name — သင်သတ်မှတ်ထားသော virtual interface ၏အမည် နက်ဖြန်- ဖိုင်။
  • Address — virtual interface သို့သတ်မှတ်ပေးမည့် IP လိပ်စာ။ tun2socks ဝန်ဆောင်မှုတွင် သင်သတ်မှတ်ထားသော လိပ်စာအတိုင်း ကွန်ရက်တစ်ခုတည်းတွင် ရှိရပါမည်။
  • Gateway - "router" ၏ IP လိပ်စာ tun2sockssystemd ဝန်ဆောင်မှုကိုဖန်တီးရာတွင် သင်သတ်မှတ်ထားသည့်၊

ဒါကြောင့် ဖေ့စ်ဘုတ်ခ် tun2socks လိပ်စာတစ်ခုရှိသည်။ 172.16.1.2, နှင့်ဝန်ဆောင်မှု tun2socks - 172.16.1.1ဆိုလိုသည်မှာ၊ ၎င်းသည် virtual interface မှချိတ်ဆက်မှုအားလုံးအတွက်တံခါးပေါက်ဖြစ်သည်။

virtual access point တစ်ခု သတ်မှတ်ပါ။

မှီခိုမှုကို ထည့်သွင်းပါ-

apt install util-linux procps hostapd iw haveged

repository ကိုဒေါင်းလုဒ်လုပ်ပါ။ create_ap သင့်ကားဆီသို့

git clone https://github.com/oblique/create_ap

သင့်စက်ရှိ repository ဖိုဒါသို့ သွားပါ-

cd create_ap

စနစ်တွင် ထည့်သွင်းပါ-

make install

သင့်စနစ်တွင် config တစ်ခုပေါ်လာလိမ့်မည်။ /etc/create_ap.conf. ဤသည်မှာ အဓိက တည်းဖြတ်ခြင်း ရွေးစရာများ ဖြစ်သည်-

  • GATEWAY=10.0.0.1 - ၎င်းကို သီးခြားသီးသန့်ခွဲထားသောကွန်ရက်တစ်ခုဖြစ်အောင် ပြုလုပ်ခြင်းက ပိုကောင်းပါတယ်။
  • NO_DNS=1 - ဤကန့်သတ်ချက်အား systemd-networkd virtual interface က စီမံခန့်ခွဲမည်ဖြစ်သောကြောင့် ပိတ်ပါ။
  • NO_DNSMASQ=1 - တူညီသောအကြောင်းပြချက်ကြောင့်၎င်းကိုပိတ်ထားပါ။
  • WIFI_IFACE=wlp6s0 - လက်ပ်တော့ ကြိုးမဲ့ မျက်နှာပြင်။
  • INTERNET_IFACE=tun2socks - tun2socks အတွက် ဖန်တီးထားသော virtual interface တစ်ခု။
  • SSID=hostapd - virtual access point ၏အမည်။
  • PASSPHRASE=12345678 - စကားဝှက်။

ဝန်ဆောင်မှုကို ဖွင့်ရန် မမေ့ပါနှင့်။

systemctl enable create_ap

DHCP ဆာဗာကို systemd-networkd တွင်ဖွင့်ပါ။

ရုံး create_ap စနစ်ရှိ virtual interface ကိုစတင်သည်။ ap0. သီအိုရီအရ dnsmasq သည် ဤအင်တာဖေ့စ်ပေါ်တွင် ချိတ်ဆွဲထားသော်လည်း systemd-networkd တွင် built-in DHCP ဆာဗာတစ်ခုပါရှိသည်ဆိုလျှင် အဘယ်ကြောင့် အပိုဝန်ဆောင်မှုများကို ထည့်သွင်းပါ။

၎င်းကိုဖွင့်ရန်၊ ကျွန်ုပ်တို့သည် virtual point အတွက် ကွန်ရက်ဆက်တင်များကို သတ်မှတ်ပါမည်။ ဒီလိုလုပ်ဖို့၊ ဖိုင်တစ်ခုဖန်တီးပါ။ /etc/systemd/network/25-ap0.network အောက်ပါအကြောင်းအရာနှင့်အတူ

[Match]
Name=ap0

[Network]
Address=10.0.0.1/24
DHCPServer=yes

[DHCPServer]
EmitDNS=yes
DNS=10.0.0.1
EmitNTP=yes
NTP=10.0.0.1

create_ap ဝန်ဆောင်မှုပြီးနောက် virtual interface ကိုစတင်သည်။ ap0၊ systemd-networkd သည် ၎င်းအား IP လိပ်စာတစ်ခု အလိုအလျောက် သတ်မှတ်ပေးပြီး DHCP ဆာဗာကို ဖွင့်ပေးမည်ဖြစ်သည်။

လိုင်းများ EmitDNS=yes и DNS=10.0.0.1 access point သို့ချိတ်ဆက်ထားသော စက်များသို့ DNS ဆာဗာဆက်တင်များကို ပို့ပါ။

အကယ်၍ သင်သည် ဒေသန္တရ DNS ဆာဗာကို အသုံးမပြုပါက၊ ကျွန်ုပ်၏ ကိစ္စတွင် ၎င်းသည် dnscrypt-proxy ဖြစ်သည်- သင်သည် ထည့်သွင်းနိုင်သည်။ DNS=10.0.0.1 в DNS=192.168.1.1ဘယ်မှာ 192.168.1.1 - သင့်မူရင်းဝင်ပေါက်၏လိပ်စာ။ ထို့နောက် သင့်အိမ်ရှင်နှင့် ဒေသတွင်းကွန်ရက်အတွက် DNS တောင်းဆိုမှုများသည် ဝန်ဆောင်မှုပေးသူ၏ဆာဗာများမှတစ်ဆင့် ကုဒ်ဝှက်ထားခြင်းမရှိပေ။

EmitNTP=yes и NTP=192.168.1.1 NTP ဆက်တင်များကို လွှဲပြောင်းပါ။

လိုင်းအတွက်လည်း အတူတူပါပဲ။ NTP=10.0.0.1.

NTP ဆာဗာကို ထည့်သွင်းပြီး ပြင်ဆင်သတ်မှတ်ပါ။

စနစ်တွင် ထည့်သွင်းပါ-

apt install ntp

config ကို တည်းဖြတ်ပါ။ /etc/ntp.conf. Standard Pool များ၏ လိပ်စာများကို မှတ်ချက်ရေးပါ။

#pool 0.debian.pool.ntp.org iburst
#pool 1.debian.pool.ntp.org iburst
#pool 2.debian.pool.ntp.org iburst
#pool 3.debian.pool.ntp.org iburst

အများသူငှာ ဆာဗာလိပ်စာများ ထည့်ပါ ဥပမာ Google Public NTP

server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust

သင့်ကွန်ရက်ရှိ ဖောက်သည်များအား ဆာဗာသို့ ဝင်ရောက်ခွင့် ပေးပါ။

restrict 10.0.0.0 mask 255.255.255.0

သင့်ကွန်ရက်သို့ ထုတ်လွှင့်မှုကို ဖွင့်ပါ-

broadcast 10.0.0.255

နောက်ဆုံးတွင်၊ ဤဆာဗာများ၏လိပ်စာများကို static routing table တွင်ထည့်ပါ။ ဒါကိုလုပ်ဖို့၊ ကြိုးမဲ့ interface configuration file ကိုဖွင့်ပါ။ /etc/systemd/network/25-wlp6s0.network အပိုင်း၏အဆုံးသို့ထည့်ပါ။ Route.

[Route]
Gateway=192.168.1.1
Destination=216.239.35.0

[Route]
Gateway=192.168.1.1
Destination=216.239.35.4

[Route]
Gateway=192.168.1.1
Destination=216.239.35.8

[Route]
Gateway=192.168.1.1
Destination=216.239.35.12

utility ကို အသုံးပြု၍ သင်၏ NTP ဆာဗာများ၏ လိပ်စာများကို ရှာဖွေနိုင်ပါသည်။ host အောက်ပါအတိုင်း:

host time1.google.com

dnscrypt-proxy ကို ထည့်သွင်းပါ၊ ကြော်ငြာများကို ဖယ်ရှားပြီး သင့်ဝန်ဆောင်မှုပေးသူထံမှ DNS လမ်းကြောင်းကို ဝှက်ထားပါ။

apt install dnscrypt-proxy

host နှင့် local network DNS queries ဝန်ဆောင်မှုပေးရန်အတွက် socket ကို တည်းဖြတ်ပါ။ /lib/systemd/system/dnscrypt-proxy.socket. အောက်ပါလိုင်းများကို ပြောင်းပါ

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

ပြန်စတင်သည် systemd:

systemctl daemon-reload

config ကို တည်းဖြတ်ပါ။ /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

tun2socks မှတဆင့် dnscrypt-proxy ချိတ်ဆက်မှုများကို လမ်းကြောင်းပြရန်၊ အောက်တွင် ထည့်ပါ-

force_tcp = true

config ကို တည်းဖြတ်ပါ။ /etc/resolv.confDNS server ကို host ကိုပြောပြသည်။

nameserver 127.0.0.1
nameserver 192.168.1.1

ပထမလိုင်းသည် dnscrypt-proxy ကိုအသုံးပြုရန်ခွင့်ပြုသည်၊ ဒုတိယလိုင်းသည် dnscrypt-proxy ဆာဗာကိုမရရှိနိုင်ပါကမူလတံခါးပေါက်ကိုအသုံးပြုသည်။

Done!

ကွန်ရက်ဝန်ဆောင်မှုများကို ပြန်လည်စတင်ခြင်း သို့မဟုတ် ရပ်တန့်ခြင်း-

systemctl stop networking NetworkManager NetworkManager-wait-online

လိုအပ်သမျှကို ပြန်လည်စတင်ပါ။

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

ပြန်လည်စတင်ခြင်း သို့မဟုတ် ပြန်လည်စတင်ပြီးနောက်၊ သင့်တွင် host နှင့် LAN စက်ပစ္စည်းများကို SOCKS သို့ လမ်းကြောင်းပေးသည့် ဒုတိယ access point တစ်ခုရပါလိမ့်မည်။

ဤသည်မှာ အထွက်ပုံသဏ္ဌာန်ဖြစ်သည်။ ip a ပုံမှန်လက်တော့ပ်-

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: tun2socks: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 500
    link/none 
    inet 172.16.1.2/24 brd 172.16.1.255 scope global tun2socks
       valid_lft forever preferred_lft forever
    inet6 fe80::122b:260:6590:1b0e/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
3: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether e8:11:32:0e:01:50 brd ff:ff:ff:ff:ff:ff
4: wlp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 4c:ed:de:cb:cf:85 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global wlp6s0
       valid_lft forever preferred_lft forever
    inet6 fe80::4eed:deff:fecb:cf85/64 scope link 
       valid_lft forever preferred_lft forever
5: ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 4c:ed:de:cb:cf:86 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 brd 10.0.0.255 scope global ap0
       valid_lft forever preferred_lft forever
    inet6 fe80::4eed:deff:fecb:cf86/64 scope link 
       valid_lft forever preferred_lft forever

ရလဒ်အဖြစ်

  1. ဝန်ဆောင်မှုပေးသူသည် သင့် SOCKS ဆာဗာသို့ ကုဒ်ဝှက်ထားသော ချိတ်ဆက်မှုကိုသာ မြင်နိုင်သည်၊ ဆိုလိုသည်မှာ ၎င်းတို့သည် ဘာမှမမြင်ရပါ။
  2. ၎င်းသည် သင်၏ NTP တောင်းဆိုမှုများကို မြင်သော်လည်း ၎င်းကိုတားဆီးရန်အတွက် NTP ဆာဗာများအတွက် တည်ငြိမ်သောလမ်းကြောင်းများကို ဖယ်ရှားပါ။ သို့သော်၊ သင်၏ SOCKS ဆာဗာသည် NTP ပရိုတိုကောကို ခွင့်ပြုထားကြောင်း မသေချာပါ။

Debain 10 တွင် Crutch သည် တွေ့ရှိခဲ့သည်။

ကွန်ဆိုးလ်မှ ကွန်ရက်ဝန်ဆောင်မှုကို ပြန်လည်စတင်ရန် ကြိုးစားပါက၊ ၎င်းသည် အမှားအယွင်းတစ်ခုကြောင့် ကျရှုံးသွားမည်ဖြစ်သည်။ ၎င်းသည် virtual interface ပုံစံဖြင့်၎င်း၏အစိတ်အပိုင်းကို tun2socks ဝန်ဆောင်မှုနှင့်ချိတ်ဆက်ထားသောကြောင့်၎င်းကိုအသုံးပြုသည်ဟုဆိုလိုသည်။ ကွန်ရက်ဝန်ဆောင်မှုကို ပြန်လည်စတင်ရန် tun2socks ဝန်ဆောင်မှုကို ဦးစွာ ရပ်တန့်ရပါမည်။ ဒါပေမယ့် အဆုံးထိဖတ်ရင် ဒါက မင်းအတွက် ပြဿနာမဟုတ်ဘူးလို့ ငါထင်ပါတယ်။

ကိုးကား

  1. Linux - IBM တွင် တည်ငြိမ်သောလမ်းကြောင်း
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks ¡ ambrop72/badvpn Wiki ¡ GitHub
  4. oblique/create_ap- ဤဇာတ်ညွှန်းသည် NATed သို့မဟုတ် Bridged WiFi Access Point ကို ဖန်တီးသည်။
  5. dnscrypt-proxy 2 — ကုဒ်ဝှက်ထားသော DNS ပရိုတိုကောများအတွက် ပံ့ပိုးမှုဖြင့် ပြောင်းလွယ်ပြင်လွယ်ရှိသော DNS proxy တစ်ခု။

source: www.habr.com