Вопрос или проблема
У меня есть сервер с CentOS6, который я использую как NAT-маршрутизатор в течение многих лет, с /proc/sys/net/ipv4/ip_forward=1
Сейчас у меня есть как IPv4-адрес, так и IPv6-адрес от Starlink, с
inet6 addr: 2605:****:****:****:****:****:****:3660/64 Scope:Global
.
Он появился, хотя у меня было установлено “игнорировать” для IPv6 в интерфейсе NetworkManager.
Как я могу получить интернет-подключение по IPv6 для других устройств в моей локальной сети?
Я попытался использовать NetworkManager, чтобы установить “IPv6 Automatic” для обоих интерфейсов – локального и интернет – но безуспешно. Я предполагаю, что могу назначить локальные адреса в диапазоне FD00 и установить /proc/sys/net/ipv6/conf/all/forwarding=1
, т.е. NAT, но я думал, что должен получить 64 глобальных адреса для моих устройств.
Я думал, что должен получить 64 глобальных адреса для моих устройств.
Да, но это менее автоматично, чем получение собственным хостом его адреса. Чтобы получить марширутизированный /64 (или больше), вам нужен клиент DHCPv6-PD, чтобы получить аренду Предоставления Префикса и настроить авто-конфигурацию адресов (например, radvd
для SLAAC) на интерфейсе LAN.
Я не знаю, какие клиенты DHCPv6 с поддержкой PD доступны на CentOS 6, но “WIDE DHCPv6 Client” раньше был популярным, и systemd-networkd, возможно, уже имеет DHCPv6-PD в вашей версии.
(В зависимости от провайдера, вы, возможно, сможете получить аренду PD на весь /60 или /56. Индивидуальные интерфейсы все равно должны быть /64, но это позволило бы иметь несколько подсетей.)
Однако, насколько я помню о Starlink, его оборудование само по себе является клиентским маршрутизатором, который получил для вас /64, и, возможно, не поддерживает предоставление дополнительных делегаций вашему собственному маршрутизатору. Это типично для оборудования провайдера не учитывать больше чем одну подсеть, как и маршрутизаторы, предоставляемые провайдерами, обычно не позволяют определять статические маршруты LAN даже для IPv4 и заставляют вас использовать NAT внутри сети.
и установить /proc/sys/net/ipv6/conf/all/forwarding=1, т.е. NAT
Это совершенно не NAT. Не путайте IP-маршрутизацию с NAT. Исходящий NAT (маскарадирование адресов) – это отдельный шаг, выполняемый после маршрутизации и пересылки (поэтому обычно он находится в цепочке “postrouting” iptables), в то время как входящий NAT (известный как “перенаправление портов”) это также отдельный шаг, который происходит перед маршрутизацией.
Другими словами, NAT выполняется модулями iptables, в то время как маршрутизация даже без NAT потребует установки forwarding=1
.
Дополнение: межинтерфейсное перенаправление sysctl в IPv6 имеет другое значение; оно больше не контролирует фактическую передачу, а скорее включает другие “поведения маршрутизатора”. Поэтому вам нужно установить net.ipv6.conf.all.forwarding=1
, но net.ipv6.conf.WAN_IF.forwarding=0
.
Вы можете использовать NAT с IPv6 так же, как с IPv4 (используя действия ip6tables SNAT или MASQUERADE), просто это не “нормальный” способ делать вещи.
.
Ответ или решение
Чтобы настроить переадресацию IPv6 на CentOS 6 и обеспечить устройства в вашей локальной сети подключением к Интернету через IPv6, необходимо учитывать несколько важных моментов, которые касаются получения и распределения IP-адресов, а также настройки маршрутизации и трансляции сетевых адресов. Рассмотрим теоретическую часть, примеры и практическое применение этой конфигурации.
Теория
Понимание IPv6 и необходимости маршрутизации:
IPv6 предоставляет возможность автоматического получения IP-адресов и связей благодаря большому объему доступных адресов. Однако, чтобы полноценно использовать потенциал IPv6 в локальной сети, необходимо настроить маршрутизатор так, чтобы он мог раздавать эти адреса конечным устройствам. Это делается с помощью технологии Prefix Delegation (PD), которая позволяет запрашивать у провайдера блок адресов, а затем делегировать их внутри локальной сети.
Роль DHCPv6-PD:
DHCPv6 с функцией Prefix Delegation позволяет маршрутизатору получать по DHCP блок адресов от провайдера, который затем может быть распределен внутрь сети. Многие провайдеры, в том числе Starlink, могут предоставлять такой блок, например /64, что позволит вам назначать каждому устройству в сети свой глобальный IP-адрес, избегая необходимости NAT, как это обычно происходит в IPv4.
Примеры
Конфигурационные файлы и инструменты:
На CentOS 6 не все DHCPv6-клиенты поддерживают функции Prefix Delegation по умолчанию. Однако, "WIDE DHCPv6 Client" является одним из опций, который часто используется в Linux-системах. Если ваш маршрутизатор поддерживает SLAAC (Stateless Address Auto Configuration) или другой протокол автоматической настройки, вы сможете распределить IP-адреса без необходимости ручной настройки каждого устройства.
Настройка RADVD:
Для передачи конфигурации маршрутизации в локальной сети обычно используется демон "radvd" (Router Advertisement Daemon). Он передает в сеть объявления маршрутизатора, которые устройства могут использовать для самостоятельного назначения адресов:
# /etc/radvd.conf
interface eth0 {
AdvSendAdvert on;
prefix 2605:****:****:****::/64 {
AdvOnLink on;
AdvAutonomous on;
};
};
Применение
Пошаговая настройка маршрутизатора для IPv6 на CentOS 6:
-
Включение переадресации IPv6:
Убедитесь, что в файле/etc/sysctl.conf
включена переадресация для всех интерфейсов:net.ipv6.conf.all.forwarding=1 net.ipv6.conf.default.forwarding=1
Примените изменения:
sysctl -p
-
Настройка WIDE DHCPv6 Client:
Вам понадобится установить и настроить клиент для получения Prefix Delegation. Убедитесь, что у вас установлена поддержка DHCPv6:yum install dhcpv6-client
Проверьте документацию по настройке WIDE DHCPv6 для конкретной версии и конфигурации системы.
-
Настройка radvd:
Установите и настройтеradvd
для объявления маршрутизаторов в вашей сети:yum install radvd
Создайте или отредактируйте файл конфигурации
/etc/radvd.conf
, чтобы обеспечить раздачу сети /64, полученной ранее от вашего провайдера. -
Проверка маршрутизации и конфигурации:
После всех изменений выполните перезапуск сетевых сервисов:service network restart service radvd start
Проверьте, получило ли каждое устройство в сети свой глобальный IPv6-адрес автоматически через SLAAC, используя команду
ip -6 addr
. -
Диагностика:
Если устройства не получают IPv6-адреса или сеть не работает как ожидается, проверьте:- Конфигурацию вашего маршрутизатора и интерфейсов.
- Правильность анонсирования маршрутизаторов через радд.
- Наличие соединения у маршрутизатора с интернетом, используя инструменты типа
ping6
илиtraceroute6
.
Не забывайте, что NAT для IPv6 существует, но его лучше избегать, если это возможно, используя глобальные адреса. В случае проблем с получением PD от Starlink, обратитесь к их поддержке для получения помощи или разъяснений в отношении работоспособности их маршрутизации IPv6.