Linux в Сети. Сага третья
Сегодня мы продолжаем рассматривать взаимосвязь Linux и Сети и поговорим об интерфейсах и маршрутах. Итак, Сага третья, интерфейсно-маршрутная.
Соединение с сетью система устанавливает посредством конкретного аппаратного интерфейса (к примеру, Ethernet-платы или модема). Данные, проходящие через этот интерфейс, направляются в сеть. Команда ifconfig позволяет нам сконфигурировать сетевые интерфейсы, а команда route обеспечивает необходимую маршрутизацию. Те же операции конфигурирования сетевых интерфейсов, которые выполняются с помощью команд ifconfig и route, можно реализовать воспользовавшись утилитой netcfg, знакомой нам по системе Caldera. Я считаю, что эта программа является довольно удобным инструментом для настройки сети. Если вы найдете эту утилиту и будете конфигурировать интерфейс с помощью нее, то прибегать к помощи команд ifconfig и route не потребуется. Если же вы работаете в другой Linux-системе, попробуйте воспользоваться утилитой netconfig, которая аналогична netcfg. Однако при желании можно конфигурировать интерфейс непосредственно с помощью команд ifconfig и route.
При каждом запуске системы сетевые интерфейсы и таблицы маршрутизации необходимо конфигурировать заново. Эта задача может решаться автоматически на этапе начальной загрузки. Для этого необходимо поместить команды ifconfig и route для каждого интерфейса в файл инициализации сети /etc/re.d/init.d/lnet, который выполняется каждый раз, когда система запускается. Некоторые настроечные утилиты выполняют эту операцию самостоятельно.
Утилита ifconfig
В качестве аргументов команда ifconfig использует имя интерфейса и IP-адрес совокупно с рядом опций. Команда ifconfig используется для того, чтобы присвоить заданному сетевому интерфейсу указанный IP-адрес. Таким образом, утилита дает вашей системе знать о том, что данный интерфейс существует и что она обращается к нему по указанному IP-адресу. Кроме того, можно указать, каким адресом является IP-адрес — адресом хост-компьютера или адресом сети. Вместо IP-адреса можно использовать доменное имя при условии, что оно указано вместе с IP-адресом в файле /etc/hosts. Команда ifconfig имеет следующий синтаксис:
ifconfig интерфейс -хост_сеть_флаг адрес опции
Флаг -хост_сеть_флаг может принимать одно из двух значений — -host или -net. Флаг -host свидетельствует о том, что данный IP-адрес является адресом хост-компьютера, a -net означает, что данный IP-адрес являете адресом сети. По умолчанию принимается флаг -host.
У команды ifconfig есть несколько опций, которые задают различные характеристики интерфейса, например, максимальное число байтов, которое он может передать за один раз (mtu), широковещательный адрес и т.д. Опция up активизирует интерфейс, а опция down деактивизирует его. В следующем примере команда ifconfig используется для конфигурирования интерфейса Ethernet.
ifconfig ethO 196.164.0.56
Для такой простой конфигурации, как эта, ifconfig автоматически создает стандартный широковещательный адрес и маску сети. Стандартный широковещателъный адрес — это сетевой адрес с машинной частью, указанной как 255 (стандартная маска сети, как вы уже знаете — 255.255.255.0). Если же вы подключены к сети с другой сетевой маской и конкретным широковещательным адресом, их необходимо указать в командной строке ifconfig. Широковещательный адрес указывается в опции broadcast, а маска сети — в опции netmask. Опции команды ifconfig можно получить выполнив ее с параметром --help. В следующем примере ifconfig задает сетевую маску и широковещательный адрес:
ifconfig eth0 196.32.0.56 broadcast 196.128.224.127 netmask 255.255.255.0
Интерфейсы типа "точка-точка" — такие, как PLIP (межсетевой протокол для параллельного канала), SLIP (межсетевой протокол для последовательного канала) и РРР (протокол "точка-точка"), требуют включения в команде ifconfig опции pointopoint. Имя интерфейса PLIP обозначается словом plip и номером, например, plip0 — это первый интерфейс PLIP. Интерфейсы SLIP имеют имена slip0, slip1 и т.д., а интерфейсы РРР — имена ррр0, ррр1 и т.д. Двухточечные интерфейсы — это интерфейсы, работающие, как правило, между двумя хост-компьютерами, например, между двумя машинами, соединенными через модем. Устанавливая опцию pointopoint, необходимо указать IP-адрес хост-машины. Позже мы посмотрим, как с помощью интерфейсов SLIP и РРР можно связываться по телефонной линии с интернет-провайдером и устанавливать с ним соединение.
В следующем примере показано, как конфигурируется интерфейс PLIP, который соединяет компьютер, имеющий IP-адрес 196.162.0.72, с компьютером, адрес которого 222.166.224.14 (если в файле /etc/hosts указаны доменные имена этих систем, то вместо IP-адресов можно использовать их доменные имена):
ifconfig plip0 196.162.0.72 pointopoint 222.166.224.14
В случае необходимости можно с помощью команды ifconfig конфигурировать закольцовывающий интерфейс. Этот интерфейс имеет имя lо и специальный IP-адрес, 127.0.0.1. Процедура конфигурирования закольцовывающего (loopback) интерфейса выглядит так:
ifconfig 1о 127.0.0.1
Команда ifconfig также очень полезна для проверки статуса интерфейса. Если ввести ее только с именем интерфейса, то ifconfig выдаст информацию об этом интерфейсе:
ifconfig eth0
Чтобы посмотреть, конфигурирован ли закольцовывающий интерфейс, нужно дать команду ifconfig с именем этого интерфейса, lо:
ifconfig 1о
Маршрутизация
Пакет, являющийся частью передаваемых данных, на пути в пункт своего назначения проходит по определенному маршруту. В крупных сетях пакеты передаются из одного компьютера в другой до тех пор, пока не попадут к адресату. Маршрут определяет начальную точку процесса передачи пакета и показывает, какому компьютеру ваша система должна передать пакет, чтобы он достиг пункта назначения. В небольших сетях маршрутизация может осуществляться статически, т.е. маршрут, ведущий от одной системы к другой, строго фиксирован. В более крупных сетях и в сети Internet маршрутизация осуществляется динамически. Ваша система знает, какому компьютеру пакет должен быть послан вначале. Этот компьютер принимает пакет и передает его другому компьютеру, который определяет, куда следует передать пакет дальше. При динамической маршрутизации ваша система должна знать очень мало. Статическая маршрутизация может быть очень сложной, поскольку необходимо отслеживать все сетевые соединения.
Маршруты содержатся в таблице маршрутизации, которая хранится в файле /proc/net/route. Чтобы вывести ее на дисплей, нужно дать команду route без аргументов:
route
Каждая запись таблицы маршрутизации состоит из нескольких полей, содержащих такую информацию, как, например, конечный пункт маршрута и тип используемого интерфейса. Поля таблицы маршрутизации сведены в следующую таблицу.
В таблице маршрутизации должна содержаться по крайней мере одна запись, предназначенная для закольцовывающего интерфейса, иначе этот интерфейс необходимо сконфигурировать командой route. IP-адрес интерфейса нужно ввести в таблицу до того, как этот интерфейс будет задействован. Адрес добавляется с помощью команды route с опцией add:
route add адрес
Добавленный в таблицу маршрутизации IP-адрес закольцовывающего интерфейса выглядит так:
route add 127.0.0.1
Опция add имеет несколько спецификаторов (можно узнать в man-страницах). Если вы добавляете конкретный статический маршрут, то эти спецификаторы понадобятся для ввода таких параметров, как маска сети, шлюз, интерфейс и адрес пункта назначения. Если же интерфейс уже конфигурирован командой ifconfig, то система может получить основную информацию из данных конфигурации интерфейса. Например, чтобы задать маршрут для Ethernet-соединения, которое уже конфигурировано командой ifconfig, нужно лишь ввести спецификатор -net и IP-адрес пункта назначения. С помощью этого адреса ifconfig находит соответствующий интерфейс и на основании этой информации организует маршрут. Задание маршрута для интерфейса Ethernet выглядит так:
route add -net 196.162.0.0
Если система подключена к сети, в таблице маршрутизации должна быть сделана по крайней мере одна запись, задающая маршрут по умолчанию.
По этому маршруту пакет посылается в том случае, если все остальные маршруты не могут привести его в пункт назначения. Пункт назначения для такого маршрута задается ключевым словом default.
Если нужно удалить один из существующих маршрутов, следует вызвать команду ifconfig с опцией del и IP-адресом маршрута, например:
route del -net 196.162.0.0
Подготовил X-Stranger© компьютерная газета