Какой IP-адрес моего локального интерфейса требуется для IP_ADD_MEMBERSHIP?

Похоже, вы установили минимальную установку CentOS из самый маленький ISO, который у них есть. Другими словами, у вас есть минимум работающей системы. Для гуру Linux это называется ОС. При этом у вас есть три варианта.

  • Вариант 1. Получите DVD ISO и установите его с графическим интерфейсом .
  • Вариант 2: Получите netinstall и не забудьте выбрать среду рабочего стола Gnome из списка пакетов для установки GUI .
  • Вариант 3. Подключитесь к Интернету в системе и просто установите его с помощью yum .

Я бы посоветовал использовать вариант 3 , поскольку это самый простой и, возможно, такой же простой, как запуск

dhcpcd ens0p0

. Я бы посоветовал проверить следующую ссылку , если ваша сеть настроена как DHCP .

0
02.12.2018, 16:57
1 ответ

Предупреждение , в этом ответе я рассматриваю только IPv4 (Я думаю, что при определенных усилиях его можно было бы адаптировать к IPv6)

What is a local interface exactly? What would be an IP address of a local interface?

Это IP-адрес вашего компьютера в вашей локальной сети (на многих компьютерах, что-то вроде 192.168.x.y ).

Обратите внимание, что если у вас есть несколько сетевых карт (NIC ), скажем, одна карта Ethernet, одна карта Wi-Fi, они должны иметь разные адреса.

How is this IP address of the local interface different from the address of the multicast group?

Отсутствует связь между локальным IP-интерфейсом и группой многоадресной рассылки.

Локальные адреса используют IP от 10.0.0.0до 10.255.255.255, от 172.16.0.0до 172.31.255.255и от 192.168.0.0до 192.168.255.255. (см. RFC 1918)

Многоадресная рассылка использует IP от 224.0.0.0до 239.255.255.255(, см. RFC 1112)

Local interface implies the existence of global interface, I guess. So, what would be a "global interface"?

Для меня это скорее означает существование «удаленных интерфейсов». (компьютер, с которым вы хотите обсудить ).

So, which address corresponds to the IP address of my local interface that I should pass to IP_ADD_MEMBERSHIP?

IP-адрес сетевого адаптера, на который вы хотите получать многоадресные дейтаграммы.

/* the multicast group you want to join */
mreq.imr_multiaddr.s_addr = inet_addr("225.0.0.1");
/* the IP of the listening NIC */
mreq.imr_interface.s_addr = inet_addr("192.168.1.10");

if (0 != setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof mreq))
{
    perror("setsockopt");
}

Если вы не хотите указывать одну сетевую карту, вы можете использовать INADDR_ANY, чтобы все сетевые карты прослушивали многоадресную рассылку:

/* the multicast group you want to join */
mreq.imr_multiaddr.s_addr = inet_addr("225.0.0.1");
/* the IP of the listening NIC */
mreq.imr_interface.s_addr = htonl(INADDR_ANY);

if (0 != setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof mreq))
{
    perror("setsockopt");
}
0
28.01.2020, 04:07

Теги

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