Как я заставляю netcat принимать соединения снаружи LAN?

Я использую 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 для установки адреса шлюза я получаю то же поведение. Я использую этот параметр командной строки правильно? Понимание относительно того, что я делаю неправильно?

29
задан Chris 31 March 2010 в 11:43
поделиться

2 ответа

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

Этот ответ пришел из: a serverfault question, где я должен был задать этот вопрос в первую очередь. Приношу свои извинения за это.

15
ответ дан 28 November 2019 в 01:32
поделиться

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

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

netcat -vv -l 0.0.0.0 6666

28
ответ дан 28 November 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: