ncat работает только в определенных сценариях

Я пытался использовать ncat ("значительно улучшенное переопределение netcat"), чтобы пообщаться с другом (и, в конечном итоге, хочу отправить большой файл, но я знаю, что смогу это сделать, как только я включу чат в работу).

У нас обоих есть винда.

На моем конце я напечатал:

ncat -l 3333

На его конце у меня был его тип:

ncat [my public IP] 3333

Ничего не случилось на моем конце, в то время как его завершили с "Ncat: ." и вернулся к приглашению.

Я не мог понять, что делать, чтобы это исправить, поэтому я решил, пока он занят, я опробую это на двух моих ноутбуках (один с Windows, другой с Linux, не уверен, что это должно иметь значение),

Я нашел те же результаты ("Ncat: .", Затем снова к запросу), только когда я выдал

ncat -l 3333

из Linux и

ncat [my public IP] 3333

из Windows.

Единственный сценарий, в котором чат / передача файлов работал, был, когда я слушал из Windows и сделал ncat [my public IP] 3333 из Linux.

Есть идеи, почему это происходит, и что я могу сделать, чтобы это исправить?

2 ответа

Решение

Убедитесь, что на этом пути нет брандмауэров (чтобы проверить Wireshark, убедитесь, что пакет TCP SYN поступил в прослушивающий экземпляр) и проверьте, правильно ли настроена переадресация портов, если вы подключаетесь к Интернету через брандмауэр или домашний маршрутизатор. Если вы не получаете пакет TCP SYN, возвращайтесь к исходному компьютеру, пока не увидите, где он останавливается. Если вы видите входящий пакет TCP SYN, за которым следует исходящий пакет TCP SYN/ACK, убедитесь, что пакет прибывает на исходный узел и отвечает TCP ACK.

Исходя из того, что он работает при прослушивании из Windows и ncatting из Linux, я бы проверил настройки персонального брандмауэра для брандмауэров как в Linux, так и в Windows и выяснил, настроены ли они по-разному. Убедитесь, что вы разрешаете входящий трафик на порт, который вы слушаете (в данном случае 3333).

Одно отличие, которое существует в реальном Netcat между Linux и Windows, заключается в том, что в Windows есть флаг -L, который вызывает постоянное прослушивание после закрытия. Возможно, это не имеет никакого отношения к этой проблеме, но я подумал, что стоит упомянуть.

Итак, в последней части вашего поста говорилось, что он работает только локально, когда вы слушаете из Windows и запускаете клиент из Linux.

Скорее всего, ваш брандмауэр Linux (скорее всего, ufw - вы используете Ubuntu или другой вариант?) Настроен на разрешение исходящих и запрещение входящих, если это не установлено вашими исходящими соединениями. Каким-то образом ваш брандмауэр Windows настолько счастлив, что вы слушаете с помощью ncat, что он пропускает входящий трафик.

В Linux запускаются: sudo systemctl status ufwЕсли ufw работает, тогда запустите: sudo ufw allow 3333Затем попробуйте прослушать Linux с порта 3333 и посмотреть, работает ли он. Не забудьте запретить порт 3333, когда закончите с ncat - тот же синтаксис, но используйте deny вместо allow.

В первом случае, когда ваш друг не смог подключиться к вашей машине, поскольку ваша машина Windows может успешно прослушивать и инициировать через локальную сеть, почти гарантируется, что порт 3333 на вашей машине не будет перенаправлен на ваш маршрутизатор. Когда твой друг пытается ncatПо вашему IP он запрашивает сервис у вашего роутера, а не с вашего компьютера.

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

PS. Если вы поработаете с вашим другом по Интернету, я бы предложил отключить его после подтверждения концепции. Если вы хотите продолжать выставлять порт вашего компьютера во всемирной паутине для чата ncat, тогда вы должны использовать ssl с ncat и следить за активностью порта.

Другие вопросы по тегам