Современный компьютер предоставляет пользователю
много возможностей, без доброй половины которых он мог бы запросто
обойтись. В сети по сей день идут дебаты о том, нужны ли ему 3D-графика
и высококачественный звук. Однако есть одна функция, необходимость
которой не оспаривается ни кем, это выход в сеть.
Знатоки
свободной ОС утверждают, что Linux создана для сети, как птица для
полета. Правда, тут же делают поправку на то, что истинную мощь этой
системы увидят только избранные, поскольку настройка сетевых
интерфейсов занятие сложное и требующее серьезных знаний.
Спорить
с этим утверждением сложно, поскольку очевиден его всеобъемлющий
характер. Действительно, не обладая специальными умениями, даже
табуретки не сколотить. Тем не менее мы и тут имеем дело с некоторым
преувеличением. Linux система простая. Пользователю Windows приходится
держать в памяти значительно больше информации для того, чтобы
обеспечить комфортную работу с ней.
Дабы последнее утверждение
не выглядело голословным, рассмотрим процедуру настройки сети в системе
Linux. Причем, как это принято в мире свободного ПО, не один путь, а
несколько вариантов. А пользователь сам выберет тот, который ему больше
понравится. Команда ifconfig
Как правило, подключение
драйверов сетевых адаптеров происходит при установке системы. Чтобы
убедиться в этом, достаточно в консоли набрать ifconfig -a. Кстати,
данное название вовсе не является исковерканным имени команды ipconfig,
знакомой пользователям Windows. Это просто сокращение от Interface
Configuration.
В ответ пользователь получит информацию о
характеристиках Ethernet-соединения и о параметрах так называемого
кольцевого интерфейса. Первый обозначается как eth0 (если сетевых
адаптеров несколько, то для каждого будет своя секция eth[порядковый
номер]), а второй как lo.
Эту же команду можно использовать для активации интерфейса. Чаще всего она выглядит так:
Впрочем,
на практике все параметры можно и не указывать. Например, если маска
сети и широковещательный адрес не задаются явно, то система применит
стандартные значения (сетевой адрес с машинной частью 255 и маской
255.255.255.0).
Для активации PLIP, SLIP и РРР необходимо использовать опцию pointopoint. При этом интерфейсы будут именоваться так: plip[порядковый номер начиная с нуля] для PLIP; slip[порядковый номер начиная с нуля] для SLIP; ppp[порядковый номер начиная с нуля] для PPP. Например,
для того чтобы сконфигурировать интерфейс PLIP, соединяющий два
компьютера с адресами [адрес1] и [адрес2], следует в консоли набрать: ifconfig plip0 [адрес1] pointopoint [адрес2].
Отключение
интерфейса производится командой ifconfig [обозначение интерфейса]
down. Таким образом, используя всего одну команду, вы можете управлять
сетевым устройством. И разумеется, держать в памяти все ее опции нет
никакого смысла если что-то забыли, то man ifconfig всегда придет на
помощь. Команда route
Команда route отвечает за
маршрутизацию. То есть она указывает системе, на какой сетевой
компьютер должны передаваться пакеты, чтобы достичь пункта назначения.
Данная команда выводит на экран таблицу маршрутизации. При этом каждая запись состоит из нескольких полей: Destination IP-адрес конечного пункта маршрута; Gateway IP-адрес или имя шлюза (если его нет, то используется символ *); Genmask маска сети маршрута;
Flags указатель типа или состояния маршрута (может принимать
следующие значения: U активный, Н хост, С шлюз, D динамический,
М модифицированный); MSS максимальное количество данных, предаваемых за один раз; Metric число переходов до шлюза; Ref количество обращений к маршруту на определённый момент времени; - Window максимальное количество данных для принимающей стороны; Use число пакетов, переданных по маршруту; Iface тип интерфейса.
Чтобы
добавить адрес в таблицу маршрутизации, надо использовать команду route
с ключом add. При этом следует учесть, что если соответствующий
интерфейс уже сконфигурирован при помощи ifconfig, то система сама
может получить сведения о нем. В таком случае нет смысла в употреблении
спецификаторов достаточно указать адрес пункта назначения. Все
остальные данные будут избыточными, а стало быть, и необязательными.
Очевидно,
что для работы в сети в таблице маршрутизации должна быть сделана хотя
бы одна запись. Пункт назначения по умолчанию обозначается меткой
default.
Для удаления маршрута используйте команду route del -net [IP-адрес пункта назначения]. Другие команды
Если
настройки интерфейса хранятся в системе, то для быстрой активации и
деактивации можно использовать команды ifup и ifdown следующим образом:
ifup [обозначение интерфейса] для включения. ifdown [обозначение интерфейса] для отключения.
Для
вывода на экран списка сетевых подключений, таблиц маршрутизации,
статистики интерфейсов и т. п. применяется команда netstat. Помимо
всего прочего она позволяет отобразить статус соединения, что полезно
при анализе системы на предмет её безопасности.
Например,
LISTEN означает, что служба ждет соединения с другой машиной, а
ESTABLISHED говорит о том, что оно уже установлено. Если нет запущенных
программ, для которых такое состояние является нормальным, то это может
быть небезопасным и свидетельствовать об атаке на хост. Конфигурационые файлы
Указанных
выше команд вполне достаточно для настройки сети. Однако у этих утилит
есть один существенный недостаток: результат их работы будет
действителен в течение только одной сессии. После перезагрузки все
придется начинать сначала. По этой причине значительно удобнее один раз
отредактировать конфигурационные файлы.
Несмотря на то что их
устройство не зависит от дистрибутива, располагаться они могут в разных
местах. Например, в Debian за настройку интерфейсов и маршрутизации
отвечает файл /etc/init.d/network, а в Slackware (MOPS, Zenwalk)
/etc/rc.d/rc.inet1. На этот счет можно дать только один универсальный
совет: приступая к работе с тем или иным продуктом, обязательно
ознакомьтесь с технической документацией.
В качестве примера
рассмотрим дистрибутив ASPLinux. Для хранения настроек сетевых
интерфейсов там используется каталог /etc/sysconfig/network-scripts/.
Каждый из них определяется файлом ifcfg-[обозначение интерфейса].
Этот файл состоит из строк вида: [параметр]=[значение]. Параметры могут быть следующие: NAME произвольное название соединения; DEVICE обозначение интерфейса; IPADDR IP-адрес интерфейса; NETMASK маска сети; GATEWAY IP-адрес шлюза; ONBOOT указатель на необходимость активации во время загрузки; USERCTL указывает на то, что активировать интерфейс может обычный пользователь; MTU значение MTU (максимальный размер пакета, передаваемого через интерфейс); PEERDNS указывает на необходимость использования серверов DNS, полученных при активации интерфейса; DNS1, DNS2 IP-адреса первичного и вторичного серверов DNS;
BOOTPROTO указатель режима настройки интерфейса (none при помощи
пользовательских параметров, boottp или dhcp при помощи
соответствующих протоколов).
За настройку DNS отвечают файлы
/etc/host.conf и /etc/resolv.conf. Первый из них это обычный
текстовый файл, в котором задаются правила работы подсистемы поиска
имен и адресов узлов. Его устройство типично для всех объектов такого
типа в каждой строке содержится параметр и его значения (их может
быть несколько).
Параметр order задает метод поиска IP-адреса
узла. Он может принимать следующие значения: bind (использовать сервер
DNS), hosts (использовать локальную базу адресов), nis (использовать
сервер NIS). Они должны располагаться в том порядке, в котором будет
осуществляться поиск.
Для описания исключений предназначен
параметр trim. В соответствующей строке задается домен, который будет
автоматически удаляться из имени.
Параметр reorder может
принимать значения on/off. Он отвечает за включение режима работы, при
котором локальные адреса получают приоритет перед всеми найденными.
Spoofalert включает режим записи в системный журнал результатов
проверки ложных имен. А multi позволяет настроить метод обработки
локальной базы узлов. Разумеется, все параметры указывать не
обязательно. На практике часто встречаются файлы /etc/host.conf,
состоящие из двух строк.
Файл /etc/resolv.conf описывает
некоторые параметры, которые используются подсистемой поиска имен. Он
может состоять из следующих строк: nameserver адреса серверов DNS; domain имя локального домена для поиска адресов в локальной сети; search список доменов для поиска адресов.
Очевидно,
что параметры domain и search не могут быть актуальными одновременно.
Если система обнаружит это противоречие, то будет учитывать только
последнюю запись.
А может ли Linux вообще не использовать
сервер имен? Теоретически да, хотя на практике описанный ниже способ
применяется только в очень маленьких сетях, где другие методы не
оправданны.
Способ заключается в использовании файла
/etc/hosts. Он представляет собой список имен хостов и их IP-адресов,
причем для одного адреса можно указывать несколько имен. Графические средства настройки
Хотя
настройка сети путем прямого редактирования конфигурационных файлов
задача не очень сложная, практически все современные дистрибутивы
предлагают пользователю графические инструменты, предназначенные для её
решения. Даже Zenwalk, который не принято считать дружественным в
Windows-понимании этого слова, позволяет сконфигурировать сетевые
интерфейсы без помощи командной строки.
Причем сегодня мы уже
вправе говорить о том, что помимо элементарных настроек пользователь
может выполнять довольно сложные операции. В частности, еще несколько
лет назад тема о настройке VPN-соединения в Linux занимала заметное
место на форумах технической поддержки и все предлагаемые способы
решения этой проблемы никак нельзя было назвать простыми. Но времена
меняются.
Так, пользователи дистрибутива Linux XP Desktop
настраивают VPN-соединение при помощи удобного инструмента с
графическим интерфейсом, который устроен даже проще, чем аналогичное
средство в Windows. Примерно то же самое предлагают потребителю
ASPLinux, Mandriva и SuSE Linux.
В общем, Linux действительно создан для сети. И оценить это могут не только опытные пользователи, но и новички.