Android VPN сервер: root утасыг хүртээмжтэй болгохгүй
Утас VPN клиентүүдэд үйлчлэх эсэхийг гурван тусдаа асуудал шийднэ: орж ирэх зам, эрх мэдлийн загвар, дамжуулалт. root зөвхөн дундынх нь л хүрнэ.
root нь процесс ямар сүлжээний үйлдлийг оролдож болохыг өөрчилдөг. Энэ нь утаснд нийтэд хүртээмжтэй хаяг өгөхгүй, операторт орж ирэх зураглалыг нөөцлөхгүй, дахин ачаалсны дараа демоныг амьд байлгахгүй. Хэрэв Android утас VPN сервер болж чадах эсэхийг шийдэж байгаа бол гурван асуултыг тусгаарла: зорьсон клиент сонсогчдод хүрч чадах уу, серверийн хэрэгжүүлэлтэд ямар эрх мэдлийн загвар хэрэгтэй, туннель боссны дараа юу дамжуулах ёстой.
Хэн, хаанаас утаснд хүрэх ёстой
Нэг зөвшөөрөгдсөн LAN дахь клиент ба мобайл өгөгдөл дэх клиент хоёр өөр сүлжээг шалгаж байна. Эхлээд зорьсоныг шийд, учир нь хариултууд бие биедээ шилжихгүй. Wi-Fi дээр хүсээгүй орж ирэх урсгалд ихэвчлэн дээд чиглүүлэгч дээр зураглал, түүнээс цааш ашиглах боломжтой нийтийн зам хэрэгтэй. Үүрэн сүлжээнд операторын түвшний NAT нь орж ирэх IPv4 ихэвчлэн боломжгүй гэсэн үг, утас юу зөвшөөрсөн ч.
Яг тэр сүүлийн цэгт root хүрч чадахгүй. Утасны локал firewall болон операторын NAT нь өөр өөр систем, эхнийхийг өөрчлөх нь хоёр дахьд ямар ч нөлөөгүй. Хувийн интерфэйсийн хаяг, мобайл өгөгдлийн дүрс эсвэл сонсож байгаа socket нь хүртээмжийн баталгаа биш. Хэрэв операторын зам үнэхээр дэлхийн маршрутлагдах IPv6 санал болгож байгаа бол түүнд зориулсан сонсогч, firewall бодлого бас хэрэгтэй; хаягтай байх нь холболт хүлээн авахтай ижил биш.
| Client path | What actually decides reachability |
|---|---|
| Same LAN | The phone's listener and its local firewall |
| Wi-Fi, from the internet | A mapping on the upstream router plus a usable public path beyond it |
| Cellular IPv4 | The carrier's NAT, which the handset does not control |
| Cellular IPv6 | Address, listener and firewall policy together |
Үйлчлэх ба дамжуулах нь хоёр өөр амжилт
Дууссан VPN гар барилт нь туннель байгааг нотолно. Клиент утасны ард байгаа LAN-д хүрч чадна гэдгийг, утас интернетийн гарах гарц болж чадна гэдгийг нотлохгүй. Эдгээр нь дотоод хаягийн төлөвлөгөө, маршрут, буцах зан төлөв, таны үнэхээр хүсч буй ажилд зориулсан нарийн хүрээтэй дамжуулалтын бодлого дээр баригдсан тусдаа тохиргоонууд.
Алдааны хэв маяг урьдчилан таамаглах боломжтой: гар барилт амжилттай болж, клиент холбогдсон гэж харуулж, юу ч ачаалагдахгүй. Клиентийг дибаг хийхээс өмнө хоёр дүрийн алийг нь бүтээж байгаагаа шийд. Утасны сүлжээн дэх төхөөрөмж рүү алсын хандалт ба бүрэн туннелээр интернетэд гарах нь өөр өөр дамжуулалтын дүрэм шаарддаг бөгөөд нэгийг хүсэхдээ хоёуланг нь өгөх нь хүссэн чадварыг нэмэхгүйгээр өртөлтийг өргөжүүлдэг.
Эрх мэдлийн загвар бол сонголт, root эсвэл юу ч биш гэдэг биш
Цөмийн TUN төхөөрөмж ашигладаг уламжлалт OpenVPN демонд тохирох чадвар, төхөөрөмжийн зангилаанд хандах эрх, Android-ийн аюулгүй байдлын бодлогын хамтын ажиллагаа хэрэгтэй. root нь SELinux-аас бүх нийтийн чөлөөлөлт биш; эрх мэдэлтэй процесс платформын бодлогоор хязгаарлагдсан хэвээр. Тиймээс Linux сервер дээр хэвийн ажилладаг бинар утаснд зөвшөөрлийн талаар тодорхой алдаагүйгээр бүтэлгүйтэж болно.
Хэрэглэгчийн орон зайд ажиллах гарцын хэрэгжүүлэлт огт өөр эрх мэдлийн загвартай байж болох тул Android дээрх бүх VPN серверт root хэрэгтэй гэсэн нийтлэг мэдэгдэл хэт өргөн юм. root танд илүү олон үйлдлийг оролдох чадварыг өгдөг, тэдгээр нь зөвшөөрөгдөнө эсвэл үр дүн хүртээмжтэй болно гэсэн баталгаа биш.
Android-ийн өөрийн VPN үйлчилгээний бүртгэл нь бас тусдаа механизм. Энэ нь апп-д тодорхой амьдралын мөчилтэй удирдлагатай клиентийн интерфэйс өгдөг; энэ нь ерөнхий сервер суулгагч биш, терминалаас демон эхлүүлэх нь түүнд байнгын удирдлага, апп тус бүрийн бодлого, өөрийн сэргээх зам өгөхгүй.
Хэрэв гарах цэг хүсэж байгаа бол архитектурыг өөрчил
Зорилго нь одоо байгаа OpenVPN профайлтай нийцэх биш, зөвхөн утасны замаар алсын интернет гарах гарц байвал давхаргын сүлжээний дэмжигдсэн гарах зангилаа илүү тохиромжтой загвар. Tailscale өөрийн бүртгэл, зөвшөөрөл, клиент сонголтын алхмуудтай Android гарах зангилааны үүрэг-ийг баримтжуулдаг.
Энэ солилцоо бодит бөгөөд шууд хэлэх нь зүйтэй: та өөр протокол, өөр итгэлийн загвар, тэр бүртгэл ба зохицуулалтын үйлчилгээнээс хамааралтай байхыг хүлээн авч байна. Энэ нь өөрчлөгдөөгүй OpenVPN клиентийг давхаргын сүлжээнд нэгдэхэд хүргэхгүй бөгөөд нийтийн хаяг дээр OpenVPN сонсогч өгөхгүй.
Байршуулалтад бас юу хэрэгтэй вэ
Аль ч замыг сонгосон, үйл ажиллагааны үндэс нь долоо хоног тэсэх эсэхийг шийднэ. Серверийн нэвтрэх мэдээллийг нууцлаг байлгаж, өөр өөр клиентийн таних мэдээлэл олгож, хэрэгтэй болохоос өмнө хүчингүй болгохыг төлөвлө. Шинэчлэлт хэрхэн ирэх, үйлчилгээг арын дэвсгэрт юу ажиллуулж байх, дахин ачаалах эсвэл сүлжээний өөрчлөлтийн дараа хэрхэн сэргэхийг шийд.
Тохиромжтой мэт харагдах богино замаас зайлсхий: хуучирсан статик бинар, хатуу кодлосон интерфэйсийн нэрс, одоо байгаа firewall бодлогыг устгадаг эхлүүлэх скрипт. Дараа нь үр дүнг зөвхөн тодорхой туршилтаар хүлээн ав: эрх бүхий алсын клиент зорьсон нөөцөд хүрч, хориглосон чиглэлүүд хүртээмжгүй хэвээр байж, дэмжигдсэн амьдралын мөчлөгийн үйл явдлын дараа төхөөрөмж өөрөө буцаж ирнэ. root хандалт нь тэр үр дүнгийн боломжит бүрэлдэхүүн хэсгүүдийн нэг бөгөөд шийдвэрлэх нь ховор.