В наше время кажется почти невероятным работать на компьютере, не подключенном к сети. Электронная почта, просмотр веб-страниц и совместное использование файлов, это все настолько же привычно, как печать и просмотр информации на экране.
К счастью, Linux изначально создавался для работы с сетью. В сущности, работа с сетью -- это одна из сильных сторон Linux. Linux поддерживает популярные сетевые протоколы, такие как TCP/IP и SMB (NetBIOS), обладает усовершенствованными инструментами для мониторинга и фильтрации сетевого трафика. В Linux доступны такие службы как FTP, web-сервер, Windows файл- и принтсервер. Linux даже предоставляет возможность централизованного управления службами, Virtual Private Networking (VPN) и удаленного вызова процедур.
Сетевое оборудование
Linux может работать с любым сетевым оборудованием, для которого у него есть драйвер. Драйвера Linux либо встраиваются в ядро, либо компилируются как загружаемые модули. Многие распространенные сетевые карты по умолчанию поддерживаются ядром Linux. При выборе сетевого оборудования стоит использовать устройства, перечисленные в списке совместимых устройств "Hardware Compatibility List" (смотрите раздел Ресурсы ). Используйте самые последние версии дистрибутивов Linux.
Как правило, если вы используете совместимое сетевое оборудование, ваша карта будет автоматически распознана при инсталляции системы. Вы можете проверить сетевое оборудование, обнаруженное системой, используя команду ifconfig. По умолчанию ifconfig демонстрирует вам активные сетевые устройства. Для того чтобы увидеть все сетевые устройства, добавьте ключ -a:
Листинг 1. Использование ifconfig
В выше приведенном примере в системе есть только одна сетевая карта, идентифицированная как eth0. Адаптер lo -- это loopback (адаптер обратной связи), используемый системой для обращения к самой себе. Позднее мы рассмотрим команду ifconfig подробнее.
Имена сетевых устройств
В процессе конфигурации сетевым устройствам Linux присваиваются имена, состоящие из наглядной аббревиатуры и номера. Первое устройство данного типа имеет номер 0, остальные нумеруются 1, 2, 3 и т.д. Используется следующее соглашение о наименовании. Информация взята из руководства для сетевых администраторов Linux Network Administrator's Guide (ищите ссылку в конце статьи в разделе Ресурсы).
eth0, eth1 ...
Это интерфейсы Ethernet-карт. Используются для большинства Ethernet-карт, включая многие Ethernet-карты, подключаемые через параллельный порт.
tr0, tr1 ...
Это интерфейсы карт Token Ring. Используются для большинства карт Token Ring, включая карты, произведенные не компанией IBM.
s10, s11 ...
Это SLIP интерфейсы. SLIP интерфейсы связаны с последовательными портами в том порядке, в котором они назначаются для SLIP.
ppp0, ppp1 ...
Это PPP интерфейсы. Подобно SLIP интерфейсам, PPP интерфейс связывается с последовательным портом, как только он переходит в PPP-режим.
plip0. plip1 ...
Это PLIP интерфейсы. PLIP передает IP датаграммы через параллельные порты. Интерфейсы распределяются драйвером PLIP при загрузке системы и связываются с параллельными портами. В ядрах версий 2.0x существует прямая связь между именем устройства и портом ввода-вывода параллельного порта, а в ядрах более поздних версий имена устройств назначаются последовательно точно так же, как для SLIP и PPP устройств.
ax0, ax1 ...
Это AX.25 интерфейсы. AX.25 -- основной протокол, используемый для любительской радиосвязи. AX.25 интерфейсы распределяются и отображаются аналогично интерфейсам SLIP.
Есть еще немало других типов интерфейсов для других сетевых драйверов. Мы перечислили лишь самые распространенные.
Мы остановимся подробно на Ethernet, поскольку это наиболее распространенная сетевая конфигурация. Ссылки на информацию о других типах соединения вы можете найти в разделе Ресурсы в конце статьи.
Настройка сети
Настройка сети производится в процессе инсталляции вашего дистрибутива Linux. В исходной конфигурации у вас уже, вероятно, будет активное устройство eth0. Эта конфигурация может удовлетворять вас первое время, однако впоследствии вам, возможно, потребуется внести в нее изменения. Мы рассмотрим различные аспекты конфигурации, связанные с IP-сетями, файлами и утилиты для работы с ними.
Webmin
Webmin содержит хороший набор инструментов для настройки сети (Network Configuration) в разделе Networking. Вы можете настраивать интерфейсы по отдельности и менять их текущие или сохраненные установки. Кроме того, вы можете менять настройки Routing and Gateways, DNS Client, а также статическую таблицу для поиска имён узлов. После окончания конфигурирования вы можете применить новые установки, щелкнув на Apply Configuration. Перезагружать систему при этом не обязательно.
Утилиты, включенные в дистрибутивы
Каждый дистрибутив содержит собственный набор инструментов для настройки сети. Чтобы узнать, какие именно утилиты содержит ваш дистрибутив, обратитесь к его документации. Все утилиты содержат, по сути, те же настройки, что и Webmin. Некоторые из них могут содержать так же опции, характерные для данного дистрибутива.
Рисунок 4.3.1. Утилита redhat-config-network из Red Hat 8.x и 9.x
Рисунок 4.3.2. SuSE и United Linux используют утилиту YAST
Средства анализа и мониторинга
В Linux предусмотрено множество средств мониторинга сетевых задач.
ifconfig
Выше мы рассматривали, как, используя команду ifconfig, узнать статус сетевой карты. Однако, команда ifconfig служит не только для вывода информации об устройствах, но так же и для их настройки. Предположим, вы хотите настроить некую временную конфигурацию для тестирования. Вы можете отредактировать настройки, используя встроенные в дистрибутив инструменты, однако при этом вам придется запомнить все исходные установки, чтобы восстановить их в конце. Используя же команду ifconfig, вы можете быстро сконфигурировать карту, не затрагивая сохраненные настройки:
ifconfig eth0 192.168.13.13 netmask 255.255.255.0 up
Команда выше задает для eth0 адрес 192.168.13.13 в сети класса C и активирует устройство, если оно было отключено.
ipconfig eth0 down
Команда выше отключает устройство eth0. Полное описание команды ifconfig вы можете найти на странице info ifconfig.
ifup/ifdown
Команды ifup и ifdown служат для того, чтобы активировать и дезактивировать сетевые устройства, используя их сохраненные настройки.
# Активирует eth0 используя сохраненные настройки
ifup eth0
# Отключает eth0
ifdown eth0
netstat
Консольная команда netstat используется для вывода сетевых подключений, таблиц маршрутизации, статистики интерфейсов, маскарадинга и вхождения в multicast. Для управления командой netstat служат несколько ключей командной строки. Ниже приведены некоторые из наиболее употребляемых:
Вывод состояния сети
Пример netstat -tp:
Листниг 2. Использование netstat
Чаще всего используется команду netstat, чтобы увидеть соединения, которые находятся в состоянии LISTEN или ESTABLISHED. LISTEN означает, что в вашей системе есть службы, которые ожидают соединения от других машин. ESTABLISHED -- это активное соединение между вашей и другими машинами. Убедитесь, что вы знаете все работающие программы, использующие соединение LISTEN. Если вы видите что-то неизвестное, это может быть небезопасным явлением. netstat обладает большим количеством опций. Для получения подробной информации наберите в командной строке info netstat.
route
С помощью консольной команды route можно вывести на экран таблицу маршрутизации IP и оперировать с ней.
Листинг 3. Использование route
При вызове route без ключей будет отражена текущая таблица маршрутизации. Используя route, вы можете вносить очень тонкие изменения в содержимое таблицы маршрутизации.
route add default gw 10.10.10.1
Приведенная выше команда добавляет маршрут по умолчанию (маршрут, который будет использован, если все другие указанные маршруты не подходят). Все пакеты, использующие маршрут по умолчанию, будут направлены через шлюз "10.10.10.1". Устройство, которое будет фактически использоваться для этого маршрута, зависит от того, как мы можем достичь "10.10.10.1" - поэтому статический маршрут "10.10.10.1" должен быть настроен прежде всего.
route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
Приведенная выше команда добавляет маршрут к сети 192.56.76.x через устройство "eth0." В данном случае модификатор маски сети класса C не обязателен, так как адреса 192.* принадлежат сетям класса C. В этой команде "dev" может быть пропущено.
Маршрутизация – это очень объемная тема. Полную информацию об опциях route можно получить, набрав info route.