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 и следить за активностью порта.