Pi د VPN کلاینټ په توګه: یو مدیر که خپل سکریپټ؟
په Raspberry Pi کې د NetworkManager پروفایل د لاسي لیکل شوي کلاینټ سکریپټ سره پرتله کول، په شمول بشپړ ټونل، DNS، IPv6 او د ټونل لوېدو وخت چلند.
هغه Raspberry Pi چې یوازې خپل وتونکی ټرافیک باید وساتي، دوه واقعي ډیزاینونه لري: شبکې مدیر ته اجازه ورکړئ چې ټونل ولري، یا هغه سکریپټ وساتئ چې مالکیت یې لري۔ دواړه کولای شي ټرافیک ولېږدوي۔ دوی په بېلو ځایونو کې ناکامېږي، او هغه ناکامي چې د شپې په دوه بجو له لارې تشخیصولی شئ، هغه ده چې د غوراوي وړ ده۔ دوی د مالکیت له مخې، د دې له مخې چې کله IPv6 او DNS شامل شي بشپړ ټونل څه معنا لري، او د دې له مخې چې د ټونل لوېدو په شیبه کې څه پېښېږي پرتله کړئ۔
یو ټونل لپاره دوه مالکان
ډیزاین A د سیسټم د شبکې مدیر دننه یو پروفایل دی: وارد شوی OpenVPN پروفایل یا اصلي WireGuard اړیکه، چې د بوټ په وخت کې د هغې هماغې خدمت له خوا فعالېږي چې Ethernet او Wi-Fi پورته کوي۔ ډیزاین B ستاسو خپله یونټ دی چې کلاینټ مستقیم چلوي، د ریزارور ترتیب سمونې کوي او خپلې لارې او د اور وژنې قواعد نصبوي۔ دواړه قانوني ډیزاینونه دي؛ دوی په دې کې توپیر لري چې د لارښوونې جدول د بدلولو اجازه چا لري۔
ناکامۍ توپیر لري ځکه مالکان توپیر لري۔ په A کې، هغه پروفایل چې فعال نه شي انټرفیس پورته او ټونل ښکته پرېږدي، او د مدیر لاګونه وایي ولې۔ په B کې، هغه سکریپټ چې نیمګړی بریالی شي هغه لارې پرېږدي چې له هغې پروسې وروسته هم ژوندي پاتې کېږي چې جوړې کړې وې۔ دواړه چلول ترټولو بد نتیجه ده: دوه پروسې اصلي لار لیکي، د بوټ په وخت کې دوه ریزارور سمونې سیالي کوي، او د څرخولو لپاره دوه سیټه پټ رازونه۔
د هر ټونل لپاره یو مالک وټاکئ او مخکې له دې چې څه وازموئ بل غیر فعال کړئ۔ دوه مالکان دا هم مانا لري چې کله ټونل پورته وي او هېڅ نه حل کېږي د کتلو لپاره دوه ځایونه۔ همدا یوه قاعده د Pi VPN بحثونو کې تشریح شوې ډېری ګډوډې حالتونه مخه نیسي۔
واردات څه جوړوي، او څه نه
په Raspberry Pi OS Bookworm او وروسته نسخو کې د شبکې ترتیب اصلي وسیله NetworkManager ده، نو پروفایل د کلاینټ ټونل طبیعي کور دی۔ واردات اړتیا لري چې اړوند پلگ ان نصب وي؛ پرته له دې واردات د ناسم ملاتړ شوي اړیکې ډول په اړه پیغام سره ناکامېږي، چې دا د ودېدو او پلگ ان نصبولو ریښتینی اشاره ده۔
nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name
واردات یو پروفایل ساتي۔ دا ثابتوي نه چې بل لوری د رسېدو وړ دی، او نه تضمینوي چې په فایل کې هر لارښود له بدلون څخه ژوندی پاتې شوی۔ ترلاسه شوې اړیکه بیا ولولئ او هغه برخې وګورئ چې هویت او باور لېږدوي: سند، لرې هوست او پورټ، او دا چې پټنوم غوښتل کېږي که ساتل کېږي۔
د --ask سره فعالول په شریک ماشین کې د شیل تاریخ له بهر پټنوم جمله ساتي۔ د بې پاملرنې Pi لپاره به په پای کې غواړئ چې پروفایل د بوټ په وخت پورته شي، چې دا د لاسي یو ځل پورته کولو څخه جلا پرېکړه ده۔
بشپړ ټونل، د دواړو ډیزاینونو په پرتله
بشپړ ټونل د لارو په اړه ادعا ده، نه د نیت، او دواړه ډیزاینونه دا په بېل ډول بیانوي۔ د پروفایل طریقه له مدیر څخه غواړي چې اصلي لار او د ریزارور تنظیمات نصب کړي؛ د سکریپټ طریقه هغه څه کوي چې سکریپټ وایي، هېڅ نه کول هم په کې۔ هېڅ ډیزاین IPv6 نه پوښي پرته له دې چې ورته وویل شي، او ناڅاپه IPv6 اصلي لار به په خوښۍ سره ټرافیک له ټونل بهر ولېږدوي پداسې حال کې چې IPv4 بشپړ ښکاري۔
ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org
د لارې پلټنې لپاره د اسنادو پته وکاروئ او هغه هوست سره بدل کړئ چې ازموینې اجازه لرئ۔ لومړی امر ښیي چې Pi د عادي منزل لپاره کوم انټرفیس کاروي؛ دویم ښیي چې IPv6 اصلي لار لا هم شته که نه؛ دریم ثابتوي چې کوم ریزارور ځواب ورکړ۔ د بشپړ ټونل په اړه هر ادعا باور کولو دمخه درې واړه ولولئ۔
که د برابرونکي لارښوونې بشپړ ټونل ژمنه کوي خو IPv6 اصلي لار پاتې کېږي، Pi تویېږي۔ په پورته لینک کې IPv6 غیر فعال کړئ یا له پروفایل څخه وغواړئ چې یې ادعا وکړي، او په شعوري ډول پرېکړه وکړئ پرځای دې چې وروسته یې کشف کړئ۔
خلاص ناکامي د بندې ناکامۍ پر وړاندې
کله چې ټونل ولویږي، هغه لارښوونه جدول چې خپله اصلي لار له لاسه ورکوي یوازې فزیکي پورته لینک ته راستنېږي، او ټرافیک په خلاص ډول دوام کوي۔ دا خلاصه ناکامي ده، او که څه مخه یې ونه نیسي دا د دواړو ډیزاینونو اصلي چلند دی۔ ډېری خلک دا له اونیو وروسته د اور وژنې لاګ لوستلو سره کشفوي۔
بنده ناکامي هغه وخت چې ټونل ښکته وي ستاسو لرې لاسرسی اخلي، نو د مدیریت لار لپاره شعوري استثنا ته اړتیا لري۔ یوه لاره هغه قاعده ده چې له ټونل بهر یوازې د VPN ملګري پته اجازه ورکوي:
sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject
د عملیاتي لګښت په رښتیني ډول پرتله کړئ۔ پروفایل معمولاً نشي کولای دا قاعده بیان کړي، نو بنده ناکامي تاسو د سکریپټ ډیزاین یا د یوې کوچنۍ یونټ په لور ټېل وهي چې قاعده له ټونل خپلواکه نصبوي۔ په هر حال، یوه اونۍ ردونه ثبت کړئ: غلی رد د ماتې شوې خدمت په څېر ښکاري، او کله چې کاروونکی راپور ورکړ چې یو سایټ له لوډېدو ودېد، تاسو ته شمارونکی اړین وي۔
د سکرین پرته Pi لپاره غوراوی
که انځور لا دمخه NetworkManager چلوي، ټونل څه عجیب ته اړتیا نه لري، او غواړئ چې په اتوماتيک ډول پورته لینک تعقیب کړي، پروفایل واخلئ۔ که تاسو ته د پالیسۍ لارښوونې، د هر منزل لپاره ټاکل شوي څو ټونلونه، یا هغه بنده-ناکامي قاعده چې باید د ټونل پورته کېدو دمخه شتون ولري، سکریپټ واخلئ او د بوټ ترتیب او پاکولو په شمول د هغې هرې برخې مالکیت وکړئ۔ دواړه ډیزاینونه ګډول له هر یو څخه ډېر لګښت لري۔
د دوی ترمنځ لېږد اصلي خبره د ترتیب ده: پخوانی مالک غیر فعال کړئ، تایید کړئ چې پخوانۍ لار یا ریزارور ننوتنه نه ده پاتې، بیا نوی فعال کړئ او دوه ځله بیا پیل کړئ۔ یو بیا پیل کولای شي هغه سیالي پټه کړي چې دویم یې افشا کوي۔ د ټونل نه، د Pi په ازموینې سره پای ومومئ: یو نوم حل کړئ، له IPv4 لارې څه راواخلئ، که یې ساتلی وي له IPv6 لارې هم راواخلئ، بیا ټونل وغورځوئ او تایید کړئ چې ستاسو ټاکلی چلند واقعاً پېښېږي۔ په ip link کې انټرفیس د ازموینې پیل دی، نه پای۔