د بوټ پر مهال د ثابتې VPN پتې سره تړونکی ساکټ واحد کېدای شي د تونل له خوا د پتې له ورکولو مخکې ناکام شي، او تر شا یې خدمت هیچېرنې پیل نه شي. دوه سویچونه د حل په څېر ښکاري او د دې ستونزې بېلابېلې نیمې حل کوي. FreeBind systemd ته اجازه ورکوي چې اورېدونکی هغه وخت جوړ کړي چې پته لا نه وي. After= یوازې کارونه ترتیبوي، نو بدلوي چې شیان کله پیلېږي، خو پته ژر نه راوړي.

دوه بېلابېلې ستونزې، دوه بېلابېل سویچونه

لومړنۍ ستونزه د تړلو ناکامي ده: کرنل په هغه پته د اورېدو انکار کوي چې کوربه یې مالک نه دی، نو ساکټ واحد سمدلاسه ناکام شي او خدمت هیچېرنې فعال نه شي. دوهمه ستونزه د چمتووالي ناکامي ده: پته په پای کې شته، خو یو څه غواړي له تونل څخه د ترافیک له لېږلو مخکې یې وکاروي. FreeBind لومړنۍ حل کوي او د دوهمې لپاره هیچ نه کوي. د ترتیب لارښوونې هیچ یوه ته مستقیم نه رسېږي، ځکه چې هغوی یوازې دا فیصله کوي چې څه په کوم ترتیب پیل شي. هغه ناکامي چې واقعاً یې لرئ نومول پخپله ټوله پرېکړه ده.

له دواړو کومه چې لرئ، له خدمت تفصیل نه بلکه له ژورنال څخه تایید کړئ. د تړلو ناکامي یوه پته نوموي او راپور ورکوي چې نشي ورکول کېدای. د چمتووالي ناکامي معمولاً وروسته ښکاري، د وخت پای یا له بل اړخ څخه لیدل شوې رد شوې اړیکې په ډول، په داسې حال کې چې په لاګونو کې بشپړه روغه ساکټ واحد وي.

FreeBind: اورېدونکی له پتې مخکې شته

FreeBind کرنل ته وایي چې غیر محلي پتې ته تړل اجازه ورکړي، تر څو systemd په بوټ کې اورېدونکی ساکټ جوړ کړای شي او هر کله چې اپلیکیشن پیل شي هغه ته یې وسپاري. د ساکټ فعالولو مانا همدا ده، او د دې سبب هم دا دی چې ساکټ کولای شي له خپل شاته خدمت څخه ژوندی پاتې شي.

[Socket]
ListenStream=
ListenStream=10.8.0.1:8443
FreeBind=yes

تشه ګومارنه د نوي داخلولو مخکې له عرضه کوونکي واحد څخه میراثي اورېدو داخلونه پاکوي، چې په هر انټرفیس کې ځواب ورکوونکی پاتې wildcard اورېدونکی منع کوي. پته او پورټ په خپلو بدل کړئ او یوازې drop-in فایل نه، اغېزمن واحد وګورئ. د بستې فایل په خپل ځای سمولو پر ځای د واحد تر نامې لاندې drop-in وکاروئ، ځکه چې بل بسته تازه کول به سمون له منځه یوسي او د نیت هیچ نښه نه پرېږدي. بیا یې د هغې بیا بارولو او بیا پیلولو بهیر له لارې پلي کړئ چې ساکټ واحد یې تمه لري.

د systemd ساکټ مرجع د دې انتخاب شاته د IPv4 او IPv6 چلند مستند کوي، او مهم تفصیل دا دی چې دا پر تړلو پلي کېږي، نه پر لارښوونې. په دې کې هیچ پته نه ګومارنه کوي او نه VPN پیلوي. FreeBind اورېدونکي ته ورکړل شوې اجازه ده، د انټرفیس بدیل نه.

After= او Wants=: ترتیب چمتووالی نه دی

ترتیب او اړتیا جلا محورونه دي، او د دوی ګډول هغه واحدونه جوړوي چې په سم ترتیب پیلېږي او بیا هم ناکامېږي. After=vpn-client.service یوازې دا مانا لري چې که دواړه کارونه پیل شي، دا یې د بل د پیلېدو انتظار کوي. دا VPN نه کش کوي، او د VPN د اړیکې د بشپړېدو انتظار هم نه کوي.

د اړتیا لارښوونې لکه Wants= او Requires= فعالول سمبالوي، او په دې کې توپیر لري چې کله تړاو ناکام شي څه پېښېږي: یوه دوام کوي، بله درېږي. هیچ یوه نه پوهېږي چې تړل شوی تونل څه مانا لري. VPN بهیر کولای شي پرته له ګومارل شوې پتې فعال وي، یا په ګومارل شوې پتې سره او ملګري ته پرته لار، او دواړه حالتونه تړاو پوره کوي. که اپلیکیشن پتې ته اړتیا لري، د بهیر پیلول د چمتووالي ثبوت ګڼلو پر ځای هغه شرط په ښکاره ډول ماډل کړئ.

systemctl cat او systemctl show -p After -p Wants -p Requires سره وګورئ چې واحد واقعاً څه اعلانوي. د درې جلا فولډرونو drop-in هغه لارښوونې اضافه کولای شي چې تاسو هیچ کله نه دي لیکلې، او systemd یوازې اغېزمن واحد لولي.

هغه څه چې network-online.target نه کوي

network-online.target وروسته ترتیب شوی واحد انتظار کوي چې د شبکې مدیر شبکه د کارولو وړ اعلان کړي، دا د بوټ همغږي ټکی دی، دوامداره شرط نه. دا نه وایي چې یو ځانګړی تونل پورته دی که نه، او کله چې VPN ماسپښین وروسته بیا وصل شي دا بیا نه ځليږي. دا د بیا وصلېدو څارونکی ګڼل د دې هدف تر ټولو عامه غلطه لوستنه ده.

د systemd پروژه دا توپیر مستقیم مستند کوي، او عملي پایله دا ده چې هر څه چې تونل پتې ته اړتیا لري باید پخپله تړاو ولري. هغه واحد چې د network-online انتظار کوي او بیا تونل پته تړي یوازې هغه وخت سم دی چې تونل ناڅاپه لومړی پورته شي، او دا ناڅاپه ده، ډیزاین نه.

هغه ژوند چرخه وازمویئ چې واقعاً مو غوره کړې

پاک بوټ، د پتې له ښکارېدو وروسته غوښتنه، او د VPN له لوېدو او بېرته راتلو وروسته چلند وازمویئ. هغه درې حالتونه کاري اورېدونکی له کاري خدمت څخه بېلوي.

systemd-analyze verify myapp.socket
systemctl cat myapp.socket
ss -ltn "sport = :8443"

لومړی حکم د بیا پیلولو مخکې د واحد فایل تېروتنې نیسي، دوهم یوځای شوی واحد ښیي، او درېیم ثابتوي چې اورېدونکی شته که نه او په کومه پته. په هغه ځای کې چې د تونل پتې تمه مو لرله، په wildcard پته اورېدونکی هغه پاتې شوی برخه ده چې تش ListenStream باید لرې کړې وای. د پتې د ځای بدلېدو لپاره د VPN له بیا وصلېدو وروسته درېیم حکم بیا وچلوئ.

ژوند چرخه په قصد وټاکئ: یا د ثابتې پتې د بېرته راتلو انتظار کوونکی آزاد تړل شوی اورېدونکی، یا هغه خدمت چې له تونل سره درېږي او د بیا رغېدو پر مهال بیا پیلېږي. دا بېلابېل ډیزاینونه دي او په بېلابېلو لارو ناکامېږي. بیا د لاسرسي تګلاره له هغو سرچینو او لارو سره وتړئ چې مو قصد درلود، ځکه چې د منزل پتې تړل اړینه نه ده چې منل شوې بستې د باوري انټرفیس له لارې راغلې وي.

اړوندې مقالې