Как настроить подсистему radvd, dhcpd6, маршрутизацию и / 64 на основе делегированного префикса сервером DHCPv6-PD?

10

Мой провайдер только что запустил службу двойного стека IPv4 / IPv6. Для подключения к Интернету IPv4 / IPv6 почти все пользователи обычно используют CPE, арендованный Интернет-провайдером. Но я хочу использовать свой Linux-маршрутизатор вместо такого CPE, потому что у моего маршрутизатора очень много ролей (много правил iptables и 3 интерфейса Ethernet, обратный прокси-сервер http, кэш-память http, memcached, сервер smtp / pop и прокси-сервер DNS). Я хочу, чтобы это был маршрутизатор с двойным стеком IPv4 / IPv6.

Мой роутер

  • CentOS6.0 i686
  • eth0 для WAN
  • eth1,2 для локальной сети
  • ISC dhcp (версия 4.1.1), установленная "# yum install dhcp" из репозитория CentOS-обновлений
  • Radvd (версия 1.6) устанавливается с помощью # yum install radvd из репозитория CentOS
  • [РЕДАКТИРОВАТЬ] Причина, по которой я использую ISC dhclient, заключается в том, что мой маршрутизатор должен отправлять опцию DHCPv6 16 (класс Vendor) в своих сообщениях запроса и запроса, чтобы получить опцию информации о конкретном поставщике, которая включает некоторую информацию, специфичную для провайдера ( SIP номер телефона, адрес сервера прошивки). Я знаю, как установить опцию 16 в ISC dhclient, но не знаю его в WIDE-dhcpv6. И я не могу найти такие настройки как "id-assoc" в ISC dhclient.

Моя цель

  • Префикс / 48 делегируется клиенту DHCPv6-PD (делегирование префикса DHCPv6) (dhclient) на eth0.
  • Маршрут IPv6 по умолчанию установлен в направлении ISP. Я должен рассматривать локальный адрес сервера DHCPv6 ISP как маршрут по умолчанию.
  • Одна подсеть / 64 и один глобальный адрес (которые находятся в делегированном префиксе) назначаются для каждого LAN I / F (eth1 / eth2).
  • Radvd на eth1 и eth2 объявляет RA на основе назначенной / 64 подсети.
  • dhcpd6 на eth1 и eth2 объявляет дополнительную сетевую информацию (серверы имен, список доменов и адреса sip-серверов), полученные от сервера DHCPv6 интернет-провайдера.

Моя текущая конфигурация

/ И т.д. / sysconfig / сети

NETWORKING=yes
HOSTNAME=xxx.yyy.zzz

# Enable IPv6 routing and stop accept_ra/autoconf.
IPV6FORWARDING=yes

/ И т.д. / sysconfig / сети-скрипты / ifcfg-eth0

DEVICE="eth0"
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none

# Enable DHCPv6-PD client.
DHCPV6C=yes
DHCPV6C_OPTIONS="-P -cf /etc/dhcp/dhclient6.conf"

# Disable make_resolv_conf function in /sbin/dhclient-script.
PEERDNS=no

/etc/dhcp/dhclient6.conf

script "/sbin/dhclient-script";
interface "eth0" {
        send dhcp6.reconf-accept;
        also request dhcp6.vendor-opts, dhcp6.sip-servers-names, dhcp6.sip-servers-addresses, dhcp6.sntp-servers;
}

Результат

После "# service network restart" клиент DHCPv6-PD, похоже, успешно завершил работу.

lease6 {
  interface "eth0";
  ia-pd xx:xx:xx:xx {
    starts 1312464004;
    renew 7200;
    rebind 10800;
    iaprefix 24xx:xxxx:xxxx::/48 {
      starts 1312464004;
      preferred-life 12600;
      max-life 14400;
    }
  }
  option dhcp6.client-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
  option dhcp6.server-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
  option dhcp6.reconf-accept ;
  option dhcp6.sip-servers-addresses 24xx:xxxx:xxxx:xxxx::1;
  option dhcp6.name-servers 24xx:xxxx:xxxx:xxxx::3,24xx:xxxx:xxxx:b::3;
  option dhcp6.domain-search "xxx.jp.", "yyy.jp.";
  option dhcp6.sntp-servers 24xx:xxxx:xxxx:xxxx::a,24xx:xxxx:xxxx:b::b;
}

Вопрос

Клиент DHCPv6-PD успешно делегирован / 48 префикса. Но после этого

  • Как установить маршрут по умолчанию IPv6 в таблице маршрутизации маршрутизатора?
  • Как назначить глобальный IPv6-адрес и / 64 подсеть для каждого LAN I / F (eth1 и eth2) на основе делегированного префикса?
  • Как запустить radvd для объявления RA на каждом LAN I / F (eth1 и eth2)?
  • Как запустить сервер DHCPv6 (dhcpd6) в каждой локальной сети, чтобы объявить дополнительную сетевую информацию (серверы имен, список поиска домена и адреса sip-серверов), полученные от сервера DHCPv6 интернет-провайдера?

Моя догадка

Согласно "$ man dhclient" и "$ man dhclient-script", dhclient-script, кажется, используется для настройки таких параметров, и он предлагает некоторые ловушки. Но теперь он ничего не делает для клиента DHCPv6-PD.

Да, возможно, мне придется написать несколько сценариев, подходящих для моей среды DHCPv6-PD, хотя я не знаком с сетевыми конфигурациями IPv6. Кто-нибудь, дайте мне знать вышеуказанные настройки в dhclient-script? [РЕДАКТИРОВАТЬ] Я хочу знать практический сценарий dhclient.

И я волнуюсь, некоторые особые соображения должны быть приняты. Например, поскольку каждый IPv6-адрес имеет предпочтительное / действительное время жизни, когда я назначаю глобальный IPv6-адрес интерфейсу LAN на основе делегированного префикса, мне приходится назначать не только IPv6-адрес, но и его времена жизни, которые должны быть получены из делегированного префикса. предпочтительное / действительное время жизни префикса?

Кроме того, возможно, придется переконфигурировать radvd и сервер DHCPv6 на интерфейсах локальной сети, когда произойдет переконфигурация DHCPv6? Какой крючок следует использовать?

[EDIT] Когда происходит переконфигурация DHCPv6, как объявить как новую, так и устаревшую информацию? Radvd автоматически объявляет, что предыдущий префикс устарел? DHCPv6-сервер автоматически объявляет предыдущие сервера имен устаревшими?

takaomag
источник

Ответы:

4

Я не знаю ответа на ваш вопрос, но я просто хочу предупредить вас об использовании адреса DHCP-сервера в качестве маршрутизатора по умолчанию. Если это работает, это случайно ... В IPv6 маршрут по умолчанию передается через RA, а не через DHCP.

Вам нужно будет включить переадресацию, прием RA и отправку RS. Проблема здесь в том, что ядро, включенное в Centos6, не позволяет вам сделать это. Когда переадресация включена, прием RA и отправка RS отключены. Должно быть ядро ​​CentosPlus с соответствующими патчами. См. Ветку / сообщение списка рассылки по адресу http://lists.centos.org/pipermail/centos/2011-April/thread.html#109756.

Соответствующие настройки sysctl.conf:

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.eth0.accept_ra=2
net.ipv6.conf.eth0.accept_ra_defrtr=1
net.ipv6.conf.eth0.router_solicitations=1
Сандер Штеффанн
источник
2
На самом деле, вы хотите, чтобы accept_ra было 2 (принять, даже если маршрутизация включена). В противном случае ядро ​​игнорирует его на маршрутизаторе.
Кайл Батт
2
  • Маршрут по умолчанию IPv6 должен быть настроен любым подключением к Интернету по умолчанию (в восходящем направлении), прежде чем использовать DHCPv6 PD для получения дополнительных подсетей. Вы не упомянули, как вы на самом деле подключаетесь вверх по течению, поэтому я не могу вам помочь.
  • Я использую WIDE DHCPv6-клиент, а не ISC, поэтому я не знаю, как это сделать конкретно, но я ожидаю, что ISC имеет что-то эквивалентное этой опции конфигурации WIDE:

    id-assoc pd {
        prefix-interface eth0 {
            sla-id 1;
            sla-len 4;
        };
    };
    

    По сути, вы говорите клиенту DHCP, как назначать подсети внутренним интерфейсам; Приведенная выше конфигурация говорит: «Я получаю 4 бита префикса, делегированного мне ( sla-len 4), беру первую доступную подсеть ( sla-id 1) и назначаю ее eth0( prefix-interface eth0).

  • Настройте radvd с соответствующими interfaceстрофами (на radvd.confстранице руководства есть хорошие примеры для работы), и это будет просто работа.
  • Я не могу помочь тебе там; кроме тестирования, я не использую службу DHCPv6 (я получаю всю свою информацию DHCP от моего сервера DHCP).
ombble
источник
Спасибо за Ваш ответ. 1. Как подключиться вверх по течению, просто подключите кабель Ethernet к FTTH GE-PON. Просто сейчас нет способа указать маршрут IPv6 по умолчанию через DHCPv6, я должен рассматривать локальный адрес канала сервера DHCPv6 как маршрут по умолчанию.
Такаомаг
2. Хотя я не упомянул, причина, по которой я использую ISC dhclient, заключается в том, что мой маршрутизатор должен отправлять опцию DHCPv6 16 (класс Vendor) в своих сообщениях запроса и запроса, чтобы получить опцию информации о конкретном поставщике, которая включает в себя некоторые Информация, специфичная для интернет-провайдера (номер телефона SIP, адрес сервера прошивки). Я знаю, как установить опцию 16 в ISC dhclient, но не знаю его в WIDE-dhcpv6. И я не могу найти такие настройки как "id-assoc" в ISC dhclient.
Такаомаг
2
3,4. Возможно, мне удастся написать несколько плохих сценариев для создания radvd.conf и dhcpd6.conf на основе информации (префикса и т. Д.) С сервера DHCPv6. Но когда происходит переконфигурация DHCPv6, как объявить как новую, так и устаревшую информацию? Radvd автоматически объявляет, что предыдущий префикс устарел? DHCPv6-сервер автоматически объявляет предыдущие сервера имен устаревшими?
Такаомаг
В любом случае, я хочу знать практический сценарий dhclient.
Такаомаг
Не добавляйте всю эту информацию в комментариях к ответу; добавь это к своему вопросу .
Уомбл
-1

Wombie дал тот же ответ, который я использовал бы для настройки radv и маршрутизации. Inet6 предназначен для самостоятельной настройки без необходимости использования DHCP-сервера.

Я не использую DHCPv6, так как он может обрабатываться radvd и zeroconf. Radvd может быть настроен для предоставления серверов имен и может рекламировать серверы из /etc/resolv.conf. В новых версиях radvd также реализовано распространение списков поиска.

Я настроил avahi-daemon для распространения служб имен и серверов для клиентов. Вам понадобятся клиенты, способные сделать обнаружение сервиса. Я не провел большого тестирования обнаружения сервисов, поскольку управлял сетью с двумя стеками по всем направлениям.

BillThor
источник
Даже если я использую сервер DHCPv6 или radvd, мне нужно написать несколько сценариев для динамического создания dhcpd6.conf или radvd.conf на основе информации (префикса и т. Д.) С сервера DHCPv6. Но когда происходит переконфигурация DHCPv6, как сообщить как новую, так и устаревшую информацию хостам на стороне локальной сети? Если я создаю новый dhcpd6.conf или radvd.conf динамически, основываясь только на новой информации с сервера DHCPv6, radvd автоматически сообщает, что предыдущий префикс устарел? DHCPv6-сервер автоматически объявляет предыдущие сервера имен устаревшими?
Такаомаг
Radvd может использовать префикс :: / 64 для автоматического получения адресов из интерфейса. Вам не нужно переписывать конфигурацию. DNS-серверы и список поиска должны быть статическими данными. Автоконфигурация IPv6 предназначена для обработки мигрирующих адресов. Я не знаю, насколько хорошо ваш провайдер поддерживает переход. Я не смотрел на DHCPv6.
BillThor