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

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

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

решение1

«Активный» временный адрес имеет свойствавременныйидинамическийно нетустаревший. Когда он вот-вот станет устаревшим (т.е. егопредпочитаемый_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чтобы устаревший адрес полностью исчез быстрее.

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