Назад | Перейти на главную страницу

По запросу новый IPv6 с использованием расширения конфиденциальности?

Включение Privacy Extension (net.ipv6.conf.eth0.use_tempaddr=2 в /etc/sysctl.conf) для IPv6 дает мне новый IP-адрес на фиксированный период времени, есть ли способ получить новый IPv6 по запросу? т.е. обновить новый IPv6 при необходимости?

«Активный» временный адрес имеет свойства временный и динамичный но нет устарел. Когда он скоро станет устаревшим (например, его предпочтительный_lft значение падает до 0), новый временный адрес добавляется ядром к интерфейсу.

Текущий временный адрес интерфейса будет частью результатов, показанных здесь:

ip -6 address show temporary dynamic

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

ip -6 address show temporary deprecated

Вам просто нужно снизить его preferred_lft значение, близкое к нулю, чтобы инициировать создание нового временного адреса. Методом проб и ошибок это не сработает, если preferred_lft установлен ниже 3: обратный отсчет достигает 0 перед запуском создания, а затем он больше не будет работать (но все еще можно установить снова preferred_lft на> = 3 позже, чтобы получить триггер). Я не знаю, есть ли какая-нибудь ручка по поводу этой особенности. 5 секунд выглядит безопасным значением, это означает, что новый адрес появится примерно через 2 или 3 секунды.

Предположим, что текущее найденное значение - 2001: db8 :: 1/64 на интерфейсе eth0:

ip address change 2001:db8::1/64 dev eth0 preferred_lft 5

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


С участием ipвывод JSON и jq возможна некоторая возможность использования сценариев, вот что я пришел для вывода команд, готовых для передачи в оболочку для одновременного изменения всех возможных временных адресов (обычно требуется, чтобы многосетевая система получила более одного, но вмешательство в это может, возможно, создать несколько позже тоже). Это подтверждает, что временный и динамичный адрес не устарел считать его кандидатом:

ip -6 -p -j address show temporary dynamic | jq -j '.[] |
    . as $i |
        .addr_info[] as $a |
            if $a.local == null // $a.deprecated == true then
                empty
            else
                "ip -6 address change ",
                $a.local, "/", $a.prefixlen,
                " dev ", $i.ifname,
                " preferred_lft 5\n"
            end'

который снова выведет:

ip -6 address change 2001:db8::1/64 dev eth0 preferred_lft 5

Вы также можете подумать о сокращении valid_lft чтобы устаревший адрес исчез полностью быстрее.