د SSH ډینامیک لېږد ستاسو د VPN پرمخ د SOCKS پروکسي په توګه
هغه اپلیکیشن چې یوازې SOCKS وایي، په عادي VPN کې د پروکسي پای ټکی نلري۔ دوه ټوپونه، یو لوپبیک اورېدونکی او یو نوم لټون چې SSH سرور باید پخپله یې وکړي۔
هغه اپلیکیشن چې یوازې SOCKS وایي، په عادي VPN کې د خبرو لپاره هیڅ نلري، ځکه تونل پاکټونه وړي او اپلیکیشن د پروکسي پای ټکی غواړي۔ OpenSSH کولای شي هغه ټکی برابروو کله چې د لاسرسي مالک اجازه ورکړي، ځکه ډینامیک لېږد یوه SSH ناسته په محلي پروکسي بدلوي۔ بیا دوه ټوپونه دي چې باید جلا وساتل شي: هغه تونل چې SSH کوربه ته رسېږي، او هغه اړیکه چې دا کوربه وروسته پرانیزي۔ د دوی جلا کول هم دا څرګندوي چې دا ترتیب ولې کار کوي او هم دا چې هر کله به څه ونه کړي۔
SSH اورېدونکی څه کېږي او څه نه کېږي
ډینامیک لېږد SSH کاروونکی اړ باسي چې په محلي ډول واوري او له هر هغه څه سره چې نښلېږي SOCKS4 یا SOCKS5 ووایي۔ هره غوښتنه یو هدف نوموي او SSH سرور بل اړیکه پرانیزي، نو د هدف لټون کولای شي په بل لوري کې وشي۔ دا د اپلیکیشن کچې TCP لېږد دی، د ټول وسیله لپاره VPN نه دی۔ دا نه د UDP یوځایوالی وړي، نه ICMP، او نه هغو اپلیکیشنونو لپاره څه چې د پروکسي تنظیمات په بشپړه توګه له پامه غورځوي۔ له SSH سرور څخه اپلیکیشن ته ټوپ هم ستاسو د تونل دننه نه دی، دا هغه وخت مهم دی چې هدف یوازې له پېژندل شویو شبکو څخه ترافیک مني۔
مخکې شرطونه ریښتیني دي: SSH کوربه ته لار، اجازه لرونکی حساب، تصدیق شوی د سرور کوربه کیلي او د لېږد اجازه۔ له دوی څخه هېڅ یو پروکسي نه جوړوي، او وروستی معمولاً لومړی ورکېږي۔ له بل هر څه د سمون مخکې څلور واړه تایید کړئ، ځکه له کاروونکي اړخه ناکامي ورته ښکاري، که کوم یو هم ورک وي۔
دا په لوپبیک کې د روښانه پورټ سره پیل کړئ
یو نه کارېدونکی محلي پورټ وټاکئ او هغه په روښانه ډول لوپبیک ته وتړئ، د دې پرځای چې پته پرېږدئ۔ لاندې درې انتخابونه هر یو د یوې دلیل لپاره شته۔
ssh -D 127.0.0.1:1080 -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
[email protected]
-N لرې کمانډ پرېږدي او -T سیوډو-ټرمینل پرېږدي، نو ناسته یوازې د لېږد لپاره ده۔ ExitOnForwardFailure کاروونکی باسي چې ووځي کله چې اورېدونکی نه شي جوړېدلی، ستاسو غوښتل شوي لېږد پرته د کار کولو پرځای۔ ControlPath=none ناسته له یوې موجودې څوګونې اړیکې بهر ساتي چې کولای شي خپل لېږدونه ورزیات کړي۔ لوپبیک اورېدونکی له LAN بهر ساتي، خو په شریکه ماشین کې دا د اجازې پوله نه ده، ځکه نور محلي پروسې هم ورته رسېدلی شي۔ د OpenSSH کاروونکي مرجع دا ټولې نښې مستند کوي، او د لوپبیک خبرداری له دې څخه راځي چې اورېدونکی ساکټ څه دی۔
نومونه د پروکسي له لارې ولېږئ، د هغې شاوخوا نه
SOCKS5 کاروونکی کولای شي هدف پخپله حل کړي یا له پروکسي وغواړي چې دا وکړي، او همدا انتخاب ټاکي چې کوم حل کوونکی ځواب ووایي۔ له socks5h سره curl د کوربه نوم د پروکسي له لارې لېږي، نو لټون په SSH سرور کې کېږي۔ له ساده socks5 سره لپټاپ لومړی حل کوي او یوازې اړیکه ځي، دا هغه وخت چې نوم داخلي وي هدف په چوپتیا کې له منځه وړي۔ لاندې غوښتنه د بېپروکسي لیست هم تشوي، نو میراثي NO_PROXY ارزښت نه شي کولای دا د پروکسي شاوخوا بوځي۔
curl -sS --noproxy '' --proxy socks5h://127.0.0.1:1080 https://app.corp.example/health
د سند تصدیق او د اپلیکیشن خپل ننوتل لا هم پلي کېږي، ځکه پروکسي دواړه نه بدلوي۔ دوه لټونونه پاتې کېږي: لپټاپ باید د اجازه شوې VPN او DNS لارې له لارې SSH کوربه ته ورسېږي، او SSH سرور باید د اپلیکیشن نوم پخپله حل کړي۔ دوهم یوازې د دې مخکې ازمویل کېدای شي چې هر ترافیک د پروکسي له لارې تېر شي۔
ssh [email protected] getent hosts app.corp.example
یو اجازه شوی هدف ثابت کړئ، بیا ناسته وتړئ
هغه هدف وآزمویئ چې تګلاره اجازه ورکوي او هغه هم چې باید رد یې کړي، ځکه کار کوونکی لېږد یوازې دا ثابتوي چې اورېدونکی کار کوي او نور هیڅ نه۔ اپلیکیشن هغه سرچینه پته ویني چې SSH سرور غوره کوي، او دا ستاسو د لپټاپ د تونل پته نه ده۔ چېرې چې لرې سر د اړیکو ثبت په سرچینه کوي، هغه توپیر لومړی شی دی چې باید وکتل شي کله چې غوښتنه رد شي۔
ناسته د هغې د مالک پروسې له لارې ودروئ، نه د بېاړیکې شیل په وژلو سره۔ بیا تایید کړئ چې اورېدونکی لاړ، ځکه هغه پورټ چې لا هم ځواب وایي هغه ناسته ده چې تاسو یې واقعاً نه یاست تړلې۔ یوازې هغه پروکسي تنظیم لرې کړئ چې دا تمرین راوړ، او د اپلیکیشن پاتې ترتیبات پرېږدئ۔ د لېږد قاعده لرونکی بېڅار ټرمینل خدمت نه دی، او تلپاتې پروکسي ته تصویب شوی ژوندلیک ته اړتیا ده، نه هېر شوې کړکۍ ته۔
ss -ltn | grep 1080
هغه ناکامۍ چې دا ترتیب یې سمولای نه شي
ځینې نښې مستقیم پورتنیو حدودو ته اشاره کوي، او ژر پېژندل یې د پروکسي د سمون یوه ماسپښین خوندي کوي۔ جدول هغه څه چې تاسو یې وینئ له هغه څه سره نښلوي چې معمولاً یې مانا ده۔ په وروستي کالم کې هر څه د ډیزاین پوښتنه ده، نه د ترتیباتو تېروتنه۔
| What you see | What it usually means | Where to look |
|---|---|---|
| The app connects and nothing follows | It ignores proxy settings entirely | Its own network settings, not the SSH session |
| A name resolution error for the destination | The SSH server cannot resolve it | Server resolver and search domains |
| A UDP-only application fails | Dynamic forwarding carries TCP only | This arrangement cannot serve it |
| curl works, the browser does not | The browser is not using the socks5h endpoint | Browser proxy configuration |
| The listener answers after the session ended | Another process owns port 1080 | The ss output, then the owning process |
لومړنۍ درې کرښې هغه دي چې خلک یې غلط تشخیص کوي، ځکه هره یوه د پروکسي په اړه د تېروتنې پرځای د اړیکې هڅه جوړوي۔ هغه نوم چې په لپټاپ کې حل شي د سرور د حل کوونکي په اړه هیڅ نه وایي، او ناکامي د سند یا د وخت د پای ستونزې په توګه لوستل کېږي۔ یوازې UDP لرونکي اپلیکیشنونه د ډیزاین بهر ولاړ دي، دننه ماتی نه دي، او هېڅ اضافي ssh انتخاب دا نه بدلوي۔ د براوزر کرښه دا عادي یادونه ده چې د پروکسي تنظیمات د هر اپلیکیشن لپاره بېل دي۔ وروستې کرښه دا ښيي چې د تړلو کتنه ولې شته: هغه پورټ چې لا اورېدل کېږي مانا دا چې اوس بل څه یې مالک دی۔