Здравствуйте, Dimonira, Вы писали:
D>Здравствуйте, netch80, Вы писали:
N>>Здравствуйте, Dimonira, Вы писали:
N>>Радикальный метод: покажите вывод strace операции bind() (или хотя бы сами его изучите). Тот ли адрес N>>передаётся? N>>Альтернативно: запустив программу, через netstat или ss посмотрите, на какой адрес завязался сокет.
N>>Далее посмотрите на файрволл и настройки форвардинга. Может быть запрет на интерфейсе принимать пакеты на любые IP кроме IP этого интерфейса. Если форвардинг выключен, может не работать приём пакетов на один интерфейс для IP другого... по идее, в линуксе weak host model, но я не нагуглил, как это работает при выключенном форвардинге. Ещё есть rp_filter и другие более хитрые опции.
D>Сокет завязывается куда задали, пакеты в интерфейс приходят. Но программа их не берёт.
D>Вчера ещё попробовали в bind задать IP-адрес широковещательным, типа 10.10.255.255 — программа работает, приём есть. Но непонятно, нормально это или не очень.
Похоже и правда, дело в форвардинге. Принимается только на тот IP-адрес, которому посланы данные. У нас передавались данные широковещательно на 10.10.255.255, поэтому когда сокет привязали к 10.10.255.255, так всё и пошло.