Многоадресно передайте UDP, не работающий

Владение и права доступа в основном сотрудничают. Ownership говорит систему, кто может получить доступ к файлу, в полномочиях файла говорится как.

Владение разделяет доступ на три группы: пользователь (отдельный пользователь, владеющий файлом), группа (пользователей), другие (остальная часть мира).

Полномочия: r - чтение позволяется, w - запись позволяется, x - выполнение позволяется

Для каталогов значение немного отличается: x позволяет Вам вводить каталог, в то время как r список его содержания (и w позволяет Вам обновить его) - который означает, что, если Вы знаете точное имя файла, Вы не должны читать полномочия на каталоге, это находится в, x достаточно. Вам нужно r на файле все же.

Затем существует триплет на один дополнительный бит: setuid, setgid, липкий. Первые два заставляют (на исполняемом файле) программу быть выполненной как пользователь/группа, владеющий файлом (в зависимости от какого из двух битов установлены). Липкий бит является зависящим от реализации. Для исполняемых файлов это раньше означало, что код программы должен кэшироваться в подкачке для ускорения загрузки его в следующий раз. Для каталога это предотвращает непривилегированных пользователей, удаляющих файл, если они не владеют им, даже если они имели права сделать так иначе - это - то, почему это обычно устанавливается на мировых записываемых каталогах как /tmp.

В дополнение к этому много файловых систем поддерживают дополнительные списки управления доступом (ACL), которые позволяют более прекрасное гранулярное управление доступом. Они доступны с getfacl/setfacl вместо с chmod.

Как примечание стороны, подобная система разрешения обычно реализуется для памяти (RAM) с гранулярностью страницы. Основная цель состоит в том, чтобы придерживаться принципа "W^X": или можно записать в память, или можно выполнить ее, но не оба одновременно. В то время как обычно хорошая идея, это не работает на интерпретируемый своевременный скомпилированный код - например, Java, потому что интерпретатор должен компилировать/оптимизировать сгенерированный код (т.е. записать страницу) и затем выполнить его, часто инкрементно (и изменение полномочий, каждый раз не имел бы большого смысла).

11
30.03.2014, 17:32
4 ответа

Я понимаю, что ваш хост, 192.168.2.7 посылает многоадресный пакет группе 239.255.250.250 на порт 9131

ПРИМЕЧАНИЕ: Я предполагаю, что серверы слушают порт 9131. вы не предоставили никакой информации об этом.

Из вывода ifconfig я вижу, что MULTICAST включен, и tcpdump подтверждает это.

Сначала убедитесь, что хост, на котором работают серверы (тот, который получает многоадресный пакет), присоединился к многоадресной группе.

На каждом хосте сервера введите :

netstat -gn

Если вы видите свой многоадресный адрес, то он присоединился к группе. Если нет, то либо что-то не так с вашей серверной программой, либо, возможно, с настройками ядра.

Если сервер присоединился к группе, но вы не видите ни одного входящего пакета от клиента, проверьте на маршрутизаторе, включен ли у вас igmp (маршрутизатор должен поддерживать igmp)

Например, на маршрутизаторе cisco

enable
conf t
ip multicast-routing
For each interface involved.
int <NIC>
ip pim sparse-dense-mode

Если igmp включен на маршрутизаторе, поищите функции отладки для отслеживания пакетов.

На стороне сервера запустите захват пакетов:

tcpdump -i <NIC> host 239.255.250.250

Если вы не видите никаких пакетов, значит, многоадресные пакеты не пересылаются (предполагается, что

Затем на клиенте отправьте многоадресный пакет (используйте скрипт по ссылке ниже для устранения неполадок)

ПРИМЕЧАНИЕ: UDP пакет кажется неправильно сформированным, поэтому не уверены, что серверы смогут его прочитать. Вы можете использовать скрипт по ссылке ниже, чтобы проверить, отображается ли сообщение в tcpdump как ошибочное или нет (в моем случае это не так)

Пример кода python с использованием многоадресной рассылки :

https://stackoverflow.com/questions/603852/multicast-in-python

ПРИМЕЧАНИЕ: Я использовал этот скрипт на debian raspi (не raspbian и сервер получал пакеты через маршрутизатор - как установлено выше - нормально)

Руководство по Linux: http://stlinux. com/howto/network/short-guide

Cisco : http://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3750/software/release/12-2_52_se/configuration/guide/3750scg/swmcast.html#wp1024278

13
27.01.2020, 19:58

Я столкнулся с аналогичной проблемой, в которой попадаются пакеты, и я мог видеть их с TCPdump , но программа не может принимать данные.

Проблема в этом случае заключалась в том, что я использовал iptables , чтобы разрешить трафик от моей локальной подсети 192.168.0.0/24 , но, конечно, многоадресных приходит из 224,0. 0,0 / 4 вместо этого. Вместо того, чтобы открыть всю подсеть (может также иметь брандмауэр), я просто разрешил трафик от всех хостов на конкретном порту UDP, который я использовал для многоадресной точки, и это исправило проблему.

0
27.01.2020, 19:58

Я заметил, что это также может быть проблема оборудования и / или драйвера. Я без проблем использовал многоадресный UDP (передача и получение) на моем raspberryPI - с программами на C, Java и / или Python.

Однако я только что узнал, что прием многоадресной рассылки UDP НЕ РАБОТАЕТ с симпатичным маленьким USB-адаптером Wi-Fi от EDIMAX - отправка UDP (многоадресная рассылка) работает, а также получение собственных (локальных) сообщений.

сведения о USB-накопителях от lsusb:

Прием многоадресной рассылки UDP не работает: ID 7392: 7811 Edimax Technology Co., Ltd EW-7811Un Беспроводной адаптер 802.11n [Realtek RTL8188CUS]

Прием многоадресной рассылки UDP работает штраф: ID 148f: 3070 Ralink Technology, Corp. RT2870 / RT3070 Беспроводной адаптер

1
27.01.2020, 19:58

У нас была аналогичная проблема, когда группа многоадресной рассылки была успешно присоединена, но сообщения не были получены.

Мы проверили настройки igmp на роутере,что казалось бы в порядке вещей.

В конце концов мы перешли с многоадресного IPv6-адреса на IPv4, и это решило проблему для этой конкретной системы.

0
27.01.2020, 19:58

Теги

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