Переадресация портов на Android 2.3.6 wifi-tether с помощью приложения Port Forwarder

У меня возникают проблемы с переадресацией портов из-за пределов моей сети при подключении к телефону. Я плохо разбираюсь в маршрутизаторах и сетях в целом, поэтому, пожалуйста, потерпите меня.

Мое Android-устройство напрямую подключено к Интернету. Чтобы обеспечить доступ к моему компьютеру из внешнего мира через устройство Android, в настоящее время я использую бесплатное приложение под названием Port Forwarder , и мой телефон имеет root-права, поэтому у меня есть необходимая авторизация. Порт, по которому я обрабатываю соединения на сервере, — 80. Доступ к IP-адресу сервера (внутри сети) с помощью <local_ip.addr.ess.here>:80я могу получить к нему доступ, так что это работает.

Проблема в том, что когда я пытаюсь получить к нему доступ из-за пределов сети, приложение говорит мне установить источник на 80 и пункт назначения, каким бы он ни был (их пример: 8080); конечно, я установил его на 80, так как это то, что слушает сервер. Поэтому я пытаюсь получить доступ к серверу извне <phone.public_ip.adr.ess>:80, но это не работает.

Как вы заметили, я понятия не имею, что делаю, и найти руководства было сложно даже для стандартных маршрутизаторов. Кто-нибудь успешно использовал это приложение и, возможно, мог бы мне помочь? Я, вероятно, пропустил важную информацию из-за невежества, если это так, дайте мне знать, и я обновлю вопрос.

О каком «общественном адресе» мы здесь говорим? Если это адрес WiFi, назначенный вашим маршрутизатором (обычно что-то вроде 192.168.*.*, но иногда также 172.*.*.*или 10.*.*.*, см. Википедию ), он виден только внутри вашей локальной сети и не может быть доступен напрямую из «внешнего мира». Здесь нужны настройки переадресации портов в вашем маршрутизаторе , и их лучше обсудить на ServerFault .
Нет, это адрес из гугления «какой у меня IP» (если вы его не использовали, Google сам дает IP-адрес, который должен быть надежным). И вы неправильно поняли вопрос, в заголовке написано "wifi-tethering". Это означает, что это не обычный маршрутизатор, а мое устройство Android ЯВЛЯЕТСЯ моим маршрутизатором, что делает этот сайт соответствующим. Вы хоть весь вопрос читали? Я упоминаю приложения, телефон и другие важные вещи, которые вы, кажется, полностью пропустили.
Я даже читал его несколько раз, но должен признать, что был немного сбит с толку. Вы не указали явно, какое устройство действует как «сервер» в этом контексте, поэтому я принял обычное направление (само по себе слово «привязь» не указывает, кто сервер, а кто клиент, извините). Спасибо за разъяснение: это, конечно, делает мой комментарий к ServerFault устаревшим. // Ваш порт вперед с 80 на 80 мне кажется правильным. Я бы посоветовал просмотреть журналы Android (например adb logcat, ) при попытке доступа извне, чтобы увидеть, достигает ли он хотя бы вашего устройства и, возможно, регистрирует некоторые подсказки.
Не беспокойтесь, я немного проясню вопрос. Я посмотрю, как посмотреть лог.
Спасибо! Я только что отредактировал еще немного, так что теперь все должно быть совершенно ясно (надеюсь; по крайней мере, никто больше не попадет в ту же ловушку, что и я). Не стесняйтесь корректировать, если вам не нравится мое редактирование. // Мысль о том, что ваш провайдер может не разрешить это. Чтобы проверить, настройте какой-нибудь сервер (например, простой FTP-сервер) на своем Android-устройстве и попробуйте, можно ли получить к нему доступ из «внешнего мира». Если и это не сработает, значит, ваш провайдер блокирует этот трафик. Если это сработает, мы все еще можем исследовать дальше.
Я звонил своему провайдеру, и они сказали, что разрешают. Были заблокированы только некоторые «известные вирусные порты», что бы это ни значило. Значит проблема должна быть в самом телефоне.
Итак, вы пробовали использовать какое-либо серверное программное обеспечение на самом телефоне, как я предложил в своем предыдущем комментарии? Возможно, это просто проблема с используемым вами приложением Port Forwarder. И, как уже говорилось, adb logcatможет дать некоторые подсказки.

Ответы (2)

Я не уверен, какую версию вы используете, вот мой совет. Причина, по которой вы, вероятно, заблокированы, связана с брандмауэром Android и строгой политикой Se-Linux.

Так как у вас есть полный рут-доступ, вы можете получить оболочку с ADB и проверить это. Введите su -, и вы получите root. Я использую TerminalEmulator, но вы можете использовать родной, если он поставляется с ОС.

Если я вас правильно понял, ваш телефон работает как маршрутизатор в режиме модема. Итак, это необходимо для пересылки пакетов:echo 1 > /proc/sys/net/ipv4/ip_forward

Посмотрите, поможет ли это. Скорее всего, вам нужно поиграться с iptables, разрешить порт 80443 на порту модема. Это не полный ответ, но он слишком длинный, чтобы публиковать его в качестве комментария.

Ответ заключается в том, что ваш провайдер блокирует порт 80, однако, если вы переключитесь на порт 443, они не смогут его заблокировать, потому что порт 443 должен иметь разблокированную двустороннюю связь, чтобы https мог отправлять и получать ответы. Таким образом, переход с http на https://, скорее всего, решит вашу проблему.