ПРЕФИКС против NETMASK

Я установил виртуальный сетевой интерфейс в Centos 6, скопировав ifcfg-eth0 в ifcfg-eth0:1 и изменив соответствующие переменные. Но связь была нестабильной. Хотя одна из ранее существовавших переменных была PREFIX=24 Я должен был добавить NETMASK=255.255.255.0 к сценарию виртуального интерфейса, чтобы сделать соединение стабильным. Разве эти переменные не имеют одинаковый эффект?

РЕДАКТИРОВАТЬ:

Это нестабильная ifcfg-eth0:1:

DEVICE="eth0:1"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=00:26:18:24:4D:xx
TYPE=Ethernet
BOOTPROTO=none
IPADDR=69.64.93.x
PREFIX=24
GATEWAY=64.150.183.1
DNS1=69.64.66.11
DNS2=69.64.66.10
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0:1"

В стабильной я только что добавил эту строку:

NETMASK=255.255.255.0

ifconfig вывод с нестабильным первым и стабильным после:

eth0:1    Link encap:Ethernet  HWaddr 00:26:18:24:4D:xx  
          inet addr:69.64.93.x  Bcast:69.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:28 Base address:0x6000 

eth0:1    Link encap:Ethernet  HWaddr 00:26:18:24:4D:xx  
          inet addr:69.64.93.x  Bcast:69.64.93.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:28 Base address:0x6000 

1 ответ

Проблема, вероятно, в том, что используемый вами IP-адрес сбивает с толку ipcalc, когда он пытается угадать NETMASK. Глядя на сетевые скрипты:

/etc/sysconfig/network-scripts/network-functions:
    133 expand_config ()
    134 {
    135     if [ -z "${NETMASK}" ]; then
    136         eval `/bin/ipcalc --netmask ${IPADDR}`
    137     fi
    138 
    139     if [ -z "${PREFIX}" ]; then
    140         eval `/bin/ipcalc --prefix ${IPADDR} ${NETMASK}`
    141     fi
    142 
    143     if [ -z "${BROADCAST}" ]; then
    144         eval `/bin/ipcalc --broadcast ${IPADDR} ${NETMASK}`
    145     fi
    146 
    147     if [ -z "${NETWORK}" ]; then
    148         eval `/bin/ipcalc --network ${IPADDR} ${NETMASK}`
    149     fi
    150 }

Скажем, вы используете 10.0.0.0 пробел, который технически находится в /8, если вы передадите это ipcalc:

# /bin/ipcalc --netmask 10.34.102.1 
NETMASK=255.0.0.0

Чтобы проверить, была ли это проблема, укажите свой адрес и посмотрите, вернет ли он значение, которое вы ожидали увидеть как NETMASK. Лично я думаю, что это действительно ошибка в CentOS, похоже, что если NETMASK имеет значение null, но указан PREFIX, он должен использовать это для установки NETMASK.

Другие вопросы по тегам