Как я могу перенаправить весь UDP-трафик с одного порта на другой в BSD / OS X?

Это также происходит когда /etc/sshd_config имеет

AllowTcpForwarding no 

набор. Переключите его на yes позволить передачу TCP.

6
28.05.2015, 15:13
1 ответ

Я попробовал следующие шаги, которые должны работать, но работают не работает на Mac (перенаправляет текстовые сообщения UDP с порта 20 на порт 29), но вы все равно можете попробовать это:

  1. cd / tmp
  2. mkfifo backpipe
  3. sudo nc -ulk 20 0
  4. На другом терминале - проверьте его с помощью echo -n «это тест» | sudo nc -4u -w1 localhost 20

Возможно, использование неверно или специальный файл fifo не работает.

Однако я нашел «более легкий» способ.

  1. Загрузите очень маленький исходный файл программы на C с именем: udp_redirect (щелкните здесь, чтобы загрузить)
  2. Скомпилируйте его с помощью gcc -w udp_redirect.c -o udp_redirect
  3. Запустите его в фоновом режиме sudo ./udp_redirect 127.0.0.1 20 127.0.0.1 29 &
  4. Настройте прослушиватель на порту 29, чтобы проверить его sudo nc -ul 29
  5. На втором терминале проверьте его с помощью echo «это тест» | sudo nc -4u -w1 localhost 20

Этот тест отправляет текстовые сообщения UDP на порт 20 и следит за тем, как прослушиватель порта 29 в первом терминале печатает сообщения. Вы также можете настроить прослушиватель на порт 20 и видеть, что сообщения НЕТ, все они пересылаются (не дублируются) на порт 29.

Я говорю, что это «проще», потому что двоичный файл udp_redirect имеет много более простое использование, не требует специального файла FIFO, не требует каналов, не требует утилиты nc и, самое главное, работает!

0
27.01.2020, 20:31

Теги

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