![IPv6-адрес не устанавливается](https://rvso.com/image/1311831/IPv6-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%20%D0%BD%D0%B5%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F.png)
У меня проблема с настройкой IPv6-адреса на Ubuntu 10.04. Я отключил свой сетевой менеджер. Мой файл /etc/network/interface выглядит так:
iface eth0 inet6 static
pre-up modeprobe ipv6
address fe80::1
netmask 10
gateway fe80::2
Я настроил свой IP-адрес как fe80::1, но когда я подключаюсь к eth0, ifconfig показывает
inet6 addr: fe80::a00:27ff:fe1e:5edf/64 Scope:Link
Почему отображается другой IP-адрес?
Когда я бегу
ping6 fe80::a00:27ff:fe1e:5edf/64
Мне пишет неизвестный хост. Почему?
решение1
Вы упомянули в комментарии, что используетеifconfigчтобы вызвать интерфейс. В этом случае ваша проблема в том, чтоifconfigне использует interfaces
файл(он только сообщает интерфейсу о необходимости начать прием пакетов). Этот файл конфигурации специфичен для Debian/Ubuntu и читается толькоесливверхвнизинструменты ifup
и ifdown
. Таким образом, вам придется использовать:
ifup eth0
Даже в этом случае ваша конфигурация будет отклонена, поскольку синтаксис файла конфигурации использует «iface
", а не " interface
", для обозначения нового логического интерфейса. (См.интерфейсы(5)(Руководство для полного описания синтаксиса.)
(Ваша pre-up
строка также 1) не нужна: она делается автоматически, и 2) набрана с ошибкой: она " modprobe
".)
Адрес fe80::a00:27ff:fe1e:5edf
отображается не из-за какой-либо конфигурации, а потому, что IPv6 требует этого. Каждый интерфейс должен иметьссылка-локальнаяадрес на основе «идентификатора интерфейса» (его MAC-адреса); эти адреса добавляются автоматически ядром Linux.
(Помните, что интерфейс может иметь много адресов. Вы можете иметь оба адреса fe80::1
и fe80::a00:27ff:fe1e:5edf
на одном интерфейсе, и он все равно будет работать.)
Также помните, что fe80::/10
адресассылка-локальная– другими словами, ониникогда не маршрутизируются, и gateway
настройка конфигурации бессмысленна.
Это означает, что всякий раз, когда вы пытаетесь получить доступ к локальному адресу, вы должны вручную указать используемый интерфейс — это делается с помощьюдобавлениеиндекс зоныпо адресу. (В Linux индекс зоны совпадает с именем интерфейса.) Например, для подключения черезeth0, вам нужно добавить %eth0
:
ping6 fe80::a00:27ff:fe1e:5edf%eth0
(Ответ Оливера Зальцбурга также верен — нельзя указывать маску подсети, если речь идет об одном хосте.)
решение2
Я не думаю, что вам нужно указывать маску подсети для ping
.
ping6 fe80::a00:27ff:fe1e:5edf
Все должно быть в порядке.