Корректная работа всех интерфейсов конкретного сегмента сети требует одинаковой адресной маски. Значение сетевой маски для узлов crab и rodent -255.255.255.0, поскольку обе системы входят в одну подсеть. Но, хотя локальный и внешний сетевой интерфейсы узла crab сосуществуют на одном компьютере, они имеют разные сетевые маски, поскольку принадлежат к различным сетям.

Чтобы назначить адресную маску, укажите ее значение после ключевого слова netmask в командной строке ifconfig либо в качестве префикса, связанного с адресом. При записи в качестве префикса адресная маска представляется десятичным числом, определяющим число битов в адресной маске. Так, значение 172.16.12.2/24 задает 24-битную адресную маску. При записи в качестве аргумента ключевого слова netmask маска, как правило, представляется в десятнчной записи через точку, то есть в формате IP-адресов. Следующая команда назначает корректную маску подсети интерфейсу dnetO узла rodent:

  • ifconfig 1е0 172.16.12.2 netmask 255.255.255.0

Указание значения маски непосредственно в командной строке ifconfig - это самый распространенный, простой и оптимальный способ ручного назначения маски для интерфейса. Однако она редко задается вручную. Подобно адресам, адресные маски используются в настройке, выполняемой в процессе первичной установки системы, ifconfig, в целях упрощения настройки, может читать значение сетевой маски из файла. Такой способ схож с указанием имени узла вместо IP-адреса. Администратор может разместить значение маски в файле узлов (hosts) либо в файле сетей (networks), а затем ссылаться на маску по имени. К примеру, администратор сети books-net может добавить следующую запись в файл /etc/networks:

books-mask 255.255.255.0

Теперь имя books-mask в командной строке ifconfig может замещать значение маски. К примеру, так:

  • ifconfig dnetO 172.16.5.2 netmask books-mask

Имя books-mask отображается в значение 255.255.255.0, которое представляет корректную маску для систем из нашего примера.

Лично я стараюсь избегать косвенного указания значений масок в файлах, главное назначение которых в другом. Файл узлов (hosts) - вдвойне плохой вариант для хранения значений масок. Файл узлов постоянно используется многочисленными программами, и значение маски, хранимое в файле, может смутить какие-либо из этих программ. Вероятно, оптимальным подходом является указание маски непосредственно в командной строке либо хранение ее в специальном файле.

В системах Solaris под хранение масок подсетей отведен файл /etc/inet/net-masks. Файл состоит из однострочных записей; каждая запись содержит адрес сети, отделенный пробелом от маски.3 Если система Solaris сети books-net (172.16.0.0) содержит в файле /etc/inet/netmasks такую запись:

172.16.0.0 255.255.255.0

следующая команда ifconfig может применяться для указания адресной маски:

  • ifconfig dnetO 172.16.5.1 netmask +

Знак «плюс» после ключевого слова netmask предписывает ifconfig прочитать значение маски из файла /etc/inet/netmasks.ifconfig ищет в файле адрес сети, соответствующий адресу настраиваемого сетевого интерфейса. Для настройки интерфейса используется маска, связанная с его адресом.

В большинстве систем Linux адресные маски также косвенно определяются в файлах. Файл ifcfg-eth0 из предыдущего раздела содержит такую строку:

NETMASK=255.255.255.0

Эта строка четко указывает значение маски, используемое командой ifcon-fig. Чтобы изменить адресную маску в данной системе Red Hat, отредактируйте строку в файле ifcfg-eth0.