Когда я использую команду ifconfig, я получаю следующий результат:
eth0 Link encap:Ethernet HWaddr 2C:59:E5:49:54:10
inet addr:172.16.128.132 Bcast:172.16.128.255 Mask:255.255.255.128
inet6 addr: 2405:201:fffb:87:2e59:e5ff:fe49:7410/64 Scope:Global
inet6 addr: fe80::2e59:e5ff:fe49:7410/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20268132 errors:7874 dropped:0 overruns:7874 frame:0
TX packets:6389014 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:24111394418 (22.4 GiB) TX bytes:2699115198 (2.5 GiB)
Interrupt:32 Memory:f6000000-f67fffff
Как видите, интерфейс Ethernet имеет как IPv4, так и IPv6-адрес. Однако, если вы проверите содержимое /etc/sysconfig/network-scripts/ifcfg-eth0
файл ниже:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=172.16.128.132
NETMASK=255.255.255.128
GATEWAY=172.16.128.129
IPV6INIT=no
USERCTL=no
DNS1=172.16.46.142
Он не содержит IPv6-адреса. Почему это несоответствие? Адрес IPv6 настроен отдельно в другом месте?
RHEL: 6.5
Есть и другие способы присвоения IP-адресов интерфейсам, кроме сценариев в network-scripts
, например ip address add ...
команда, которая могла быть вызвана после загрузки системы. Или, может быть, ifcfg-eth0
сам скрипт был изменен с момента загрузки.
Вероятно, что в этом случае сервер динамически сгенерировал этот адрес после того, как услышал рекламу маршрутизатора от маршрутизатора в своей локальной сети (также известная как автоконфигурация адреса без состояния - SLAAC). Обычно маршрутизатор вводит его в адрес подсети, а сервер выбирает случайный адрес из него и принимает его (после проверки дубликатов).
Это немного сбивает с толку, что IPV6INIT=no
присутствует, и все же у нас все еще есть привязка к адресу, но, как я сказал выше, этого могло не быть в тот момент, когда интерфейс был инициализирован. Также при беглом поиске не совсем ясно, что эта команда на 100% эффективна - есть и другие факторы.