План перехода с Windows на Linux: Часть 7. Работа с сетью

Краткое руководство по работе с сетью в Linux

Создатель e-business приложений компании IBM Chris Walden, будет вашим проводником в серии из девяти статей с сайта IBM developerWorks, посвященных переориентации ваших навыков в работе с Windows окружением к работе в среде Linux. Он затрагивает все вопросы, начиная от регистрации до настройки сети и от командной строки до справочных систем - и даже о компиляции пакетов из исходного кода. В этой части мы рассмотрим работу с сетью - одну из традиционно сильных сторон Linux.

Крис Волден, e-business архитектор, IBM

Крис Волден (Chris Walden) -- e-business архитектор в IBM Developer Relations Technical Consulting, Остин, штат Техас, он занимается образовательской деятельностью, внедрением и консультированием среди бизнес-партнеров IBM. Он -- официальный местный фанатик Linux и распространяет хорошие новости среди тех, кто их слушает. Помимо исполнения обязанностей архитектора он управляет всеми Linux-серверами инфраструктуры, которые содержат файловые сервисы, сервисы печати и другие прикладные сервисы в кроссплатформенном пользовательском окружении. Имеет десятилетний опыт работы в компьютерной отрасли от осуществления поддержки до разработки Web-приложений и консалтинга.



05.04.2007

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

К счастью, 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
refname: ifconfig-a

[root@cmw-t30 root]#  ifconfig -a 
eth0      Link encap:Ethernet  HWaddr 00:09:6B:60:8B:1E
          inet addr:9.41.209.160  Bcast:9.41.209.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:47255 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32949 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:22140365 (21.1 Mb)  TX bytes:13519623 (12.8 Mb)
          Interrupt:11 Base address:0xf000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1308081 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1308081 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:183376967 (174.8 Mb)  TX bytes:183376967 (174.8 Mb)

В выше приведенном примере в системе есть только одна сетевая карта, идентифицированная как 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. Перезагружать систему при этом не обязательно.

Localhost

Статическая таблица для поиска имён узлов содержится в файле /etc/hosts. Этот файл является аналогом файла C:\winnt\system32\drivers\etc\hosts. Записи в этом файле содержат альтернативные имена для IP адресов и используются для назначения имен без обращения к DNS.

127.0.0.1 localhost.localdomain localhost
10.10.10.10 cmw-t30

Утилиты, включенные в дистрибутивы

Каждый дистрибутив содержит собственный набор инструментов для настройки сети. Чтобы узнать, какие именно утилиты содержит ваш дистрибутив, обратитесь к его документации. Все утилиты содержат, по сути, те же настройки, что и Webmin. Некоторые из них могут содержать так же опции, характерные для данного дистрибутива.

Рисунок 1. Утилита redhat-config-network из Red Hat 8.x и 9.xРисунок 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 -pДля каждого сокета показывает PID и имя программы, которой данный сокет принадлежит
netstat -aПоказывает как прослушиваемые, так и непрослушиваемые сокеты
netstat -tПоказывает соединения TCP
netstat -uПоказывает соединения UDP
netstat -eОтображает дополнительную информацию; для максимальной детализации используйте эту опцию дважды

Пример netstat -tp:

Листниг 2. Использование netstat
[root@cmw-t30 root]# netstat -tp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
PID/Program name
tcp        0      0 localhost.localdo:29000 *:*                     LISTEN
2389/attvpnctl
tcp        0      0 *:10000                 *:*                     LISTEN
5945/perl
tcp        0      0 *:x11                   *:*                     LISTEN
1120/X
tcp        0      0 *:ftp                   *:*                     LISTEN
724/xinetd
tcp        0      0 *:ssh                   *:*                     LISTEN
710/sshd
tcp        0      0 *:ipp                   *:*                     LISTEN
797/cupsd
tcp        0      0 *:505                   *:*                     LISTEN
1043/rcd
tcp        0      0 localhost.localdoma:ipp localhost.localdo:32772 ESTABLISHED
797/cupsd
tcp        0      0 sig-9-65-39-140.m:44916 sdoprods2.austin.i:1352 TIME_WAIT
-
tcp        0      0 10.100.100.101:33020    64.12.29.100:5190       ESTABLISHED
1433/gaim
tcp        0      0 localhost.localdo:44954 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44955 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44897 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44902 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44903 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44900 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44901 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 10.100.100.101:44888    cs9336-61.austin.r:pop3 TIME_WAIT
-
tcp        0      0 localhost.localdo:32772 localhost.localdoma:ipp ESTABLISHED
1246/gnome-cups-man
tcp        1      0 localhost.localdo:32774 localhost.localdoma:ipp CLOSE_WAIT
1246/gnome-cups-man
tcp        0      0 10.100.100.101:33019    cs46.msg.sc5.yahoo:5050 ESTABLISHED
1433/gaim
tcp        0      0 sig-9-65-39-140.m:35061 d03nm119.boulder.i:1352 CLOSE_WAIT
1720/wineserver
tcp        0      0 10.100.100.101:33021    64.12.30.4:5190         ESTABLISHED
1433/gaim

Чаще всего я использую команду netstat, чтобы увидеть соединения, которые находятся в состоянии LISTEN или ESTABLISHED. LISTEN означает, что в вашей системе есть службы, которые ожидают соединения от других машин. ESTABLISHED -- это активное соединение между вашей и другими машинами. Убедитесь, что вы знаете все работающие программы, использующие соединение LISTEN. Если вы видите что-то неизвестное, это может быть небезопасным явлением. netstat обладает большим количеством опций. Для получения подробной информации наберите в командной строке info netstat.

route
С помощью консольной команды route можно вывести на экран таблицу маршрутизации IP и оперировать с ней.

Листинг 3. Использование route
[root@cmw-t30 plugins]# route|grep -v ipsec
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
204.146.24.42   10.100.100.1    255.255.255.255 UGH   0      0        0 eth1
10.100.100.0    *               255.255.255.0   U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         10.100.100.1    0.0.0.0         UG    0      0        0 eth1

При вызове 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.


Резюме

Linux с самого начала предназначался для работы с сетью. В него встроены сложные функции, которые раньше можно было найти только в высокотехнологичных системах, внедряемых в корпорациях. Тем не менее, несмотря на всю свою мощь, конфигурация сети в Linux не сложнее, чем в Windows. Такие инструменты, как Webmin, redhat-config-network и YAST предоставляют возможность конфигурации сети в графическом режиме. Средства ifconfig и route позволяют визуализировать и модифицировать сетевые параметры с помощью консоли или скрипта. С помощью netstat можно просмотреть отдельные сетевые подключения и их взаимодействие с запущенными процессами.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=207229
ArticleTitle=План перехода с Windows на Linux: Часть 7. Работа с сетью
publish-date=04052007