Linux для начинающих: работа в сети

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

Знатоки свободной ОС утверждают, что Linux создана для сети, как птица для полета. Правда, тут же делают поправку на то, что истинную мощь этой системы увидят только избранные, поскольку настройка сетевых интерфейсов занятие сложное и требующее серьезных знаний. 

Спорить с этим утверждением сложно, поскольку очевиден его всеобъемлющий характер. Действительно, не обладая специальными умениями, даже табуретки не сколотить. Тем не менее мы и тут имеем дело с некоторым преувеличением. Linux система простая. Пользователю Windows приходится держать в памяти значительно больше информации для того, чтобы обеспечить комфортную работу с ней. 

Дабы последнее утверждениене выглядело голословным, рассмотрим процедуру настройки сети в системе Linux. Причем, как это принято в мире свободного ПО, не один путь, а несколько вариантов. А пользователь сам выберет тот, который ему больше понравится.

Команда ifconfig

Как правило, подключение драйверов сетевых адаптеров происходит при установке системы. Чтобы убедиться в этом, достаточно в консоли набрать ifconfig -a. Кстати,данное название вовсе не является исковерканным имени команды ipconfig,знакомой пользователям Windows. Это просто сокращение от InterfaceConfiguration. 

В ответ пользователь получит информацию о характеристиках Ethernet-соединения и о параметрах так называемого кольцевого интерфейса. Первый обозначается как eth0 (если сетевых адаптеров несколько, то для каждого будет своя секция eth[порядковыйномер]), а второй как lo. 

Эту же команду можно использовать для активации интерфейса. Чаще всего она выглядит так:

ifconfig [обозначение интерфейса] [IP-адрес интерфейса] netmask [маска сети] broadcast [широковещательный адрес] up.

Впрочем,на практике все параметры можно и не указывать. Например, если маска сети и широковещательный адрес не задаются явно, то система применит стандартные значения (сетевой адрес с машинной частью 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 действительно создан для сети. И оценить это могут не только опытные пользователи, но и новички.

Автор: Сергей Голубев