IP-адрес можно назначить непосредственно в командной строке ifconfig либо косвенным образом в файле. В примерах использования ifconfig, приведенных выше в тексте, адрес IP присутствует в командной строке в десятичной записи через точку. Как вариант, можно указать в качестве аргумента ifconfig имя узла из файла /etc/hosts. К примеру:

  • ifconfig dnet0 crab netmask 255.255.255.0

Большинству администраторов удобнее пользоваться именами узлов, а не адресами. Однако разработчики систем, выполняющие первичную настройку, обычно добавляют еще один уровень переадресации. Команда ifconfig из загрузочного сценария ссылается на файл. Файл содержит имя узла, а имя узла отображается в адрес. В системах Solaris имя узла размещается в файле с именем /etc/hostname.interface, где interface - имя интерфейса, подлежащего настройке. Для системы нашего примера файл называется /etc/hostname.dnet0. Файл hostname.dnet0, созданный при стандартной установке Solaris, содержит просто имя узла:

  • cat /etc/hostname.dnet0
crab
  • grep crab /etc/hosts
172.16.12.1 crab crab.wrotethebook.com loghost

Как видно из примера, система Solaris создала при настройке файл hostname.dnet0 и соответствующую запись в файле /etc/hosts, позволяющую выполнять отображение имени узла из файла hostname.dnetO в IP-адрес. В процессе загрузки Solaris берет имя узла из файла, а затем получает адрес, связанный с этим именем, из второго файла. Обе записи необходимы для процесса настройки.

В Linux также применяется косвенное указание адреса для ifconfig. Отдельные системы Linux, в частности Red Hat, Mandrake и Caldera, размещают значения настройки сетевого интерфейса в файле с именем lfcfg. interface, где interface - имя интерфейса.1 Например, ifcfg.eth0 содержит значения настройки для Ethernet-интерфейса eth0.

  • cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=ethO
0NB00T=yes
800TPR0T0=none
BR0ADCAST=172.16.12.255
NETVI0RK=172.16.12.0
NETNASK=255.255.255.0
IPADDR=172.16.12.2
USERCTL=no

Данный файл позволяет легко интерпретировать параметры настройки.


  • DEVICE определяет имя устройства, в данном случае - eth0.
  • ONBOOT указывает необходимость инициализации интерфейса при загрузке системы. Обычно интерфейс Ethernet инициализируется и начинает использоваться при каждой загрузке системы.
  • BOOTPROTO определяет службу настройки, посредством которой выполняется настройка интерфейса. Значение попе означает, что интерфейс будет настроен локальными средствами. Существуют также значения bootp (используется устаревший сервер BootP) и dhcp (используется сервер DHCP). В случае применения DHCP или BootP перечисленные ниже конкретные значения настройки в файле отсутствуют.
  • BROADCAST определяет широковещательный адрес для ifconfig.
  • NETWORK определяет адрес сети.
  • NETMASK определяет адресную маску для ifconfig.
  • IPADDR определяет IP-адрес для ifconfig.
  • USERCTL разрешает или запрещает пользователям запускать и останавливать интерфейс посредством usernetctl. Команда usernetctl существует далеко не во всех вариантах Linux. В данном примере значение по запрещает пользователям отключать интерфейс.

Большинство систем использует то преимущество, что IP-адрес, маска подсети и широковещательный адрес могут устанавливаться косвенно. Последнее обстоятельство позволяет минимизировать вносимые в загрузочные файлы коррективы. Сокращение вносимых исправлений снижает вероятность зависания системы в процессе загрузки из-за внесенного в загрузочный файл некорректного изменения, а также дает возможность заранее создать такие файлы для всех систем сети. Системы Solaris обладают дополнительным преимуществом: узлы, сети и файлы сетевых масок, используемые в работе команды ifconfig, могут служить источниками карт NIS. Картами NIS можно управлять централизованно.

Недостаток косвенного указания значений для ifconfig заключен в потенци-альном усложнении поиска неисправностей. Если все значения содержатся в загрузочном файле, их можно охватить за один прием. Когда сетевые настройки представлены ссылками, обнаружение проблемы может потребовать обращения к целому ряду файлов, а причина неработоспособности конфигурации может крыться в любом из них. В целях облегчения отладки в отдельных операционных системах параметры настройки указываются непосредственно в командной строке ifconfig, содержащейся в загрузочном файле.

Я рекомендую следовать стандартным методам, принятым для конкретной системы. Если используется система Solaris, указывайте адрес при помощи файлов /etc/hostname.dnet0 и /etc/hosts. В случае системы Red Hat указывайте адрес в файле /etc/sysconfig/network-scripts/ifcfg.eth0. В случае системы Slackware указывайте адрес непосредственно в загрузочном файле rc.inet. Следование принятым для системы методам облегчает отладку компьютера для всех администраторов, имеющих к нему доступ. В процессе изучения оставшихся параметров настройки интерфейса мы рассмотрим и другие альтернативы.