Почему адреса IPv6 сбрасываются при отключении связи?

Существует разница в поведении между адресами IPv4 и IPv6, назначенными сетевому интерфейсу: когда ссылка отбрасывается, как в случае" ip link set down dev eth0 ", IPv4 адреса сохраняются, но адреса IPv6 сбрасываются. Если ссылка появится снова, IPv4-адреса могут быть немедленно использованы для передачи трафика, но IPv6-адреса должны быть назначены.

Это ошибка или намеренно? Если это сделано намеренно, где я могу найти это явно задокументированное?

Один сотрудник утверждал, что это ошибка, которая будет исправлена ​​в следующем ядре; другой утверждал, что это сделано намеренно, поскольку IPv6 предполагает динамическую адресацию. Я обнаружил идентичное поведение в нескольких разных дистрибутивах Linux и разных версиях ядра, поэтому я почти уверен, что это сделано намеренно, но я хочу найти документацию, как в цитате из RFC, чтобы решить этот вопрос.

Если есть обходной путь, принудительно сохраняющий вручную назначенные IPv6-адреса, было бы полезно знать об этом.

6
задан 4 April 2017 в 19:56
1 ответ

Похоже, вы ищете параметр keep_addr_on_down , который был введен в Linux 4.6. Цитата Documentation / network / ip-sysctl.txt :

keep_addr_on_down - INTEGER
    Keep all IPv6 addresses on an interface down event. If set static
    global addresses with no expiration time are not flushed.
      >0 : enabled
       0 : system default
      <0 : disabled

    Default: 0 (addresses are removed)

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

modprobe dummy
ip -6 addr add dev dummy0 2001:db8::42/128
5
ответ дан 3 December 2019 в 00:31

Теги

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