Настройка статического адреса IPv6, который наследует делегированный префикс

Настройка статического адреса IPv6, который наследует делегированный префикс

Мой провайдер (comcast) делегирует префикс, мой маршрутизатор передает делегирование префикса (pd) в локальную сеть. Моя машина Debian получает префикс и добавляет его, используя адрес EUI-64. Это хорошо, но не очень запоминается. Я предпочитаю иметь дополнительный "тщеславный" адрес в префиксе PD.

Некоторые особенности:

  • PD — это (например, 2601:8:abcd:abcd/64)
  • Мой Linux-бокс автоматически настраивает eui-64: 2601:8:abcd:abcd:DEAD:BEff:feEF:CAFE (для MAC DE:AD:BE:EF:CA:FE)

Мне бы хотелось вручную создать интерфейс: 2601:8:abcd:abcd::2 как статический глобальный адрес, но если делегирование префикса Comcast изменится, интерфейс должен принять новый делегированный префикс и использовать статический суффикс.

решение1

Я думаю, что вы ищете:

ip token set ::dead:beef/64 dev eth0

Насколько я понимаю, вы запускаете его перед тем, как запустить то, что вы обычно запускаете для получения адреса IP6, и он 0:0:dead:beefбудет использоваться вместо обычного EUI-64.

Странно, но это не добавляет соответствующий локальный адрес ссылки, вместо этого добавляется обычный EUI-64 с fe80::/64префиксом. Вы можете исправить это вручную с помощью:

ip addr flush scope link dev eth0
ip addr add fe80::dead:beef/64 dev eth0

Замените суффикс, размер префикса и интерфейс ( ::dead:beef, /64, eth0) соответствующим образом.

решение2

В настоящее время Network Manager используется по умолчанию почти во всех дистрибутивах GNU/Linux (согласноhttp://news.softpedia.com/news/networkmanager-1-4-adds-support-for-setting-ipv6-tokenized-interface-identifiers-507601.shtml) Я думал, что это другое обсуждение наhttps://unix.stackexchange.com/a/403541/259695может быть полезным. Токен может быть установлен

nmcli connection modify eth0 ipv6.method "auto" # if not already
nmcli connection modify eth0 ipv6.addr-gen-mode "eui64" # use interface token
nmcli connection modify eth0 ipv6.token "::dead:beef" # or "::2" - as you like

который будет записывать IPV6_TOKEN=::dead:beefв /etc/sysconfig/network-scripts/ifcfg-eth0, чтобы пережить перезагрузку. Чтобы немедленно применить это, перезапустите интерфейс

nmcli connection up id eth0  # restart

решение3

Помимо объявления сетевого префикса, вам потребуется использовать службу DHCPv6 с отслеживанием состояния.

Подобно DHCPv4, сервер DHCPv6 в режиме с отслеживанием состояния назначает хостам адреса из желаемого вами диапазона — и это может быть очень небольшой диапазон, например, 2601:8:abcd:abcd::10-2601:8:abcd:abcd::99. Я использовалdnsmasqв моих маршрутизаторах.

Обычно, в дополнение к адресу, назначенному DHCPv6, хосты по-прежнему автономно генерируют одноадресный IPv6-адрес — у каждого интерфейса их будет два (или даже больше). Вы можете отключить это поведение, изменив конфигурацию маршрутизатора — отключение флага конфигурации автономного адреса сработает. Но это также сделает большинство устройств Android неспособными получить адрес IPv6; Android (по крайней мере с KitKat 4.4.4) по-прежнему не поддерживает DHCPv6 должным образом...

решение4

Не могу поверить, что на этот вопрос до сих пор нет ответа!

Большойответ Юргенано не применимо для серверов, которые используют networkd для рендеринга сети, а не NetworkManager.

Для серверов, которым необходим самонастраивающийся, полустатический IPv6, мы должны добавить строку

ipv6-address-token: "::ace:face"

к описанию интерфейса в netplan yaml. например

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      dhcp6: false
      ipv6-address-token: "::ace:face"
      addresses:
        - <ipv4 static address>
      nameservers: ...

Однако, если включена переадресация IP, необходимо добавить следующую строку, чтобы /etc/sysctl.confпереопределить отключение по accept_raумолчанию с помощью networkd. Логика (если мы маршрутизатор, мы не должны принимать ra от других маршрутизаторов) имеет смысл, но в некоторых случаях неприменима.

net.ipv6.conf.eth0.accept_ra=2

Строка в sysctl conf заставляет принимать анонс маршрутизатора (ra) несмотря на настройку ip forwarding. Это важно, так как ra информирует нас о делегированном префиксе.

Шаблон токена IPv6-адреса в строке netplan предназначен для генерации IPv6-адреса, который использует предоставленный маршрутизатором префикс и наш указанный адрес для генерации адреса. Таким образом, мы получаем адрес в форме

<delegated prefix>::ace:face/<bit length of netmask>

Все же не полностью статично, но предсказуемо, и мне не приходится перенастраивать каждый сервер при изменении префикса.

Связанный контент