Проследување порти на Android hotspot: три влезни точки
Телефонот, патеката кај операторот и излезот од VPN откриваат различни граници. Утврдете која машина го поседува сокетот за слушање пред да отворите која било порта.
Вклучивте hotspot, се поврзавте на VPN, отворивте порта во апликацијата, а другиот уред сè уште не може да се поврзе. Делот што недостига речиси никогаш не е самата порта. Прашањето е која машина го поседува сокетот за слушање и која адреса треба да ја достигне другиот уред. Ова го разгледувам од телефонот кон надвор, бидејќи екранот на кој сте ви кажува која од трите влезни точки ја тестирате.
Започнете таму каде што услугата навистина работи
Отворете ја апликацијата што треба да го прифати поврзувањето и прочитајте ја нејзината статусна страница. Ако пишува дека слуша, забележете ја адресата на која е врзана, бидејќи тој еден детаљ одлучува за повеќето случаи подолу. Апликација врзана на 127.0.0.1 е достапна само од самиот телефон, и ниту еден hotspot клиент, мапирање кај операторот или излез од VPN нема да го промени тоа.
Потоа потврдете кој уред ја извршува услугата. Тоа е или телефонот, при што сокетот и припаѓа на таа апликација, или преносен сметач зад hotspot, при што слушателот и неговиот огнен ѕид и припаѓаат на сметачот, а телефонот само препраќа пакети. Тоа се различни решенија со различни сопственици, а нивното мешање е причината зошто порта отворена на едно место не прави ништо на другото.
На дебагирачки градби, adb shell може да ги наброи сокетите преку /proc/net/tcp, но за повеќето луѓе чесниот извор е статусот на самата апликација. Тоа исто така ја избегнува замката да тестирате сокет што апликацијата го отворила на адреса што не сте ја очекувале.
Прва влезна точка: друг уред на hotspot
Ова е локалниот случај и најлесно се изведува правилно. Другиот уред го достигнува телефонот на адресата што ја гледа како свој портал, на портата на која апликацијата слуша, и ништо надвор од hotspot не мора да биде вклучено. Мапирање кај операторот не е потребно и ниту една функција на провајдерот не мора да постои, бидејќи сообраќајот никогаш не го напушта локалниот сегмент.
Две работи го расипуваат тоа. Апликацијата е врзана на loopback, или клиентската политика на телефонот не дозволува локално поврзување. Тестирајте со сопствениот протокол на апликацијата наместо со голо TCP поврзување ако апликацијата автентицира, бидејќи слушател што прифаќа и потоа одбива од далечина изгледа исто како затворена порта.
Ако услугата наместо тоа работи на преносен сметач поврзан со телефонот, hotspot адресата на телефонот воопшто не е одредиште. Потребна ви е адресата на сметачот на hotspot интерфејсот и слушател на сметачот, а телефонот веќе не е сопственик на ништо освен на препраќањето.
Втора влезна точка: патеката кај операторот
Достигнувањето на телефонот од мобилната мрежа е друг проблем и најчесто едноставно не работи за IPv4. Операторите ги ставаат телефоните зад споделено преведување, поради што RFC 6598 одвоил споделен опсег на адреси токму за таков распоред. Небараната влезна врска нема мапирање низ кое да пристигне, и никаква локална конфигурација не создава такво, бидејќи преведувачот не е вашиот уред.
Root пристапот тоа не го менува. Тој ви дава контрола над стекот на телефонот, не над преведувачот на операторот, а рецептите што ветуваат спротивно обично претпоставуваат јавна адреса што операторот никогаш не ја доделил. Онаму каде операторот нуди јавен IPv6 префикс, влезна патека може да постои, но слушателот и огнениот ѕид на телефонот сè уште бараат намерно одобрување пред нешто да одговори.
Трета влезна точка: излезот од VPN
Адресата што ја пријавува една веб-страница додека тунелот е активен е адресата на излезот за покриениот излезен сообраќај. Тоа не е исто како адреса што прифаќа влезни врски во ваше име. Нејзиното користење за влезен сообраќај бара функција што провајдерот навистина ја нуди, како препратена порта или влезно мапирање поврзано со вашиот профил, плус употреблива патека од излезот до клиентот.
Локално правило за дозволување не може да создаде такво мапирање. Она што може е да смени по која патека одат одговорите на апликацијата, а тоа е важно кога апликацијата е исклучена од тунелот: барањето и одговорот можат да завршат во различни мрежни контексти, и врската паѓа на начин што изгледа како проблем со огнениот ѕид.
Тестирајте една патека од почеток до крај, потоа именувајте го сопственикот
Запишете ја торката пред тестирање: предвиден извор, одредишна адреса, транспорт, порта и машината што го поседува сокетот за слушање. Ако некој елемент е претпоставка, тестот нема да ви каже ништо корисно, и на крајот ќе менувате втор слој за да го објасните првиот.
Потоа тестирајте ја таа една одобрена патека со недопрена автентикација на апликацијата. Избегнувајте да објавувате широк слушател или да исклучувате неповрзани контроли само за да одговори двосмислена проверка на јавна адреса, бидејќи двете промени го надживуваат тестот и ниту едната не докажува дека решението работи.
Потсистемот за tethering на Android го препраќа надолу насочениот сообраќај по своја патека, одделно од вообичаеното фаќање на VPN од апликациите, така што работечки прелистувач на преносен сметач поврзан со телефонот не кажува ништо за влезниот пристап до услуга на телефонот. Пред да го наречете работечко:
- Сокетот за слушање е на адреса што предвидениот партнер може да ја достигне, а не на loopback.
- Партнерот ја користи адресата што и припаѓа на таа влезна точка, а не адресата на излезот од статусна страница.
- Секое мапирање на страната на операторот или провајдерот е поддржана функција, а не правило што сте го додале локално.
- Барањето и одговорот патуваат низ истиот мрежен контекст, и автентикацијата на апликацијата сè уште поминува.