Моя среда:

Mac OS X 10.8.5 (IP: 192.168.10.5)
CentOS 6.5 (IP: 192.168.10.8)

Я пытаюсь перехватить входящий пакет UDP на OS X.

Я попробовал на Терминале OS X

# tcpdump -In udp portrange 6000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type IEEE802_11_RADIO (802.11 plus radiotap header), capture size 65535 bytes

Затем на CentOS 6.5

$ echo "test" | nc -w 1 -u 192.168.10.5 6000
nc: Write error: Connection refused

В соединении было отказано.

Однако, когда я запускаю программу (эхо-сервер UDP), созданную Unity (5.1.3f) для получения пакета UDP на OS X, соединение не было отклонено.

$ echo "test" | nc -w 1 -u 192.168.10.5 6000
test

Какую часть конфигурации OS X я должен проверить?

2 ответа2

1

Ваш беспроводной драйвер может не дешифровать пакеты в режиме мониторинга 802.11, поэтому tcpdump может не определить, являются ли они пакетами UDP.

Повторите тест, не передавая -I в tcpdump . Это позволит tcpdump просматривать интерфейс как Ethernet, а не переводить его в режим мониторинга 802.11.

Обратите внимание, что, хотя tcpdump будет захватывать пакеты, он не будет препятствовать тому, чтобы стек IP отправлял сообщение ICMP «назначение недоступно: порт недоступен», если он получает дейтаграмму UDP для порта без открытого сокета слушателя. Таким образом, nc на отправляющем компьютере будет по-прежнему говорить "соединение отказано", если вы не используете что-то вроде Unity для получения этих пакетов.

0

Я не написал часть Моей среды, которая может быть важна для этой проблемы.

Я использую VMware.

Моя среда:

Mac OS X 10.8.5
CentOS 6.5 on VMWare Fusion 6.0.4 on Mac OS X 10.8.5

No firewall setting on MacOS X 10.8.5

Mac OS X(Host OS) network
- en0 : 192.168.10.4
- vmnet1 : 172.16.99.1
- vmnet8 : 172.16.173.1

CentOS(Guest OS) network (connected with "Bridge" setting)
- eth0 : 192.168.10.8
- lo : 127.0.0.1

1) Из CentOS в Mac OS X через en0 в Mac OS X.

  • tcpdump в Mac OS X не показывает входящий пакет UDP (в CentOS 6.5 показано "Отказ в соединении")
  • Приложение Unity (приемник UDP) показывает входящий пакет UDP (без сообщений об ошибках в CentOS 6.5)

На CentOS

# echo "test" | nc -w 1 -u 192.168.10.4 6000
nc: Write error: Connection refused

В Mac OS X

# tcpdump -n udp portrange 6000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes

2) Из CentOS в Mac OS X через vmnet8 в Mac OS X.

  • tcpdump в Mac OS X показывает входящий пакет UDP, как показано ниже.

На CentOS

$ echo "test" | nc -w 1 -u 172.16.173.1 6000

В Mac OS X

# tcpdump -n udp portrange 6000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
07:28:39.958576 IP 192.168.10.8.59866 > 172.16.173.1.6000: UDP, length 5

Поэтому, по крайней мере, если я использую vmnet8, я могу отправить UDP-пакет из CentOS в Mac OS X. У меня также нет проблем с использованием vmnet1.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .