Подтвердить что ты не робот

Как заставить netcat принимать подключения из-за пределов локальной сети?

Я использую netcat в качестве бэкэнд для перекодирования данных взад и вперед для программы, которую я создаю. Я протестировал свою программу в локальной сети, и как только это сработало, я подумал, что это будет просто пересылка порта с моего маршрутизатора, чтобы моя программа работала через Интернет. Увы! Это, похоже, не так.

Если я начну прослушивать netcat на порту 6666 с помощью:

nc -vv -l -p 6666,

затем перейдите в 127.0.0.1:6666 в браузере, как и ожидалось, я вижу, что HTTP GET-запрос приходит через netcat (и мой браузер сидит в ожидании). Однако, если я перехожу к my.external.ip.address:6666, ничего не происходит вообще, и на экране браузера "невозможно подключиться к my.external.ip.address:6666".

Я знаю, что порт правильно перенаправлен, поскольку www.canyouseeme.org говорит, что порт 6666 открыт (и когда netcat не слушает, его закрывают).

Если я запускаю netcat с помощью -g my.adslmodem's.local.address, чтобы установить адрес шлюза, я получаю такое же поведение. Я правильно использую эту опцию командной строки? Любое понимание того, что я делаю неправильно?

4b9b3361

Ответ 1

Оказывается, проблем нет. Это появляется только потому, что мой маршрутизатор не позволяет подключать шпильки. То есть, несмотря на то, что я настроен правильно, маршрутизатор не будет устанавливать соединение, когда как источник, так и пункт назначения находятся за NAT. Просто ncat -l -p 6666 работает нормально, если запрос поступает из локальной сети. Чтобы проверить это, я просмотрел my.external.ip.address:6666 со своим мобильным телефоном 3G и, конечно же, HTTP-запрос прошел через:)

Этот ответ пришел из: вопроса о сервере_файла, в котором я должен был задать этот вопрос в первую очередь. Извиняюсь за это.

Ответ 2

Вы должны слушать на общедоступном интерфейсе. В настоящее время вы слушаете локальный хост, к которому никто за пределами вашего компьютера не может подключиться.

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

netcat -vv -l 0.0.0.0 6666

Ответ 3

Чтобы указать адрес прослушивания:

nc -l -s <LISTENING_IP_ADDR> -p <LISTENING_PORT>

Протестировано в Debian Jessie с netcat-traditional-1.10-41