У меня проблемы с переадресацией портов из-за пределов моей сети при подключении к телефону. У меня плохое понимание роутеров и сетей в целом, поэтому, пожалуйста, потерпите меня.
Мое устройство Android - это устройство, напрямую подключенное к Интернету. Чтобы разрешить доступ к моему компьютеру из внешнего мира через устройство Android, в настоящее время я использую бесплатное приложение под названием Port Forwarder, и мой телефон рутирован, поэтому у меня есть необходимые разрешения. Порт, на котором я обрабатываю соединения на сервере, - 80. Получив <local_ip.addr.ess.here>:80
доступ к IP-адресу сервера (внутри сети), я могу получить к нему доступ, так что это работает.
Проблема в том, что, когда я пытаюсь получить доступ к нему из-за пределов сети, приложение говорит мне, чтобы установить источник на 80, и назначение как бы то ни было (их пример - 8080); конечно я установил его на 80, так как это то, что сервер слушает. Поэтому я пытаюсь получить доступ к серверу извне, <phone.public_ip.adr.ess>:80
но это не работает.
Как вы заметили, я понятия не имею, что я делаю, и найти руководства было сложно даже для стандартных маршрутизаторов. Кто-нибудь успешно использовал это приложение и, возможно, может мне помочь? Я вероятно пропустил важную информацию из-за незнания, если так, дайте мне знать, и я обновлю вопрос.
источник
192.168.*.*
, но иногда также172.*.*.*
или10.*.*.*
, см. Википедия ), он виден только внутри вашей локальной сети , и к нему нельзя получить доступ напрямую из «внешнего мира». Настройки переадресации портов в вашем маршрутизаторе необходимы здесь, и их лучше обсудить на ServerFault .adb logcat
), пытаясь получить доступ извне, чтобы узнать, достигает ли он хотя бы вашего устройства и, возможно, регистрирует некоторые подсказки.Ответы:
Я не уверен, какую версию вы используете, вот мой совет. Причина, по которой вы, вероятно, заблокированы, связана с брандмауэром Android и строгой политикой Se-Linux.
Поскольку у вас есть полный root-доступ, вы можете получить оболочку с помощью ADB и проверить это. Типа,
su -
и он получит вас в корень. Я использую TerminalEmulator, но вы можете использовать нативный, если он поставляется с ОС.Если я вас правильно понял, ваш телефон работает как маршрутизатор в режиме модема. Так что это необходимо для пересылки пакетов:
echo 1 > /proc/sys/net/ipv4/ip_forward
Посмотрите, поможет ли это. Скорее всего, вам нужно будет поиграть с iptables, разрешив порт 80,443 на порт привязки. Это не полный ответ, но он слишком длинный, чтобы оставлять комментарии.
источник
Ответ заключается в том, что ваш провайдер блокирует порт 80, однако, если вы переключитесь на порт 443, они не смогут его заблокировать, поскольку для порта 443 необходимо разблокировать двустороннюю связь, чтобы https отправлял и получал ответы. Таким образом, переход с http на https: // скорее всего должен решить вашу проблему.
источник