Бул ишеним факт катары кабыл алына тургандай кеңири тараган: Android бир гана VPN'ге уруксат берет, ошондуктан телефондо иштеген SSH сервери ошол туннелден иштей албайт. Биринчи жарымы туура, ал эми тыянак андан келип чыкпайт. Платформанын чектөөсү VPN кызматынын уясын канча колдонмо ээлей алары тууралуу, ал эми канча socket болушу мүмкүн же ким телефонго туташа алары тууралуу эмес. Угуучу socket'и бар SSH демону кадимки порту бар кадимки колдонмо, ал эми туннель анын трафиги жүрө ала турган жолдордун бири.

Бир VPN эрежеси чындыгында эмнени чектейт

VpnService бир уялуу ресурс. Колдонмо туннель орноткондо ал түзмөктүн VPN'ине айланат, ал эми туннель орнотууга аракет кылган экинчи колдонмо биринчиси жок болгонго чейин четке кагылат. Бул туннелдин ээлиги жөнүндөгү эреже жана эки VPN кардары эмне үчүн бир убакта иштей албастыгын түшүндүрөт.

Ал угуучу socket'тер жөнүндө эч нерсе айтпайт. SSH сервери VpnService'ди чакырбайт, пакеттерди кармабайт жана ошол уя үчүн атаандашпайт. Ал портту байлап, туташууларды кабыл алат, бул VPN такыр орнотулбаганда да жасай турган иши. Ошондуктан уламыш туннель берүүчүлөргө коюлган чектөөнү тармактык туташууларга коюлган чектөө менен аралаштырат, ал эми экөөнүн ортосунда эч кандай байланыш жок.

Угуучу — бута, туннелдин бөлүгү эмес

Туннель пайда болгондо, телефондун анда дареги бар, ал эми өнөктөш түзмөктүн ошол дарекке маршруту бар. Бир нерсе жооп береби, аны угуучу чечет. loopback'ке байланган демон телефондун өзүнөн гана жеткиликтүү; эски туннель дарегине байланган демон кайра туташкандан кийин байланышын сакташы мүмкүн, бирок ал байланган дарек өзгөргөн.

Байлоо эрежелери — кадимки SSH конфигурациясы: угуу дареги жана порту, жана ким аутентификациядан өтө алат. Android'де бул жөндөөлөр колдонмонун өз конфигурациясында турат, ал эми колдонмо процессинин ээсине артыкчылыктуу портторду колдонууга уруксат берилбеши мүмкүн, ошондуктан 22 портун root катары байлоонун десктоп адаттыгы өзгөрүүсүз көчпөйт.

ListenAddress 10.90.0.4
Port 2222
AllowUsers alice

Андан кийин жолдун өзүнө уруксат бар. Чыгуучу веб-трафикти кубаныч менен ташыган керектөөчү VPN өз кардарларына кирүүчү туташууларга такыр уруксат бербеши мүмкүн; көпчүлүгү бербейт, анткени бул бир кардарды экинчисине ачып коёт. Эгер өнөктөш телефондун туннель дарегине эч жерден жете албаса, маселе кызматтын саясатында, телефондо эмес.

Жооп жолу адатта сынган жер

Өнөктөш телефондун туннель дарегине жетип, SYN келди деп коёлу. Эми жооп ошол эле жол менен чыгышы керек, жана бул телефондун ичиндеги маршруттоо чечими. Эгер жооп демейки тармак болгондуктан Wi-Fi аркылуу чыкса, өнөктөш эч качан бүтпөгөн туташууну көрөт, бул так файрволго окшош.

Android муну десктоптон татаал кылат, анткени демейки тармак процесс боюнча тандалат жана VPN колдонмосунун саясаты аны өзгөртө алат. VPN кардары уруксат берилген колдонмолордун тизмесин гана маршруттай алат, ошондуктан ошол тизмеден тышкаркы сервер колдонмосу жооптору үчүн физикалык тармакты колдонууну улантат, ал эми өнөктөш аларды туннель аркылуу күтөт.

Колдонмо өз socket'терин белгилүү бир тармакка да байлай алат, бул демейкини алмаштырат. Кызмат бир даректен жеткиликтүү, экинчисинен эмес деген отчётту окуганыңызда, адатта ушундай механизм турат.

VPN'ди айланып өтүү кирүүчү кызматты оңдобойт

Популярдуу чечим, SSH колдонмосун VPN'ден чыгаруу аркылуу анын трафиги мындан ары багытталбайт, каршы маселенин оңдоосу. Бул чыгуучу SSH кардарынын транспорту туннелден улам тынымсыз бузулганда жардам берет. Хостингдеги сервер үчүн ал жоопторду өнөктөш колдонуп жаткан туннелден сыртка чыгарса болот, бул жарым-жартылай ишке ашпоону толук ишке ашпоого айландырат.

Ушундай эле маршрутизатордо коомдук порт ачууга тиешелүү. Эгер талап бир ыйгарым укуктуу түзмөктүн VPN аркылуу телефонго жетиши болсо, SSH'ди интернетке чыгаруу башка коркунуч модели, оңдоо эмес.

Алгач кызматтын дарегин чечиңиз: телефондун LAN дареги, анын туннель дареги же атайын багытталган акыркы чекит. Ар биринин өзүнүн жеткиликтүүлүк жана ачыктык келишими бар, аларды аралаштыруу кичинекей жетүү маселесин туруктуу тешикке айландырат.

Бир убакта бир багытты диагностикалаңыз

Конфигурацияны өзгөртүүдөн мурун төрт фактыны жазыңыз: өнөктөш туташкан дарек, телефондогу угуучунун абалы, аны ээлеген колдонмо жана колдонуучу контексти, жана ар бир багытта байкалган жол. VPN SSH'ди ажыратат деген отчётто алардын эч бири жок жана ал кардар транспортунун маселесин жеткиликсиз серверден ажырата албайт.

adb shell ip -br addr
adb shell ip route get 10.90.0.9
nc -vz 10.90.0.4 2222

Порт текшерүүсүн өнөктөштөн иштетиңиз, телефондон эмес, жана SSH кардарынын толук чыгарылышын окуп, ал TCP кол алышуудан мурун же кийин ишке ашпайбы аны көрүңүз. Эч качан туташпаган socket жана четке кагылган кирүү — ар башка этаптар, жооптуулар да ар башка.

Жөндөө учурунда хост ачкычын текшерүүнү жана аккаунт чектөөлөрүн бузбай сактаңыз. Угуучуну жана уруксат берилген колдонуучуларды чектөө — жеткиликтүү серверди кабыл аларлык кылган нерсе. Туташуу иштеши үчүн аларды бошотуу бир маселени андан жаманы менен алмаштырат. OpenSSH серверинин шилтемеси угуу жана жетүү көзөмөлдөрүн камтыйт, эгер сиздин Android ишке ашырууңуз ошол эле конфигурация аттарын аткарса.

Тектеш макалалар