Ссылка представляет собой изображение Дамп Wireshark входящего 60-байтового кадра Ethernet, содержащего UDP-пакет. Полезная нагрузка пакета — это одно слово «привет» (извините, у меня недостаточно представителей, чтобы напрямую вставить изображение).
Проблема: я не могу получить сокат или же нк для чтения и отображения этого пакета (это не совсем так, см. #1 ниже).
Я запускаю читалку как:
$ сокат UDP: 192.168.50.129: 5000 -
Я пробовал различные форматы адресов, связанные с UDP, а также этот. Писатель работает как:
$ socat READLINE UDP:192.168.50.132:5000
Вопрос: как мне отобразить этот входящий пакет, желательно как одно словоПривет?
К сожалению, есть некоторые сложности:
#1
Если я запускаю читалку как # socat ИНТЕРФЕЙС:ens4f0 - затем я делать получить отображение входящего кадра (по какой-то причине он отображается дважды). Есть какой-то двоичный вывод, а затем слово Привет. Однако я не могу этого сделать, так как в конечном итоге другие процессы будут использовать этот интерфейс, поэтому мне нужно понять, что происходит.
#2
Входящий кадр фактически имеет dst IP-адрес 192.168.50.132; брандмауэр настроен на преобразование этого в 192.168.50.129, который является адресом, который слушает читатель:
# iptables -t nat -A PREROUTING -i ens4f0 -j DNAT --to 192.168.50.129
Выходные данные Wireshark показывают входящий пакет до этого преобразования, поэтому IP-адрес dst отображается как 192.168.50.132. Я действительно не знаю, работает ли это - могу ли я получить сокат для создания шестнадцатеричного дампа того, что он на самом деле видит на ens4f0?
#3
Это сложно, но я надеюсь, что это не связано. На самом деле это петлевой тест: выходит один кадр. ens4f0, закольцовывается внешним оборудованием и возвращается без изменений в ens4f0. Сетевая карта имеет IP-адрес 192.168.50.129. у меня есть ip ржет добавить команда, которая направляет доступ к 192.168.50.132 из ens4f0 к внешнему оборудованию; пакет возвращается без изменений, поэтому мне нужно iptables команда для преобразования IP-адреса dst обратно в ens4f0 адрес.