Как я могу позволить приложениям связывать с каким-либо адресом в подсети, присвоенной интерфейсу?

IPC мог бы быть другим подходом. Можно создать сегмент общей памяти, который предоставит Вам механизм блокировки, где каждый процесс может затем обновить значение, сохраненное здесь. Это не файл в файловой системе, это - раздел памяти, которая определяется с этой целью.

Можно читать больше о IPC через man ipcs страница справочника.

Ссылки

2
10.05.2014, 19:49
1 ответ

Часть конфигурации вашего интерфейса, а именно inet6 2001: 5c0: 1103: 5800 :: / 56 в списке ip addr , означает две вещи:

  1. 2001: 5c0: 1103: 5800 :: назначен вашему интерфейсу - вы можете ping6 узнать, что он действителен, тогда как 2001: 5c0: 1103 : 5800 :: 1 не отвечает
  2. / 56 служит для целей маршрутизации и означает только то, что если вы хотите отправить что-то в сеть с этим префиксом ( inet6 2001: 5c0: 1103: 5800 :: / 56 ), он должен выйти через интерфейс tun . Вы можете узнать это, используя ip -6 route .

О том, как делать то, что вы хотите, вы можете узнать из этого ответа .

Итак, почему сработали привязки? Это потому, что вы можете использовать сетевой адрес в вызове bind , и он привяжет ваш сокет к интерфейсам, которые имеют доступ к данной сети (в частности, привязка к 0.0.0.0 привязывается ко всем интерфейсам, а не ко всем IP-адресам в Интернете).

3
27.01.2020, 22:06

Теги

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