Аўтаматызацыя L2TP на Android: скрыпт можа запытаць, але не стварыць
Маршрут у shell не ўздымае L2TP/IPsec на Android. IPsec, L2TP, PPP і палітыка платформы валодаюць кожны сваёй часткай, таму выбірайце тое, што можа гэта кантраляваць.
Міф у тым, што L2TP на Android — яшчэ адна рэч, якую скрыпт можа запусціць: дадаць маршрут, выклікаць старую службу, гатова. Гэта немагчыма, бо чатыры розныя ўзроўні павінны дамовіцца, перш чым тунель панясе пакет. Узровень IPsec абараняе шлях, L2TP нясе сесію, PPP дамаўляецца аб злучэнні, а Android павінен зарэгістраваць вынік як VPN, вакол якога можна маршрутызаваць. Я бачыў дзве спробы са скапіяванымі камандамі, і абодва разы маршрут існаваў, але нічога не было зашыфравана.
Што насамрэч дае змена маршруту
Даданне маршруту вырашае, куды пакет пойдзе далей. Яно не дамаўляецца аб асацыяцыі бяспекі, не адкрывае сесію L2TP і не выконвае абмен PPP, які дае адрас, партнёра і налады DNS. На тэлефоне бачны вынік — трафік, які ідзе няправільным шляхам, або ідзе і гіне, без якога-небудзь стану тунеля.
Тое ж тычыцца выкліку службы, скапіяванага з больш старога выпуску. Унутраная VPN-сантэхніка Android не з’яўляецца апублікаваным API аўтаматызацыі, і нумараваная транзакцыя з іншай версіі можа трапіць на іншую аперацыю або патрабаваць прывілеяў, якіх у скрыпта няма. Аўтаматызацыя, якая нясе пароль, ніколі не павінна залежаць ад угаданых унутраных аргументаў, бо адмова — гэта або ціхае бяздзеянне, або паўствораны профіль, які ніхто не прыбірае.
Чатыры ўласнікі, і скрыпт не адзін з іх
Вазьміце іх па парадку. IPsec устанаўлівае і падтрымлівае абаронены шлях і аўтэнтыфікуе партнёраў. L2TP нясе па ім сесію, і менавіта праз гэтае ўкладанне стандарт разглядае іх як асобныя механізмы, а не як адзін пратакол. Унутры PPP дамаўляецца аб параметрах злучэння, якія выкарыстае кліент. Затым Android валодае бокам платформы: зарэгістраваны інтэрфейс VPN, ахоп па асобных праграмах, стан заўсёднага ўключэння і жыццёвы цыкл, які вырашае, што будзе, калі праграму заб’юць.
Скрыпт бачыць толькі апошні з гэтых узроўняў і звычайна ўскосна. Ён можа папрасіць кліент падключыцца, калі той прапануе дакументаванае кіраванне, і пасля назіраць за станам інтэрфейса. Ён не можа замяніць тры ўзроўні пад ім і не можа прымусіць платформу лічыць незарэгістраваны інтэрфейс VPN.
Чаму дэман таксама не кароткі шлях
Запуск прывілеяванага дэмана Linux на прыладзе выглядае як недахопная частка, і часта ён сапраўды ўздымае тунель. Чаго ён не робіць — не рэгіструе гэты тунель у Android. Інтэрфейс існуе ў ядры, але выбар VPN платформы, маршрутызацыя па праграмах, палітыка заўсёднага ўключэння і жыццёвы цыкл пра яго не ведаюць, а ўласныя змены маршрутаў і DNS дэмана канкуруюць з сеткавым мэнэджарам за тыя ж табліцы.
Вынік — злучэнне, якое працуе для трафіку дэмана і загадкава не працуе для патрэбнай вам праграмы, або трымаецца, пакуль сістэма не перагледзіць свае сеткі. Ні адзін вынік не з’яўляецца памылкай платформы; гэта мяжа паміж валоданнем сокетам і валоданнем сродкам VPN.
Як выглядаюць падтрыманыя шляхі
Калі арганізацыя можа перайсці на профіль, які прадстаўляе сам Android, шлях платформы — сумленны. Пачынаючы з API 30, VpnManager падтрымлівае прадастаўленне і кіраванне профілямі VPN платформы з праграм, з працэсам аўтарызацыі, прывязаным да праграмы, якая выклікае. Гэта не канвертар L2TP: мадэль профілю, якую ён прадастаўляе для IKEv2, не пераўтварае існуючую канфігурацыю L2TP, а змена пратакола — гэта міграцыя, а не перайменаванне. Ідэнтычнасці, маршруты, прыватны DNS і правы доступу трэба пераносіць свядома.
Калі служба павінна застацца на L2TP/IPsec, падтрыманае спалучэнне — гэта кліент і выпуск АС, якія аператар сапраўды дакументуе, і яго кантракт аўтаматызацыі, калі ён ёсць. Калі дакументаванага кіравання без удзелу чалавека няма, правільны адказ — падтрыманае ручное злучэнне, а не крохкі прывілеяваны скрыпт, які выпадкова працуе на адной зборцы.
Што робіць правільная аўтаматызацыя
Маючы дакументаванае кіраванне, аўтаматызацыя мае малую і абароненую задачу: запытаць названае злучэнне, дачакацца гатоўнасці, спыніцца пры памылцы аўтэнтыфікацыі або наладжвання, выканаць патрэбную працу і пакінуць прыбіранне кампаненту, які валодае злучэннем. Уліковыя даныя застаюцца ў кліента, які ўмее іх захоўваць і змяняць.
Запішыце, які кампанент валодае кожным узроўнем, перш чым пісаць першы радок, і праверце вынік супраць гэтага:
- IPsec і PPP апрацоўвае кліент, а не маршруты скрыпта.
- Злучэнне з’яўляецца ў стане VPN платформы, таму ахоп па праграмах і заўсёднае ўключэнне на яго дзейнічаюць.
- Ні адзін унутраны выклік службы, нумар транзакцыі або ўгаданы аргумент не нясе ўліковых даных.
- Збой на любым кроку не пакідае паўзарэгістраванага профілю.