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

Нэг VPN-ийн дүрэм юуг үнэхээр хязгаарладаг вэ

VpnService нь нэг байртай нөөц юм. Апп хонгил тогтооход тэр төхөөрөмжийн VPN болдог бөгөөд хонгил тогтоохыг оролдсон хоёр дахь апп нь эхнийх нь арилах хүртэл татгалзагдана. Энэ нь хонгилын эзэмшлийн тухай дүрэм бөгөөд хоёр VPN клиент яагаад зэрэг ажиллаж чадахгүйг тайлбарладаг.

Энэ нь сонсогч socket-уудын тухай юу ч хэлэхгүй. SSH сервер VpnService-ийг дуудахгүй, пакетуудыг саатуулахгүй, тэр байрын төлөө өрсөлдөхгүй. Энэ нь порт холбож, холболт хүлээн авдаг нь VPN огт суулгаагүй ч хийх байсан зүйл юм. Тиймээс домог нь хонгилын нийлүүлэгчдэд тавьсан хязгаарыг сүлжээний холболтод тавьсан хязгаартай андуурч, хоёрын хооронд ямар ч холбоо байхгүй.

Сонсогч бол очих газар, хонгилын хэсэг биш

Хонгил үүссэн үед утсанд түүн дээр хаяг байх ба хамтрагч төхөөрөмжид тэр хаяг руу чиглэсэн зам байна. Ямар нэгэн зүйл хариулах эсэхийг сонсогч шийднэ. loopback-д холбогдсон демон утаснаас л хүрч болно; хуучин хонгилын хаягт холбогдсон демон дахин холбогдсоны дараа холболтоо хадгалж болох ч холбогдсон хаяг нь өөрчлөгдсөн байна.

Холбох дүрмүүд нь энгийн SSH тохиргоо: сонсох хаяг, порт, хэн баталгаажуулж болох. Android дээр тэдгээр тохиргоо аппын өөрийн тохиргоонд байдаг бөгөөд аппын процессын эзэнд онцгой порт ашиглах зөвшөөрөл байхгүй байж болох тул root-оор 22 портыг холбох десктопын дадал өөрчлөлтгүй шилждэггүй.

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 хэрэгжүүлэлт ижил тохиргооны нэрсийг дагаж байвал сонсголт, хандалтын хяналтыг хамарна.

Холбоотой нийтлэлүүд