Android viena VPN noteikums nebloķē mitinātu SSH serveri
Viena VPN ierobežojums attiecas uz VPN pakalpojumiem, nevis socketiem. SSH serveris tālrunī neizdodas klausītāja, partnera piekļuves vai atbildes ceļa dēļ.
Šis uzskats ir pietiekami izplatīts, lai to uzskatītu par faktu: Android pieļauj tikai vienu VPN, tāpēc SSH serveris, kas darbojas tālrunī, nevar strādāt pa šo tuneli. Pirmā puse ir patiesa, un secinājums no tā neizriet. Platformas ierobežojums attiecas uz to, cik lietotņu var aizņemt VPN pakalpojuma vietu, nevis uz to, cik socketu var pastāvēt vai kam ir atļauts pieslēgties tālrunim. SSH dēmons ar klausošu socketu ir parasta lietotne ar parastu portu, un tunelis ir viens no ceļiem, pa kuriem var iet tās datplūsma.
Ko viena VPN noteikums patiešām ierobežo
VpnService ir vienas vietas resurss. Kad lietotne izveido tuneli, tā kļūst par ierīces VPN, un otra lietotne, kas mēģina izveidot tuneli, tiek noraidīta, līdz pirmā pazūd. Tas ir noteikums par tuneļa piederību, un tas izskaidro, kāpēc divi VPN klienti nevar darboties vienlaikus.
Tas neko nepasaka par klausošiem socketiem. SSH serveris neizsauc VpnService, nepārtver paketes un nekonkurē par šo vietu. Tas piesaista portu un pieņem savienojumus, kas ir tas pats, ko tas darītu bez instalēta VPN. Tāpēc mīts sajauc ierobežojumu tuneļu nodrošinātājiem ar ierobežojumu tīkla savienojumiem, un šiem diviem nav nekādas saistības.
Klausītājs ir galamērķis, nevis tuneļa daļa
Kad tunelis pastāv, tālrunim uz tā ir adrese, un partnera ierīcei ir maršruts uz šo adresi. Vai kaut kas atbild, izlemj klausītājs. Dēmons, kas piesaistīts loopback, ir sasniedzams tikai no paša tālruņa; dēmons, kas piesaistīts vecajai tuneļa adresei, pēc atkārtotas pieslēgšanās var saglabāt savu piesaisti, lai gan adrese, kurai tas bija piesaistīts, ir mainījusies.
Piesaistes noteikumi ir parasta SSH konfigurācija: klausīšanās adrese un ports, un tas, kurš drīkst autentificēties. Operētājsistēmā Android šie iestatījumi atrodas pašas lietotnes konfigurācijā, un lietotnes procesa īpašniekam var nebūt atļauts izmantot priviliģētos portus, tāpēc darbvirsmas ieradums piesaistīt portu 22 kā root netiek pārnests nemainīts.
ListenAddress 10.90.0.4
Port 2222
AllowUsers aliceTālāk ir atļauja pašā ceļā. Patērētāju VPN, kas labprāt pārvadā izejošo tīmekļa datplūsmu, nemaz nav jāatļauj ienākošie savienojumi uz tā klientiem; daudzi to neļauj, jo tas atklātu vienu klientu otram. Ja partneris nevar no nekurienes sasniegt tālruņa tuneļa adresi, problēma ir pakalpojuma politikā, nevis tālrunī.
Atbildes ceļš ir vieta, kur tas parasti lūzt
Pieņemsim, ka partneris sasniedz tālruņa tuneļa adresi un ierodas SYN. Tagad atbildei jāiziet pa to pašu ceļu, un tas ir maršrutēšanas lēmums tālruņa iekšienē. Ja atbilde iziet caur Wi-Fi, jo tas ir noklusējuma tīkls, partneris redz savienojumu, kas nekad nebeidzas, un tas izskatās tieši kā ugunsmūris.
Android to padara sarežģītāku nekā darbvirsma, jo noklusējuma tīkls tiek izvēlēts katram procesam atsevišķi un to var mainīt VPN lietotnes politika. VPN klients var maršrutēt tikai atļauto lietotņu sarakstu, tāpēc servera lietotne, kas atrodas ārpus šī saraksta, turpina izmantot fizisko tīklu savām atbildēm, kamēr partneris tās gaida pa tuneli.
Lietotne var arī piesaistīt savus socketus konkrētam tīklam, un tas ignorē noklusējumu. Kad lasāt ziņojumu, ka pakalpojums ir sasniedzams no vienas adreses un nav no citas, parasti tas ir mehānisms, kas tam ir pamatā.
VPN apiešana nesalabo ienākošo pakalpojumu
Populārais risinājums, izslēgt SSH lietotni no VPN, lai tās datplūsma vairs netiktu novirzīta, ir pretējās problēmas labojums. Tas palīdz, kad izejošā SSH klienta transportēšana tuneļa dēļ pastāvīgi lūzt. Mitinātam serverim tas var iznest atbildes ārpus tuneļa, ko izmanto partneris, un tas daļēju kļūmi pārvērš pilnīgā.
Tas pats attiecas uz publiska porta atvēršanu maršrutētājā. Ja prasība ir, lai viena autorizēta ierīce sasniegtu tālruni pa VPN, SSH atklāšana internetam ir cits draudu modelis, nevis labojums.
Vispirms izlemiet pakalpojuma adresi: tālruņa LAN adresi, tā tuneļa adresi vai apzināti pārsūtītu galapunktu. Katram ir savs sasniedzamības un atklātības līgums, un to sajaukšana ir veids, kā neliela piekļuves problēma kļūst par pastāvīgu caurumu.
Diagnosticējiet vienu virzienu vienlaikus
Pirms konfigurācijas maiņas pierakstiet četrus faktus: adresi, uz kuru partneris pieslēdzas, klausītāja stāvokli tālrunī, lietotnes un lietotāja kontekstu, kas to pārvalda, un katrā virzienā novēroto ceļu. Ziņojumā, ka VPN atvieno SSH, nav neviena no tiem, un tas nevar atšķirt klienta transportēšanas problēmu no nesasniedzama servera.
adb shell ip -br addr
adb shell ip route get 10.90.0.9
nc -vz 10.90.0.4 2222Palaidiet porta pārbaudi no partnera, nevis no tālruņa, un lasiet SSH klienta detalizēto izvadi, lai redzētu, vai tas neizdodas pirms TCP sakratīšanās vai pēc tās. Socket, kas nekad nepievienojas, un noraidīta pieteikšanās ir dažādi posmi ar dažādiem atbildīgajiem.
Atkļūdošanas laikā saglabājiet neskartu resursdatora atslēgas pārbaudi un konta ierobežojumus. Tieši klausītāja un atļauto lietotāju ierobežošana padara sasniedzamu serveri pieņemamu; to atslābināšana, lai savienojums strādātu, apmaina vienu problēmu pret sliktāku. OpenSSH servera uzziņa aptver klausīšanās un piekļuves kontroles, ja jūsu Android ieviešana ievēro tos pašus konfigurācijas nosaukumus.