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

Передача сообщения с использованием nc (netcat)

Я пытаюсь отправить широковещательное сообщение с помощью netcat.

У меня есть брандмауэры, открытые и отправляющие регулярное сообщение, как это работает для меня:

  host: nc -l 192.168.1.121 12101
  client: echo "hello" | nc 192.168.1.121 12100

Но я не могу заставить что-то подобное работать.

  host: nc -lu 0.0.0.0 12101
  client: echo "hello" | nc -u 255.255.255.255 12100

Я использую правильные флаги? Обратите внимание: хост находится на Mac и клиент в Linux. Можете ли вы привести мне пример, который работает для трансляции сообщения?

Спасибо!

4b9b3361

Ответ 1

Версия netcat GNU может быть нарушена. (Я все равно не могу работать под 0.7.1.) См. http://sourceforge.net/p/netcat/bugs/8/

Я стал работать на софте. Код ниже передает UDP на порт 24000.

socat - UDP-DATAGRAM:255.255.255.255:24000,broadcast

(В socat-world "-" означает "stdin".)

Ответ 2

Извините, если я ошибаюсь, но вы упомянули, что у вас установлены ваши брандмауэры правильно, поэтому я предполагаю, что хост и клиент не находятся в одной подсети???

Если это так, и этот брандмауэр также действует также как маршрутизатор (или если пакет должен проходить через маршрутизатор), тогда он будет обрабатывать этот пакет, но он не будет перенаправлять его на другие интерфейсы. Если вы хотите, чтобы это произошло, вам нужно отправить направленную трансляцию. Например; для подсети 192.168.1.0/24 направленная передача будет 192.168.1.255, последний IP-адрес в подсети. Затем брандмауэр, предполагая, что у него есть маршрут к 192.168.1.0/24 и что он настроен на переадресацию направленной трансляции, отправит это вещание в пункт назначения или следующий прыжок. Конфигурируя ваше устройство для переадресации направленной передачи... вам нужно будет ссылаться на свою документацию. Для Cisco IOS вы должны ввести под интерфейсом "ip direct-broadcast".

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

Как настроить netcat:

-l 0.0.0.0 12101, говорит netcat прослушивать порт 12101 на всех вышеперечисленных интерфейсах и с назначенным IP-адресом. -u не требуется, поскольку он говорит netcat прослушивать сокет домена unix, google IPC:) (это самая большая причина, по которой ваш сценарий не работает.)

Ниже следует работать, чтобы передать широковещательную передачу в другую сеть через netcat:

server: nc -l 0.0.0.0 12101
host: echo "hello" | nc 192.168.1.255 12101

Надеюсь, что это поможет, извините, если это было давно намотано или от того, что вы искали:)

Ответ 3

Вы не говорите, что хотите транслировать, что делается с помощью параметра -b для nc/netcat.

nc -h 2>&1 | grep -- -b
-b          allow broadcasts