IPv6 адресація, статична локальна частина динамічного префікса


10

Маршрутизатор у моїй мережі передає префікс IPv6, призначений моїм провайдером. Цей префікс динамічний, але "досить липкий".

Я хотів би, щоб мої машини автоматично підбирали префікс, розміщений у РА, але комбінували його з визначеною користувачем локальною частиною, а не генерували одну випадкову або на основі MAC-адреси. Чи є якийсь простий спосіб зробити це?


1
Я не бачив жодної операційної системи, яка б дозволила вам це робити :(
Sander Steffann

@SanderSteffann Ніколи не використовував Linux?
Майкл Хемптон

1
@Michael Я ніколи не бачив ОС, яка дозволяє вам налаштувати IID жетони. Технічно ядро ​​може це зробити, але жодна ОС (як у дистрибуції) не підтримує його :(
Sander Steffann

Відповіді:


11

Є два способи зробити це. Один - простий шлях, а один - важкий.

Найпростіший спосіб - запустити сервер DHCPv6 у вашій мережі та призначити адреси хостів кожному пристрою самостійно. Або дозволити серверу вибрати частину хоста; сервери DHCPv6, які я бачив, зберігатимуть ту саму частину хоста, навіть якщо префікс зміниться.

Важкий спосіб - використовувати ip tokenдля встановлення токенізованих ідентифікаторів інтерфейсу. Це описується як:

Підтримка токенізованого IPv6 ідентифікатора інтерфейсу використовується для присвоєння відомим адресам частини хосту вузлам, в той час як все ще отримують префікс глобальної мережі з реклами маршрутизатора. Основною ціллю для токенізованих ідентифікаторів є серверні платформи, де адреси зазвичай налаштовуються вручну, а не використовуються DHCPv6 або SLAAC. Використовуючи токенізовані ідентифікатори, хости все ще можуть визначити свій мережевий префікс за допомогою SLAAC, але більш легко автоматично перенумерувати, якщо зміниться їх мережевий префікс. Токенізовані ідентифікатори IPv6 описані в чернетці: <draft-chown-6man-tokenized-ipv6-identifiers-02>.

Причина цього полягає в тому, що, хоча Linux включає цю функціональність, жоден дистрибутив Linux, який я знаю, включає підтримку, щоб зробити таку конфігурацію стійкою та застосувати її під час завантаження, як це робиться для ручних або налаштованих DHCP адрес. Тож це, мабуть, не дуже добре підійде для вас, поки це не зробить деякий розподіл. Зауважте, що тепер можна налаштувати маркери IPv6 в NetworkManager та systemd-networkd; новіші відповіді мають конкретні інструкції щодо налаштування.


Нарешті, якщо ваш провайдер час від часу змінює ваш префікс, подумайте про використання унікальних локальних адрес у вашій мережі. Таким чином, у всіх ваших пристроях завжди буде адреса, яка ніколи не зміниться, з якою вони можуть спілкуватися один з одним. Деякі домашні / SOHO-маршрутизатори, що підтримують IPv6 (наприклад, OpenWrt) мають можливість включити ULA у всій домашній мережі; якщо вдома є кілька маршрутизаторів, це слід включити на маршрутизаторі, який підключається до провайдера.


Проблема, яка насправді викликала запитання, полягала в тому, що мій маршрутизатор провайдерів розсилає RA з невеликим терміном експлуатації. Це спричиняє великі проблеми з адресами конфіденційності. ОТОХ, мені не дуже подобається ідея розкрити свою MAC-адресу світові.
підключіть

Статична локальна частина уникає проблем з адресами конфіденційності, не розкриваючи мою MAC-адресу, дякую.
підключіть

Чи знаєте ви спосіб додати кілька токенів до одного інтерфейсу для встановлення декількох "динамічних статичних" IPv6-адрес?
Весілля,

@wedi Linux підтримує лише один маркер на інтерфейс. Токени IPv6, мабуть, не є вирішенням вашої проблеми, якою б вона не була.
Майкл Хемптон

6

Майкл зробив дуже хороший підсумок, і недавній підказку plugwash було найкращим, що я міг знайти після полювання протягом декількох годин для рішення CentOS 7 / RHEL (також системного та мережевого менеджера). Після звикання до nmcli (я в основному все ще використовував ifcfg та ip) - я міг успішно його застосувати.

Але копати глибше відповідно до https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html NetworkManager безпосередньо підтримує токенізовані ідентифікатори інтерфейсу IPv6 як властивість (з випуску 1.4 серпня 2016 року http://news.softpedia.com/ news / networkmanager-1-4-add-support-for-setting-ipv6-tokenized-interface-identifiers-507601.shtml ).

Таким чином, вам не потрібно встановлювати IPv6-налаштування мережевого менеджера ігнорувати, але слід встановити параметри

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 "::2"

який запише IPV6_TOKEN=::2до / etc / sysconfig / network-scriptpts / ifcfg-eth0, щоб пережити перезавантаження. Для негайного застосування цього перезапуску інтерфейсу слід

nmcli connection up id eth0  # restart

3

Дякую Майклу, що підтвердив, що Linux підтримує цю функцію та вказує на команду низького рівня. Ця відповідь стосується того, як змусити це працювати на практиці на розтяжній робочій стільниці Debian (із системним та мережевим менеджером).

Спочатку відредагуйте з'єднання в мережевому менеджері та встановіть налаштування IPv6 на ігнорування.

Тепер створіть файл /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. Файл повинен мати root, дозволи 755 та з наступним вмістом.

#!/bin/sh
ip token set ::2 dev eth0

Замініть eth0 на потрібний вам пристрій та :: 2 на потрібний суфікс.


2

Під Linux можна використовувати systemd-network.

Просто створіть .networkфайл під /etc/systemd/network/somename.network:

[Match]
Name=e*

[Network]
DHCP=yes
IPv6Token=::1

замість того, e*щоб відповідати всім інтерфейсам, починаючи з e, ви можете ввести повне ім'я інтерфейсу. Це дозволяє DHCP {v4, v6} і використовує ::1як суфікс. Ви можете вибрати будь-яку адресу IPv6, але перші 64 біти повинні бути встановлені на нуль.

Після цього увімкніть і запустіть systemd-networkd.service.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.