У меня возникли проблемы с настройкой многоадресного сервера IPv6 с Ubuntu 14.04, сервер выходит из строя с недопустимым аргументом при попытке привязки к многоадресному адресу IPv6, проверяется с помощью инструмента mcfirst и получает ту же ошибку.
mcfirst -6 ff01::1:1 10000
bind [multicast]: Invalid argument
errno=22
Это отлично работало с Ubuntu 12.04.
mcfirst -6 ff01::1:1 10000
mcfirst joined (*,G) = (*,ff01::1:1)
Изменить: 1 (вывод Ifconfig)
eth0 Link encap:Ethernet HWaddr 00:0c:29:53:a1:fb
inet addr:192.168.50.5 Bcast:192.168.50.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe53:a1fb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22424 errors:0 dropped:0 overruns:0 frame:0
TX packets:11825 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:29238784 (29.2 MB) TX bytes:1061497 (1.0 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1838133 errors:0 dropped:0 overruns:0 frame:0
TX packets:1838133 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1026295857 (1.0 GB) TX bytes:1026295857 (1.0 GB)
Изменить: 2 (IP-адрес) вывод
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:53:a1:fb brd ff:ff:ff:ff:ff:ff
inet 192.168.50.5/24 brd 192.168.50.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe53:a1fb/64 scope link
valid_lft forever preferred_lft forever
Ядро ожидает идентификатор области при привязке локального адреса IPv6 Link, локального адреса многоадресной ссылки или локального адреса узла многоадресной рассылки к сокету IPv6.
Синтаксис для них, например, ff01::1:1%eth0
. Убедитесь, что ваши приложения правильно их поддерживают. Этот синтаксис поддерживается getaddressinfo()
, поэтому правильно написанные приложения не должны иметь ничего общего.
Это поведение отсутствовало в версиях ядра ниже 3.10, которые, по-видимому, неправильно обрабатывали локальную многоадресную рассылку узла. Увидеть фактический патч ядра, который обеспечивает это и определение функции __ipv6_addr_needs_scope_id
.