Вопрос или проблема
У меня есть диапазон IPv6, который я пытаюсь назначить на сервере CentOS 6. Я обновил свои файлы для настройки IPv6:
[root@test ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=test.techsuccor.com
[root@test ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=82:d7:5d:50:c9:86
TYPE=Ethernet
UUID=8ea314f3-d89a-4a5c-9ede-64b6675cae71
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=180.149.X.X
NETMASK=255.255.255.0
DNS2=206.183.X.X
GATEWAY=180.X.X.X
DNS1=206.X.X.X
IPV6INIT=yes
USERCTL=no
IPV6ADDR=2001:0df3:3cXX::X/64
IPV6_DEFAULTGW=2001:0df3:3cXX::1
[root@test ~]#
С указанной выше конфигурацией я могу пинговать основной IPv6-адрес внутрь и наружу.
Используя опцию IPV6ADDR_SECONDARIES, я также могу добавлять адреса-алиасы и пинговать их внутрь и наружу.
IPV6ADDR_SECONDARIES="2001:0df3:3cXX::X1/64 \
2001:0df3:3cXX::X2/64 \
2001:0df3:3cXX::X3/64 \
2001:0df3:3cXX::X4/64 \
2001:0df3:3cXX::X5/64"
Что мне действительно нужно сделать, так это назначить полный диапазон IPv6 для одного сетевого интерфейса в качестве адресов-алиасов за один раз. Я могу сделать это с помощью команды ниже.
[root@test ~]# for ip in {4..10}; do /sbin/ifconfig eth0:1 inet6 add 2001:0df3:3c00::${ip}/64; done
Также после выполнения этой команды я вижу свои IPv6 адреса с помощью команды ifconfig, как показано ниже, но только основной IPv6 отвечает на пинг, и ни один из адресов-алиасов не отвечает снаружи. Кроме того, после перезагрузки сети все IP-адреса исчезают.
[root@test ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 82:D7:5D:50:C9:86
inet addr:180.149.XX.XX Bcast:180.149.XX.XX Mask:255.255.255.0
**inet6 addr: 2001:df3:3c00::10/64 Scope:Global
inet6 addr: 2001:df3:3c00::1/64 Scope:Global
inet6 addr: 2001:df3:3c00::3/64 Scope:Global
inet6 addr: 2001:df3:3c00::4/64 Scope:Global
inet6 addr: 2001:df3:3c00::5/64 Scope:Global
inet6 addr: fe80::80d7:5dff:fe50:c986/64 Scope:Link
inet6 addr: 2001:df3:3c00::6/64 Scope:Global
inet6 addr: 2001:df3:3c00::7/64 Scope:Global
inet6 addr: 2001:df3:3c00::8/64 Scope:Global
inet6 addr: 2001:df3:3c00::9/64 Scope:Global**
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:312539319 errors:0 dropped:0 overruns:0 frame:0
TX packets:1808219 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:22772397919 (21.2 GiB) TX bytes:312003644 (297.5 MiB)
Interrupt:165
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:16406 errors:0 dropped:0 overruns:0 frame:0
TX packets:16406 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2295915 (2.1 MiB) TX bytes:2295915 (2.1 MiB)
В теории, выглядит так, что IPV6ADDR_SECONDARIES
должен поддерживать диапазон в формате initscripts-ipv6:
3ffe:ffff::1f-2a
установит диапазон от "3ffe:ffff::1f" до "3ffe:ffff::2a"
На практике, NetworkManager от Redhat, похоже, не поддерживает этот формат.
Я думаю, что можно достичь этой цели, добавив несколько вторичных IPv6 адресов. Пожалуйста, отредактируйте ваш файл, как вы делали раньше, откройте файл vi /etc/sysconfig/network-scripts/ifcfg-eth0
и добавьте в таком формате (удалите ***)
IPV6ADDR_SECONDARIES="2001:0df3:3cXX::X1/64 \
2001:0df3:3cXX::X2/64 \
2001:0df3:3cXX::X3/64 \
2001:0df3:3cXX::X4/64 \
2001:0df3:3cXX::X5/64"
Если проблема все еще остается, пожалуйста, создайте виртуальные адаптеры для этого, и надеюсь, это решит вашу проблему.
Ответ или решение
Чтобы назначить несколько адресов IPv6-алиасов на один сетевой интерфейс в CentOS 6, выполните следующие шаги.
Шаг 1: Конфигурация интерфейса
-
Откройте файл конфигурации сетевого интерфейса для редактирования. В вашем случае это
ifcfg-eth0
:vi /etc/sysconfig/network-scripts/ifcfg-eth0
-
Убедитесь, что у вас есть следующие строки (замените значения на ваши собственные):
IPV6INIT=yes IPV6ADDR=2001:0df3:3cXX::X/64 IPV6_DEFAULTGW=2001:0df3:3cXX::1 IPV6ADDR_SECONDARIES="2001:0df3:3cXX::X1/64 \ 2001:0df3:3cXX::X2/64 \ 2001:0df3:3cXX::X3/64 \ 2001:0df3:3cXX::X4/64 \ 2001:0df3:3cXX::X5/64"
Параметр
IPV6ADDR_SECONDARIES
позволяет указать несколько адресов алиасов. Каждому алиасу необходимо задать свой уникальный адрес в определённом диапазоне.
Шаг 2: Перезапуск сетевых служб
После изменения конфигурации обязательно перезапустите сетевые службы для применения изменений:
service network restart
Шаг 3: Проверка работы адресов
После перезапуска службы проверьте, что все адреса правильно назначены, с помощью команды:
ifconfig
Вы должны увидеть все ваши назначенные IPv6-адреса, включая алиасы.
Решение проблем
-
Если вы видите адреса, но не можете к ним пинговать (например, с внешних источников), это может быть связано с настройками брандмауэра или маршрутизации IPv6. Проверьте настройки
iptables
и убедитесь, что они не блокируют входящие подключения по IPv6. -
В некоторых случаях система может не сохранять алиасы после перезапуска, особенно при использовании
NetworkManager
. Если это так, вам может потребоваться создать виртуальные адаптеры.
Примечание по Virtual Adapters
Если вышеуказанное решение не решает проблему, создание виртуальных интерфейсов может помочь. Это можно сделать следующим образом:
-
Создайте новый файл конфигурации, например,
ifcfg-eth0:1
, для виртуального интерфейса:vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
-
Вставьте туда следующие строки (замените на свои значения):
DEVICE=eth0:1 BOOTPROTO=none ONBOOT=yes IPV6ADDR=2001:0df3:3cXX::X1/64
-
Повторите для других алиасов (в создании дополнительных файлов
ifcfg-eth0:2
,ifcfg-eth0:3
и так далее).
Заключение
Следуя приведённым выше инструкциям, вы сможете назначить несколько IPv6-алиасов на один сетевой интерфейс и обеспечить их функционирование при перезагрузке. Если после выполнения всех шагов у вас остаются вопросы или проблемы, рекомендуется проверить журналы системы на наличие ошибок.