Настройка сетевых параметров при помощи sysinstall во FreeBSD

Наиболее простой способ настройки сетевой карты заключается в применении утилиты sysinstall. При первом же запуске этой утилиты она выводит окно, в котором можно визуально настроить все опции TCP/IP для данной сетевой карты.

Самый простой способ запуска sysinstall, если система загружена в стандартном мно-гопользовательском режиме, - команда /stand/sysinstall. Далее необходимо в возникшем окне настройки выбрать пункт Configure из главного меню, а потом - опцию Media. Выберите пункт FTP и укажите любой FTP-сервер - появится диалоговое окно с воп-росом: Running multi-user, assume that the network is already configured? (Запустить мно-гопользовательский режим, предполагая, что сеть уже сконфигурирована?) Для входа в режим настройки сети выберите No.

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

Например, среди опций типа 1рО (порт принтера) и многочисленных опций типа РРР или SLIP обнаружатся что-то вроде giro и faithO. Они относятся к устройствам стан-дарта IPv6 и пока не нужны. Требуемые же опции, вероятно, будут перечислены в верхней части списка. В данном примере описана опция fxpl, соответствующая сетевой PCI-карте Intel EtherExpress Pro/100B.

Когда сетевая карта выбрана, система предложит сконфигурировать ее автомати-чески: сначала IPv6, а затем - DHCP. Откажитесь от этого предложения.

Каждый параметр в этом окне сопровождается кратким описанием в нижней части окна, здесь же приведены более подробные объяснения.

o Хост (Host). Это поле содержит имя компьютера, являющееся частью полного доменного имени. К примеру, если полный адрес компьютера выглядит как www.somewhere.com, то в поле хост должно быть www.

o Домен (Domain). А здесь хранится оставшаяся часть имени, т.е. somewhere.com. Разумеется, имя это может быть и более сложным и включать в себя подсети, что-нибудь вроде cslab.ivyleague.edu.

o Шлюз IPv4 (IPv4 Gateway). Здесь указан IP-адрес маршрутизатора, играющего роль шлюза. В качестве оного следует выбирать ближайший маршрутизаторов более высокого уровня, именно он будет отвечать за переадресацию трафика с конкрет-ного компьютера во внешний мир (и в другие подсети).

o Сервер имен (Name server). IP-адрес самого надежного сервера имен в настраи-ваемой подсети. В качестве сервера имен лучше всего использовать соответству-ющий сервер, предоставленный Интернет-провайдером.

o Адрес IPv4 (IPv4 Address). Здесь указывается IP-адрес, назначенный данной сетевой карте. Этот адрес должен входить в диапазон адресов той подсети, за которую отвечает маршрутизатор, записанный в поле IPv4 Gateway, поскольку именно маршрутизатор делит адреса на внешние и внутренние, сравнивая их с сетевой маской конкретной подсети.

o Сетевая маска (Netmask). Значение данного поля служит для определения при-надлежности пакетов к локальной (внутренней) или глобальной (внешней) подсе-ти. Для различных классов IP-адресов существуют значения маски по умолчанию: для класса С - 255.255.255.0, для класса В - 255.255.0.0 и для класса А - 255.0.0.0

o Дополнительные опции. В большинстве случаев пользователь не должен специ-ально что-то вносить в данное поле, за исключением случаев тонкой настройки, производимой администратором сети, например для повышения производительности. Любое значение, помещенное в это поле, автоматически добавляется в команду ifconfig, которая служит основой для работы утилиты sysinstall.

Указав значения всех вышеперечисленных опций, нажмите OK, и все новые настрой-ки будут подхвачены сетевой картой на лету, a sysinstall попытается установить со-единение с указанным FTP-сервером. Если попытка закончится неудачей, следует проверить правильность всех сделанных настроек.

Эти же операции по настройке сети выполняются и на этапе установки FreeBSD - на одной из ранних стадий установки появляется такое же окно настройки сети, где нужно указать правильные значения, особенно если речь идет об инсталляции системы по сети.

Настройка сетевых параметров вручную

Безусловно, использование утилиты sysinstall сильно облегчает настройку сети, но данная утилита недостаточна гибкая, чтобы решать некоторые задачи, возникающие при конфигурировании сети. В данном разделе описывается, как редактировать се-тевые настройки из командной строки. Естественно, что все эти действия может вы-полнять только суперпользователь.

ПРЕДОСТЕРЕЖЕНИЕ

Целый ряд функций, обсуждаемых в этом разделе, таких как добавление IP-псевдонимов или модификация таблицы маршрутизации, недоступны из sysinstall. Более того, если настроить сетевую карту вручную (например, связать с ней несколько IP-адресов), а затем запустить sysinstall, то можно потерять настройки, сделанные из командной строки. Дело в том, что sysinstall подходит для решения основных задач настройки сети, но в более сложных ситуациях этой утилиты следует избегать.

Использование ifconfig

Команда ifconfig (сокр. от Interface Configurator) - многоцелевое средство для изменения сетевых настроек на лету (без перезагрузки). Главное применение дан-ной команды заключается в привязке IP-адреса к сетевой карте (интерфейсу), но, как и многие другие команд UNIX, эта утилита имеет гораздо более широкую сферу применения. В этом разделе приводится описание наиболее часто используемых функций ifconfig. Более подробную информацию можно найти в man-страницах, посвященных этой команде.

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

# ifconfig fxpl

fxpl: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

inet6 fe80::2dO:b7ff:febd:5dl3%fxpl prefixlen 64 scopeid 0x2 inet 64.41.131.102 netmask OxffffffOO broadcast 64.41.131.255 ether 00:dO:b7:bd:5d:13

media: autoselect (lOObaseTX <full-duplex>) status: active supported media: autoselect lOObaseTX <full-duplex> lOObaseTX lObaseT/UTP <full-duplex> lObaseT/UTP

ПРЕДОСТЕРЕЖЕНИЕ

Конфигурационные примеры, приводимые в этом разделе, на практике почти наверняка приве-дут к тому, что система при изменении параметров сетевой карты закроет все сетевые соеди-нения. Другими словами, вряд ли стоит делать подобные настройки удаленно, используя telnet или ssh; сетевую карту нужно настраивать с консоли того компьютера, на котором эта карта установлена!

Так, например, для изменения IP-адреса, связанного с сетевой картой, нужно выполнить следующую команду:

# ifconfig fxpl 64.41.131.103

где 64.41.131.103 - новый адрес, a fxpl - интерфейс, которому он назначается. Такое задание IP-адреса, т.е. без указания сетевой маски, приводит к тому, что значение сетевой маски и широковещательного адреса система выставит по умолчанию, причем сделает это как для сети класса А, в чем можно убедиться, проверив новые настройки интерфейса fxpl:

inet 64.41.131.103 netmask Oxff000000 broadcast 64.255.255.255

Давайте заново повторим задание IP-адреса, но на этот раз для сети класса С. Для этого необходимо указать не только сам адрес, но и его сетевую маску. В команде ifconfig это достигается с помощью ключевого слова network, причем значение сетевой маски можно задавать в обычной форме, в шестнадцатиричной нотации или в виде симво-лического имени, определенного в файле /etc/networks:

# ifconfig fxpl 64.41.131.103 netmask 255.255.255.0

# ifconfig fxpl 64.41.131.103 netmask OxffffffOO

# ifconfig fxpl 64.41.131.103 netmask your-netmask

В команде можно указывать также и значение широковещательного адреса, хотя это не является необходимым. Широковещательный адрес вычисляется автоматически по заданным значениям IP-адреса и сетевой маски. Однако если при настройке сетевую маску пропустить, то не будет работать обратный ARP, поскольку по умолчанию пред-полагается значение сетевой маски для сети класса А. При указании широковещательного адреса обязательно указывайте одновременно и маску:

# ifconfig fxpl 64.41.131.103 netmask 255.255.0.0 broadcast

? 64.41.255.255

Иногда бывает необходимо указать также значение MTU (Maximum Transmission Unit, максимальный размер пакета данных) для конкретного сетевого интерфейса. По умолчанию значение MTU для сетевых карт равно 1500 (пакет длиной в 1500 байтов). Иногда, это значение MTU приходится изменять для уменьшения задержек при работе в низкоскоростных сетях. Выбором оптимального размера пакетов обычно занят маршру-тизатор, и его изменение требуется в исключительных случаях. Примером такой настройки может служить команда:

# ifconfig fxpl mtu 536

И наконец, еще одним секретом использования ifconfig является применение ключе-вого слова media. Оно позволяет выбирать тип сетевой карты из списка возможных. Это очень удобно в тех случаях, когда речь идет о сетевых картах, имеющих множество интерфейсов (как, например, у карты, изображенной на рисунке 22.4 в предыдущей главе), и вы хотите иметь возможность переключаться между ними. Допустим, что в компьютере установлена сетевая карта 10/100 Ethernet, а сетевой концентратор автома-тически определил скорость работы с такой картой в режиме полнодуплексной 100-мегабитной передачи, в то время как нужно ограничить эту скорость 10 Мбит, то решить эту задачу можно при помощи уже упомянутых ключевых слов media и mediaopt. Во-первых, нужно выяснить, что сообщает команда ifconfig fxpl о поддерживаемых типах среды передачи:

media: autoselect (lOObaseTX <full-duplex>) status: active supported media: autoselect lOObaseTX <full-duplex> lOObaseTX 10baseT/UTP <full-duplex> lObaseT/UTP

Вывод команды ifconfig показывает, что в текущий момент сетевая карта автома-тически настроена на максимально доступную для данной сети скорость (lOObaseTX <full-duplex>). Давайте перенастроим карту в режим работы lObaseT. Строка сооб-щает, что ключевой параметр для этого режима - 10baseT/UTP, к тому же доступен

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

autoselect

lOObaseTX <full-duplex>

lOOb aseTX

10baseT/UTP <full-duplex>

10baseT/OTP

Итак, для установки данного интерфейса в один из возможных режимов 10-мегабитной передачи (дуплекс или полудуплекс) применяются команды:

# ifconfig fxpl media 10baseT/UTP

# ifconfig fxpl media 10baseT/0TP mediaopt full-duplex

Ну а для обратной операции, т.е. для возврата к 100-мегабитной скорости работы, нужно выполнить команду:

# ifconfig fxpl media autoselect

Помните, что режим полного дуплекса означает возможность одновременного приема и передачи данных, так что режим lObaseT с полным дуплексом означает полные 10 Мбит в обоих направлениях, в то время как режим 10baseT с полудуплексом обеспечивает лишь суммарную скорость приема-передачи в 10 Мбит, т.е. второй вариант работает значительно медленнее. Причем концентратор в принципе не понимает полного дуплекса, работать в таком более скоростном режиме умеет только коммутатор.

СОВЕТ

Для более углубленного изучения этих вопросов полистайте man-страницы руководства, набрав, к примеру, команду man fxp

Команда route и настройка шлюза

До сих пор мы не упоминали о том, как задать маршрутизатор, являющийся шлю-зом, или DNS-сервер. А ведь это обязательная часть сетевых настроек (в рассмотренной выше утилите sysinstall они определяются одновременно). Начнем с маршрутизатора.

Определить шлюз в ifconfig нельзя, поскольку этот адрес не привязан к какомулибо конкретному сетевому интерфейсу. Однако таблица маршрутизации FreeBSD, позволяющая системе выполнять функции полноценного аппаратного маршрутизатора (см. главу 28), содержит запись маршрута по умолчанию (default route). По этому маршруту уходят все пакеты, адресованные во внешний мир. Именно установка маршрута по умолчанию и является настройкой шлюза.

Освоение команды route - чертовски трудная задача, не менее важная, чем изучение ifconfig. Однако для начала достаточно рассмотреть лишь два ключевых слова этой команды - add и delete.

ПРИМЕЧАНИЕ

Пока настройки выполняются из той же локальной сети, к которой принадлежит и настраива-емый хост под управлением FreeBSD, можно безбоязненно менять все маршруты - включая и маршрут по умолчанию. Потери сетевого соединения (ввиду изменений настроек этого самого

соединения] не будет. Но если попытаться сделать это при помощи удаленной telnet- или ssh-сессии, то вполне вероятна внезапная потеря сетевого соединения. Это аналогично тому, что происходит при работе с ifconfig.

В любом случае, прежде чем приступать к настройке, нужно проверить результат работы команды netstat -т. Эта команда отобразит маршрут по умолчанию в текущих настройках:

# netstat -rn

Routing tables

Internet:

Destination Gateway Flags Refs Use Netif Expire

default 64.41.131.1 UGSc 1 1 fxpO

. . .

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

# route delete default delete net default

# route add default 64.2.43.1

add net default: gateway 64.2.43.1

ПРИМЕЧАНИЕ

Команда route может вывести из себя кого угодно, поскольку в различных вариантах UNIX она воплощена по-разному. Причем различия эти едва различимы и относятся к синтаксису. Хотя функции, предоставляемые любой UNIX-платформой (будь то FreeBSD, Solaris, IRIX или Linux), очень похожи, способы получения этой функциональности могут быть очень разными. Чтобы получить наглядное представление о вышесказанном, проинсталлируйте сервис portsentry (из /usr/ports/security) и посмотрите содержимое файла /usr/local/etc/portsentry.conf. Этот конфигурационный файл, как правило, содержит не менее 9 различных способов (для 9 раз-личных платформ) установки тупикового маршрута, так называемой черной дыры.

Имя хоста (hostname)

Установка имени компьютера (hostname) - задача простая. Она решается с помо-щью команды hostname с одним-единственным параметром - полным доменным именем компьютера:

# hostname tiger.somewhere.com

Та же команда позволяет узнать текущее имя компьютера, причем как в полной (с доменной частью), так и в краткой (только имя хоста) форме:

# hostname

tiger.somewhere.com

# hostname -s

tiger

Сетевые настройки в файле /etc/rc.conf

Итак, мы познакомились с инструментарием, позволяющим настраивать IP-адрес, сетевую маску, имя хоста и маршрут по умолчанию, а теперь посмотрим, как все эти параметры можно настроить путем редактирования конфигурационного файла /etc/rc.conf (конфигурирование системы описано в главе 11).

Настройки по умолчанию система хранит в файле /etc/defaults/rc.conf, который лучше не трогать, а вот настройки, сделанные вами, можно найти в файле /etc/ rc.conf. Нужно учитывать, что установки по умолчанию пытаются охватить все воз-можные варианты конфигурации. Это значит, что в вашем конкретном случае их придется доработать, чтобы сделать работоспособными. Если при настройке Ethernet-карты вы пользовались утилитой sysinstall, то в результате ее работы в /etc/rc.conf были добавлены записи:

# - - sysinstall generated deltas - - #

ifconfig_fxpl="inet 64.41.131.102 netmask 255.255.255.0"

network_interfaces="fxpl fxpO loO"

defaultrouter="64.41.131.1"

hostname="tiger.somewhere.com"

ПРИМЕЧАНИЕ

Порядок записей /etc/rc.conf не имеет значения, поскольку сценарий загрузки считывает все эти параметры одновременно, каждый параметр - в соответствующую переменную окружения.

Как можно видеть, параметры, записанные в конфигурационный файл утилитой sysinstall, включают в себя перечень всех сетевых интерфейсов, установленных в системе (строка network_interfaces); строки ifconfig_xxx#, описывающие каждый от-дельно взятый интерфейс; и строки, содержащие имя хоста и маршрут по умолчанию (hostname и defaultrouter, соответственно). При загрузке системы все эти значения считываются в сценарий конфигурации на основании первого автоматического вы-полнения системой всех изученных в данной главе команд: ifconfig, route, и hostname.

Вы спросите, а как же DNS? Как уже говорилось, настройка DNS не настраивается при конфигурировании сети TCP/IP. DNS относится к прикладному уровню вспомогательных сервисов сети. Чтобы сеть корректно заработала, система доменных имен не нужна.

Работа с /etc/netstart

То, что система FreeBSD предоставляет пользователю сценарий /etc/netstart, - весьма любезно с ее стороны. Этот сценарий вовсе не является обязательной частью процесса загрузки, и его можно вообще удалить. Но учитывая те удобства, которые он дает, это было бы неразумно. По сути, во время загрузки все сетевые службы запускаются из этого сценария. Опытные системные администраторы помнят: в прошлом при добавлении каж-дого нового сетевого сервиса его приходилось вручную записывать в сценарии загрузки. Это была важнейшая часть конфигурирования. Что же касается сегодняшних версий FreeBSD, то в них все автоматически запускаемые при загрузке демоны четко разделены на пользовательские и системные: первые обитают в пользовательских загрузочных сценариях (это, к примеру, /etc/netstart), а вторые - в системных сценариях, в частности /etc/rc.network, выполняющихся при загрузке системы.

В функции сценария /etc/netstart входит отслеживание изменений в файле /etc/ rc.conf и запуск соответствующих сетевых сервисов. Вначале считываются записи из /etc/defaults/rc.conf; если нужно, они заменяются соответствующими записями из /etc/rc.conf. После чего последовательно запускаются скрипты /etc/rc.pccard и /etc/ rc.network. Следует помнить, что все записи в /etc/defaults/rc.conf и /etc/rc.conf до-ступны для сценария rc.network только во время загрузки системы и недоступны при запуске его вручную. Таким образом, сценарий /etc/netstart, по сути, является для rc.network оболочкой, позволяющей перезапускать сетевые сервисы в любое время.

Все рассмотренные нами команды - ifconfig, route, hostname - при загрузке за-пускаются из сценария /etc/rc.network, при этом учитываются различные условия и выполняется ряд проверок, что позволяет исключить использование неправильных синтаксических конструкций и неправомерных действий. Сценарий /etc/netstart - лучший способ ввести в действие текущие изменения в сетевых настройках. В любом случае это удобнее, чем ручной индивидуальный запуск каждой отдельной программы.

Однако есть здесь и подводные камни. Дело в том, что сценарий /etc/netstart осуществляет настройку маршрута по умолчанию при помощи команды route; но, как вы помните, нельзя добавить новый маршрут по умолчанию, не удалив старый. Беда в том, что сценарий /etc/rc.network (оболочкой которого является /etc/netstart) изначально предназначался для работы во время загрузки системы, когда параметры настройки, включая маршрут по умолчанию, еще не определены системой, а значит, и удалять командой route delete default ничего не нужно. Отсюда следует, что использование сценарий /etc/netstart предполагает два этапа, описанных в листинге 23.1:

Листинг 23.1 Перезапуск сетевых настроек при помощи /etc/netstart

# route delete default delete net default

# /etc/netstart

Doing stage one network startup: Doing initial network setup:. fxpO: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

inet6 fe80::2dO:b7ff:fec7:74fl%fxpO prefixlen 64 scopeid Oxl

inet 64.41.131.101 netmask OxffffffOO broadcast 64.41.131.255

ether 00:dO:b7:c7:74:fl

media: autoselect (lOObaseTX <full-duplex>) status: active

supported media: autoselect lOObaseTX <full-duplex> lOObaseTX lObaseT/UTP <full-duplex> lObaseT/UTP loO: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

inet6 fe80::l%loO prefixlen 64 scopeid 0x9

inet6 ::1 prefixlen 128

inet 127.0.0.1 netmask Oxff000000 add net default: gateway 64.41.131.1

Additional routing options: tcp extensions=NO TCP keepalive=YES. Routing daemons:.

Все это отлично работает, если сценарий запускается локально. Но если вы управ-ляете этим процессом откудато из локальной сети или Интернет (посредством telnet, например), вас поджидает коварная ловушка. Как только на удаленном хосте будет уничтожен маршрут по умолчанию, связь прервется. Таким образом, запустить вдогонку сценарий /etc/netstart, который бы переопределил новый маршрут по умол-

чанию, уже не удастся. Впрочем, есть одна хитрость, позволяющая избежать этой западни. Она заключается в том, что обе команды (первая удаляет маршрут по умол-чанию, вторая задает его новое значение) пересылаются на настраиваемый компьютер одновременно. Это можно сделать, набрав обе команды, разделенные точкой с запятой (;), в одной командной строке. Конечно, это рискованно, но если все прой-дет успешно, то удаленный хост выполнит обе команды, и сетевое соединение будет почти мгновенно восстановлено:

# route delete default; /etc/netstart

Создание IP-псевдонимов

He существует причины, из-за которой нельзя назначить одной сетевой карте сразу несколько IP-адресов. При доставке пакета система ищет хост по его 1Р-адре-су, запрашивая аппаратный адрес сетевой карты, к которой привязан искомый IP-адрес. А вот назначить один IP-адрес сразу нескольким интерфейсам нельзя. Одна сетевая карта может откликаться на несколько IP-адресов, но один и тот же IP-адрес не может быть присвоен нескольким МАС-адресам, иначе в сети возникнут ошибки и коллизии.

Способ, позволяющий закреплять несколько IP-адресов за одним аппаратным адресом (т.е. за одной сетевой картой) получил название IP-алиасинг (IP-aliasing). Причем, как и в случае с командой route, в разных UNIX-системах синтаксис назначения псевдонимов отличается. Во FreeBSD для этой цели служит команды ifconfig с ключевым словом alias, причем это слово должно быть самым последним параметром:

# ifconfig fxpl 64.41.131.103 netmask 255.255.255.255 alias

Обратите внимание на то, что здесь значение сетевой маски равно 255.255.255.255! Это обязательное условие при назначении такого IP-псевдонима, который принадлежит к той же локальной сети, что и основной IP-адрес настраиваемого интерфейса. (В противном случае.нужно использовать обычное для данной подсети значение маски.) Что же все это значит с точки зрения работы TCP/IP? Сетевая маска со всеми битами, равными 1. обеспечивает состояние, при котором стек TCP/IP будет обрабатывать только те пакеты, в которых адрес назначения во всех битах совпадает с номером подсети. Иначе говоря, создается подсеть с одним-единственным адресом. Таким образом, все пакеты, направляемые как на этот адрес-псевдоним, так и от него, посылаются исключительно через маршрутизатор. Псевдоним считается не принадлежащим к той подсети, в которой находится компьютер с данной сетевой картой. Если же многочисленные псевдонимы будут иметь одинаковую сетевую маску, то их широковещательные адреса также будут одинаковыми, что приведет к сбоям в работе стека протоколов TCP/IP. Использование маски со всеми единицами - это способ обмануть ifconfig и соотнести с одним интерфей-сом несколько IP-адресов.

Для того чтобы занести псевдонимы в файл /etc/rc.conf необходимо использовать запись вида ifconfig_xxx#_alias#, которая синтаксически работает подобно записи ifconfig_xxx#. Вот пример того, как могут выглядеть записи о псевдонимах в файле /etc/ rc.conf:

ifconfig_fxpl="inet 64.41.131.131 netmask 255.255.255.0" ifconfig_fxpl_aliasO="inet 64.41.131.132 netmask 255.255.255.255" ifconfig_fxpl_aliasl="inet 64.41,131.133 netmask 255.255.255.255"

ifconfig_fxpl_alias2="inet 64.41.131.134 netmask 255.255.255.255"

ifconfig_fxpl_alias3="inet 64.41.132.161 netmask 255.255.255.0"

ifconfig_fxpl_alias4="inet 64.41.132.165 netmask 255.255.255.255"

ifconfig_fxpl_alias5="inet 64.41.132.166 netmask 255.255.255.255"

Настройка имен и IP-адресов в файле /etc/hosts

Для удобства пользователей необходимо преобразовывать имена хостов в соответ-ствующие им IP-адреса. За решение этого вопроса отвечает служба DNS, но она пока не настроена. Для компьютеров локальной сети эту задачу можно решить при помощи файла /etc/hosts.

Файл /etc/hosts содержит записи, в каждой из которых указаны: IP-адрес, офици-альное имя хоста и другие имена-псевдонимы, разделенные пробелом или знаком табуляцией. Причем в момент разрешения имен, система, прежде чем формировать DNS-запрос, в первую очередь консультируется именно с записями в этом файле, другими словами, данный файл является в одно и тоже время как резервной копией сервера имен, так и перекрывающей его информацией о именах в тех случаях, когда сервер имен лишен корректных сведений. Ну а имена-псевдонимы используются как сокращенные имена для обозначения хостов сети.

Вот пример нескольких записей в /etc/hosts:

64.41.131.132 ns

64.41.131.133 www2

64.41.132.165 www3

114.235.123.11 www.foobar.com

ns.somewhere.com lion.somewhere.com

www2.somewhere.com

www3.somewhere.com

fred

При установлении сетевого сеанса связи с другим компьютером его можно вызывать либо по имени (вторая колонка), либо по псевдониму (третья колонка), а не по его IP-адресу (первая колонка).

Утилита ping

Сделав все необходимые сетевые настройки (с помощью sysinstall или /etc/netstart). необходимо убедиться, что сеть с настраиваемого компьютера видна и доступна. Сделать это можно с помощью программы ping, основанной на протоколе ICMP. Она посылает запрос на удаленный хост. Получив ответ или не дождавшись его, ping выдает стати-стику обмена пакетами между хостами: время пути в оба конца, процент потерь и т.п.

Использовать программу ping очень просто. В качестве параметра можно указывать как адрес удаленного компьютера, так и его имя (или псевдоним). Остановить ее работу можно, нажав Ctrl+C:

# ping fred

PING fred (114.235.123.11): 56 data bytes

64 bytes from 114.235.123.11: icmp_seq=0 ttl=243 time=485.344 ms

64 bytes from 114.235.123.11: icmp_seq=l ttl=243 time=351.589 ms

-- fred ping statistics 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 351.589/418.466/485.344/66.877 ms

Здесь мы видим результаты работы программы ping при корректных настройках TCP/IP: хост по имени fred ответил на эхо-запрос. Но если ответ на запрос не при-шел в течение определенного времени (тайм-аута), то удаленный компьютер счита-ется недостижимым и программа ping выдает отчет о стопроцентной потере пакетов. Это может означать и неверные настройки хоста, и обрыв кабеля, и неправильную работу DNS (если имел место запрос по имени), и то, что удаленный компьютер выключен.

# ping 64.41.131.133

PING 64.41.131.133 (64.41.131.133): 56 data bytes

ping: sendto: Host is down

ping: sendto: Host is down

ping: sendto: Host is down

ping: sendto: Host is down

^C

-- 64.41.131.133 ping statistics --

10 packets transmitted, 0 packets received, 100% packet loss

Настройки DNS в файле /etc/resolv.conf

Чтобы работать с полноценным DNS-сервисом, необходимо иметь доступ как ми-нимум к одному серверу имен, где бы он ни находился. Большинство серверов имен способны обрабатывать DNS-запросы, приходящие из любой части сети Интернет.

Список таких серверов хранится в файле /etc/resolv.conf.

search somewhere.com nameserver 64.41.131.132 nameserver 207.78.98.20 nameserver 64.40.111.102

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

Ключевое слово search определяет домен, в котором осуществляется поиск компью-тера с указанным именем, т.е. краткое имя преобразовывается в полное. К примеру, по команде nslookup www, осуществляется поиск адреса компьютера с полным именем www.somewhere.com. Причем в строке search файла /etc/resolv.conf можно указать не-сколько доменов, в которых должен осуществляться поиск:

search somewhere.com foobar.com cslab.ivyleague.edu

Технически, файл /etc/resolv.conf - это лишь запасной вариант, обеспечивающий работу DNS, что-то вроде знаменитого файла /etc/hosts. На самом деле система должна запустить свой собственный DNS-демон. Все, что касается запуска сервера имен, будет рассмотрено в главе 30, целиком посвященной этой теме.

СОВЕТ

Файл resolu.conf можно редактировать в любое время и без помощи каких-либо специальных команд для обновления баз данных имен. DNS-запросы генерируются сетевыми прикладными программами, а таблица, содержащаяся в файле resolu.conf каждый раз считывается заново. Поэтому можно открыть этот файл в любом текстовом редакторе, внести нужные изменения и сохранить изменения, после чего следующий DNS-запрос сформируется на основе обновленного файла resolv.conf.

Другие файлы конфигурации сети

Существует еще несколько ранее не упоминавшихся файлов конфигурации, ко-торые достойны краткого описания. Кстати, большинство файлов конфигурации снабжены руководствами по их заполнению и настройке. Чтобы открыть такое руко-водство просто, выполните команду man <filename>, к примеру man inetd.conf.

/etc/networks: Файл содержит символические имена подсетей, которые использу-ются, к примеру, в таблице маршрутизации.

/etc/hosts.allow: Это список правил безопасности, оговаривающий, с какими сер-висами каких хостов разрешен сетевой обмен для данного компьютера. Можно также указать, какие действия следует предпринять в том случае, если обнаружена попытка установления запрещенного соединение.

/etc/inetd.conf: Демон inetd, или суперсервер, отвечает за прослушивание сетевых портов и запуск соответствующего конкретному порту демона, если обнаружена попытка установить соединение с данным портом. Все разрешенные к запуску демоны должны быть указаны в /etc/inetd.conf (прослушиваются только порты, указанные в этом файле), а сами соединения должны удовлетворять установленным правилам безопасности для данного порта. Более подробно данный вопрос обсуждается в главе 29.

/etc/services: База данных, упорядоченная по типам существующих (но не обяза-тельно активных) IP-сервисов, с привязкой каждого сервиса к конкретному порту. Здесь хранится полезная справочная информация по сервисам и портам, как для программ, работающих с сетью, так и для системного администратора сети.

/etc/protocols: Содержит сведения о различных сетевых протоколах. Интересен в качестве эталонной информации об IP-протоколах.

/etc/rpc: Содержит сведения по таким сервисам, как NFS и NIS, их портам, а также информацию о различных программах, отвечающих за формирования отчетов по состоянию частей системы.

/etc/pam.conf: Pluggable Authentication Modules (подключаемые модули аутенти-фикации) отвечают за работу многоступенчатых систем аутентификации пользователя (например, S/Key, Kerberos и др.). Более подробная информация дана в главе 29.

/etc/host.conf: Этот файл определяет порядок, в котором производится поиск име-нованных ресурсов, позволяет задать приоритеты этого поиска и т.д. К примеру, настройка по умолчанию содержит запись hosts, за которой следует запись bind. Это означает, что при разрешении имен, система вначале консультируется с файлом hosts, а затем обращается к серверу имен. В пятой версии FreeBSD этот файл был заменен файлом /etc/nsswitch.conf. Его формат несколько отличается от формата файла hosts, так что почитайте руководство man nsswitch.conf.

Обновлено: 12.03.2015