IPv6 адрес не установлен

У меня проблема с настройкой 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

Это скажет мне неизвестный хозяин. Зачем?

2 ответа

Решение

Вы упомянули в комментарии, что вы используете ifconfig для запуска интерфейса. В этом случае ваша проблема заключается в том, что ifconfig не использует interfaces файл (он только говорит интерфейсу, чтобы начать получать пакеты). Этот файл конфигурации относится к Debian/Ubuntu и читается только инструментами ifupdown.ifupа такжеifdown, Таким образом, вы должны использовать:

ifup eth0

Даже тогда ваша конфигурация будет отклонена, потому что синтаксис файла конфигурации использует "iface"не"interface", для обозначения нового логического интерфейса. (См. руководство interfaces(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

(Ответ Оливера Зальцбурга также верен - вы не должны указывать маску подсети при обращении к одному хосту.)

Я не думаю, что вы должны предоставить маску подсети для ping,

ping6 fe80::a00:27ff:fe1e:5edf

Все должно быть в порядке.

Другие вопросы по тегам