- Настройка сети в Linux, диагностика и мониторинг
- Содержание
- Настройка TCP/IP в Linux для работы в сети Ethernet
- Параметры сети
- Файлы настроек сети в Linux (конфигурационные файлы)
- Настройка сети
- Диагностика сети Linux
- traceroute
- Администрирование систем Linux. Настройка сетевых интерфейсов
- Глава 22. Настройка сетевых интерфейсов
- 22.1. Следует ли использовать для настройки инструменты с графическим интерфейсом
- 22.2. Настройка сетевых интерфейсов в дистрибутивах Debain/Ubuntu
- 22.3. Настройка сетевых интерфейсов в дистрибутивах Red Hat/Fedora
- 22.4. Утилита ifconfig
- 22.5. Имя узла
- 22.6. Утилита arp
- 22.7. Утилита route
- 22.8. Утилита ping
- 22.9. Дополнительная информация: утилита ethtool
- 22.10. Практическое задание: настройка сетевых интерфейсов
- 22.11. Корректная процедура выполнения практического задания: настройка сетевых интерфейсов
Настройка сети в Linux, диагностика и мониторинг
Содержание
Доброго времени, уважаемые читатели. Публикую вторую часть статьи о сетевой подсистеме Linux. В текущей части основной упор сделан на реализацию сети в Linux (как настроить сеть в Linux, как продиагностировать сеть в Linux и поддерживать в рабочем состоянии сетевую подсистему в Linux).
Настройка TCP/IP в Linux для работы в сети Ethernet
Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только петлевого интерфейса, но если необходимо объединить хосты между собой, естественно, необходимо наличие сетевого интерфейса, каналов передачи данных (например витая пара), возможно, какого-либо сетевого оборудования. Так же, необходимо наличие установленных утилит для настройки сети (/sbin/ifconfig, /sbin/route и др.), обычно поставляемые в пакете net-tools. Так же необходимо наличие конфигурационных файлов для сети (например /etc/hosts) и поддержку сети ядром Linux.
Параметры сети
Начнем понимание сетевых механизмов Linux с ручного конфигурирования сети, то есть со случая, когда IP адрес сетевого интерфейса статичен. Итак, при настройке сети, необходимо учесть и настроить следующие параметры:
IP-адрес — как уже говорилось в первой части статьи — это уникальный адрес машины, в формате четырех десятичных чисел, разделенных точками. Обычно, при работе в локальной сети, выбирается из частных диапазонов, например: 192.168.0.1
Маска подсети — так же, 4 десятичных числа, определяющие, какая часть адреса относиться к адресу сети/подсети, а какая к адресу хоста. Маска подсети является числом, которое складывается (в двоичной форме) при помощи логического И, с IP-адресом и в результате чего выясняется, к какой подсети принадлежит адрес. Например адрес 192.168.0.2 с маской 255.255.255.0 принадлежит подсети 192.168.0.
Адрес подсети — определяется маской подсети. При этом, для петлевых интерфейсов не существует подсетей.
Широковещательный адрес — адрес, используемый для отправки широковещательных пакетов, которые получат все хосты подсети. Обычно, он равен адресу подсети со значением хоста 255, то есть для подсети 192.168.0 широковещательным будет 192.168.0.255, аналогично, для подсети 192.168 широковещательным будет 192.168.255.255. Для петлевых интерфейсов не существует широковещательного адреса.
IP адрес шлюза — это адрес машины, являющейся шлюзом по-умолчанию для связи с внешним миром. Шлюзов может быть несколько, если компьютер подключен к нескольким сетям одновременно. Адрес шлюза не используется в изолированных сетях (не подключенных к глобальной сети), потому что данным сетям некуда отправлять пакеты вне сети, то же самое относиться и к петлевым интерфейсам.
Файлы настроек сети в Linux (конфигурационные файлы)
Для понимания работы сети в Linux, я бы обязательно посоветовал ознакомиться со статьей «Этапы загрузки Linux». В целом, вся работа Linux основана на процессе init, который рождается при загрузке ОС и плодит своих потомков, которые в свою очередь и выполняют всю необходимую работу, будь то запуск bash или демона. Да, и вся загрузка Linux основана на скриптах bash, в которых прописана вся последовательность запуска мелких утилит с различными параметрами, которые последовательно запускаются/останавливаются при запуске/остановке системы. Аналогично запускается и сетевая подсистема Linux. Каждый дистрибутив Linux имеет слегка отличающийся от других механизм инициализации сети, но общая картина, думаю, после прочтения будет ясна. Если просмотреть стартовые скрипты сетевой подсистемы какого-либо дистрибутива Linux, то, как настроить конфигурацию сети с помощью конфигурационных файлов, станет более-менее понятно, например у Debian/Ubuntu (за основу возьмем эту ветвь дистрибутивов) за инициализацию сети отвечает скрипт /etc/init.d/networking , просмотрев содержимое которого:
можно найти несколько функций, проверяющих наличие подключенных сетевых файловых систем (check_network_file_systems(), check_network_swap()), а так же проверку существования какого-то пока непонятного конфига /etc/network/options (функция process_options()), а в самом низу, конструкцией case «$1» in проверяется первый параметр переданный скрипту и в соответствии с введенным параметром (start/stop/force-reload|restart или любое дугое) производит определенные действия. Из этих самых «определенных действий», на примере аргумента start видно, что сначала запускается функция process_options, далее отправляется в лог фраза Configuring network interfaces, и запускается команда ifup -a. Если посмотреть man ifup, то видно что данная команда читает конфиг из файла /etc/network/interfaces и согласно ключу -a запускает все интерфейсы имеющие параметр auto.
Соответственно, прочитав man interfaces (rus) или man interfaces (eng), становиться ясно, как же в Debian/Ubuntu настроить какой-либо сетевой интерфейс с помощью конфига /etc/network/interfaces. Ниже, пример данного конфигурационного файла для 3х интерфейсов: петлевой (lo), со статичным IP (eth2) и IP получаемым по dhcp (eth0):
В данном конфиге строки allow-hotplug и auto — это синонимы и интерфейсы будут подняты по команде ifup -a. Вот, собственно, и вся цепь работы сетевой подсистемы. Аналогично, в других дистрибутивах: в RedHat и SUSE сеть запускается скриптом /etc/init.d/network. Рассматрев его, аналогично можно найти, где лежит конфигурация сети.
/etc/hosts
Данный файл хранит перечень IP адресов и соответствующих им (адресам) имен хостов.Формат файла ничем не отличается от мастдайного:
/etc/networks
Данный файл хранит имена и адреса локальной и других сетей. Пример:
При использовании данного файла, сетями можно управлять по имени. Например добавить маршрут не route add 192.168.1.12, а route add home-network.
/etc/nsswitch.conf
Файл определяет порядок поиска имени хоста/сети, за данную настройку отвечают строки:
Параметр files указывает использовать указанные файлы (/etc/hosts и /etc/networks соответственно), параметр dns указывает использовать службу dns.
/etc/resolv.conf
Этот файл определяет параметры механизма преобразования сетевых имен в IP адреса. Пример:
В современных дистрибутивах Linux используется динамическая генерация данного файла, с помощью утилиты resolvconf. Она является посредником между службами, динамически предоставляющими сервера имен (например DHCP client) и службами, использующими данные сервера имен. Статические адреса DNS серверов, в случае использования resolvconf, задаются внутри /etc/network/interfaces (подробнее об этом — в разделе настройки).
Настройка сети
Настройка сети подробно разобрана в отдельной статье.
Диагностика сети Linux
Существует большое количество инструментов диагностики сети в Linux, зачастую, они очень похожи на утилиты от Microsoft. Я рассмотрю 3 основные утилиты диагностики сети, без которых выявить неполадки будет проблематично.
Думаю, что данная утилита знакома чуть ли не каждому. Работа этой утилиты заключается в отправке т.н. пакетов ICMP удаленному серверу, который будет указан в параметрах команды, сервер возвращает отправленные команды, а ping подсчитывает время требуемое отправленному пакету, чтобы дойти до сервера и вернуться. Например:
Так же, утилита ping интересна тем, что может позволить увидеть, где именно возникли неполадки. Допустим, утилита ping выводит сообщение network not reachable (сеть недоступна), либо другое аналогичное сообщение. Это, скорее всего, говорит о некорректной настройке вашей системы. В таком случае, можно послать пакеты по IP-адресу провайдера, чтобы понять, в каком месте возникает проблема (между локальным ПК или «дальше»). Если Вы подключены к интернету через маршрутизатор, то можно послать пакеты по его IP. Соответственно, если проблема проявиться уже на этом этапе, это говорит, о неправильном конфигурировании локальной системы, либо о повреждении кабеля, если маршрутизатор отзывается, а сервер провайдера нет, то проблема — в канале связи провайдера и т.д. Наконец, если неудачей завершилось преобразовании имени в IP, то можно проверить связь по IP, если ответы будут приходить корректно, то можно догадаться, что проблема в DNS .
Следует отметить, что данная утилита не всегда надежный инструмент для диагностики. Удаленный сервер может блокировать ответы на ICMP запросы.
traceroute
Простым языком, команда называется трассировка маршрута. Как можно понять из названия — данная утилита покажет по какому маршруту шли пакеты до хоста. Утилита traceroute несколько похожа на ping, но отображает больше интересной информации. Пример:
Источник
Администрирование систем Linux. Настройка сетевых интерфейсов
Оригинал: Interface configuration
Автор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 1 апреля 2015 г.
Глава 22. Настройка сетевых интерфейсов
В данной главе описывается процесс настройки сетевых интерфейсов , соответствующих сетевым картам , для последующего использования стека протоколов TCP/IP .
22.1. Следует ли использовать для настройки инструменты с графическим интерфейсом
В состав современных дистрибутивов Linux часто включаются приложения с графическим интерфейсом, предназначенные для настройки параметров сетевых соединений. Некоторые люди жалуются на то, что данные приложения нарушают настройки сетевых соединений в том случае, если они используются одновременно с инструментами с интерфейсом командной строки. Наиболее известными примерами приложений, которые никоим образом не обрабатывают настройки сетевых соединений, сделанные с помощью инструментов с интерфейсом командной строки, являются демон Network Manager (который нередко заменяется на демон wicd ), а также приложение для настройки системы yast .
Так как целью данного курса является изучение приемов администрирования серверов , мы будем считать, что администрирование серверов Linux всегда осуществляется с помощью приложений с интерфейсом командной строки.
В данной главе рассматриваются исключительно вопросы использования инструментов с интерфейсом командной строки для настройки сетевых интерфейсов системы!
К сожалению, не существует единого набора команд и файлов конфигурации в директории /etc , которые могли бы использоваться во всех дистрибутивах Linux. Мы рассмотрим вопросы настройки сетей в двух (значительных, но отличающихся) семействах дистрибутивов Linux.
Начнем с рассмотрения аспектов настройки сетевых интерфейсов в дистрибутивах Debian/Ubintu , после чего перейдем к рассмотрению аналогичных аспектов в дистрибутивах Fedora/RHEL .
22.2. Настройка сетевых интерфейсов в дистрибутивах Debain/Ubuntu
22.2.1. Файл конфигурации /etc/network/interfaces
Файл /etc/network/interfaces является основным файлом настроек сетевых интерфейсов, соответствующих сетевым картам, в дистрибутивах Debain/Ubuntu.
В примере ниже показано, что наша текущая система Ubuntu 11.04 настроена таким образом, что клиент DHCP используется для сетевого интерфейса eth0 (соответствующего первой сетевой карте).
Использование клиента DHCP является отличной практикой в случае настройки клиентских машин, но в случае настройки серверов чаще всего требуется использовать фиксированные IP-адреса .
В примере ниже показано содержимое файла /etc/network/interfaces в случае использования фиксированного IP-адреса .
В примере также показано, что в файле конфигурации помимо единственного IP-адреса могут использоваться дополнительные параметры. Обратитесь к странице руководства interfaces(5) для ознакомления с принципами установки значений таких параметров, как gateway , netmask или каких-либо других.
22.2.2. Утилита /sbin/ifdown
Рекомендуется деактивировать сетевой интерфейс перед изменением его конфигурации (хотя это и не обязательно). Данная операция может быть осуществлена с помощью утилиты ifdown .
Утилита не выведет какого-либо сообщения при деактивации сетевого интерфейса с фиксированным IP-адресом. Однако после деактивации сетевого интерфейса информация о нем больше не будет содержаться в выводе утилиты ifconfig .
Сетевой интерфейс, который был деактивирован, не может использоваться для соединения с сетью без повторной активации.
22.2.3. Утилита /sbin/ifup
Ниже приведен вывод утилиты ifup при активации сетевого интерфейса eth0 с использованием клиента DHCP. (Обратите внимание на то, что данный вывод был получен в дистрибутиве Ubuntu 10.10, при этом в дистрибутиве Ubuntu 11.04 утилита ifup не генерирует вывода по умолчанию).
Подробности использования программных компонентов для работы с протоколом DHCP освещены в отдельной главе курса «Администрирование серверов Linux» .
22.3. Настройка сетевых интерфейсов в дистрибутивах Red Hat/Fedora
22.3.1. Файл конфигурации /etc/sysconfig/network
Файл /etc/sysconfig/network является глобальным файлом конфигурации (для всех сетевых карт). Он позволяет установить, хотим ли мы использовать сетевое соединение (NETWORKING=yes|no), желаемое имя узла (HOSTNAME=), а также адрес шлюза (GATEWAY=).
Существуют и некоторые другие параметры, значения которых могут быть установлены в рамках данного файла, причем информация об этих параметрах приведена в текстовом файле /usr/share/doc/initscripts-*/sysconfig.txt .
22.3.2. Файлы конфигурации /etc/sysconfig/network-scripts/ifcfg-*
Каждая сетевая карта может быть индивидуально настроена в рамках файла конфигурации /etc/sysconfig/network-scripts/ifcfg-* . Если вы используете всего одну сетевую карту, для ее настройки, скорее всего, будет использоваться файл конфигурации /etc/sysconfig/network-scripts/ifcfg-eth0 .
Ниже приведено содержимое файла конфигурации /etc/sysconfig/network-scripts/ifcfg-eth0 в случае использования клиента DHCP (BOOTPROTO=»dhcp»). Также обратите внимание на параметр NM_CONTROLLED, который предназначен для запрета управления этой сетевой картой демоном Network Manager . Данный параметр, в отличие от многих других, не описан (и даже не упомянут) в текстовом файле /usr/share/doc/initscripts-*/sysconfig.txt .
В качестве значения переменной BOOTPROTO может использоваться либо строка dhcp , либо строка bootp , любые другие значения будут интерпретироваться как значение static , которое подразумевает отказ от специальных протоколов для установки параметров сетевого интерфейса при его активации.
Ниже приведен пример содержимого файла конфигурации /etc/sysconfig/network-scripts/ifcfg-eth0 в случае использования фиксированного IP-адреса .
Параметр HWADDR предназначен для гарантированного использования заданных значений параметров для определенной сетевой карты при наличии нескольких сетевых карт в системе. Оно не может использоваться для присваивания произвольного MAC-адреса сетевой карте. Для этого вам придется установить значение переменной MACADDR. Не используйте переменные HWADDR и MACADDR в рамках одного файла конфигурации ifcfg-ethx .
Параметры BROADCAST= и NETWORK= из предыдущих версий дистрибутивов RHEL/Fedora являются устаревшими.
22.3.3. Утилиты /sbin/ifup и /sbin/ifdown
Утилиты ifup и ifdown позволяют активировать или деактивировать сетевой интерфейс с использованием описанных выше файлов конфигурации. Данные утилиты ведут себя аналогично соответствующим утилитам из состава дистрибутивов Debian и Ubuntu.
22.4. Утилита ifconfig
При использовании утилиты /sbin/ifconfig без аргументов будет выведен список всех активных сетевых интерфейсов, включая интерфейсы адаптеров беспроводных сетей и петлевой интерфейс. В примере ниже IP-адрес сетевого интерфейса eth0 не установлен.
Также вы можете использовать утилиту ifconfig для получения информации об одной сетевой карте.
В том случае, если для учетных записей обычных пользователей директория /sbin не включена в список директорий с исполняемыми файлами, передаваемый с помощью переменной окружения $PATH , вам придется использовать полный путь к утилите, как и в дистрибутиве Debian.
22.4.1. Активация и деактивация сетевых интерфейсов
Вы можете использовать утилиту ifconfig также для активации и деактивации сетевых интерфейсов. Главное отличие данной утилиты от утилиты ifup состоит в том, что в случае использования команды ifconfig eth0 up сетевой интерфейс будет повторно активирован с сохранением (текущей) конфигурации, в то время, как в случае использования утилиты ifup будет осуществляться чтение соответствующего файла конфигурации, который содержит (возможно обновленные) значения параметров конфигурации, с последующим использованием прочитанных значений параметров конфигурации в процессе активации сетевого интерфейса.
22.4.2. Установка IP-адреса
С помощью утилиты ifconfig вы также можете временно установить IP-адрес сетевого интерфейса. Этот IP-адрес будет использоваться до следующего цикла активации/деактивации сетевого интерфейса с помощью утилит ifup/ifdown или до следующей перезагрузки системы .
22.4.3. Установка MAC-адреса
Кроме того, вы также можете использовать утилиту ifconfig для установки MAC-адреса сетевого интерфейса, отличного от того, который был установлен при изготовлении вашей сетевой карты. В примере ниже показан процесс его установки.
22.4.4. Демон dhclient
Демон /sbin/dhclient обычно исполняется в домашних или клиентских системах, работающих под управлением Linux. Данный демон позволяет получать параметры подключения сетевого интерфейса от DHCP-сервера . В том случае, если в настройках вашего сетевого адаптера есть указание на использование протоколов DHCP или BOOTP , утилита /sbin/ifup будет автоматически осуществлять запуск демона dhclient .
При обновлении данных подключения демон dhclient будет заменять IP-адрес, установленный с помощью утилиты ifconfig !
22.5. Имя узла
Каждый узел получает имя, называемое именем узла (hostname) и обычно находящееся в пространстве имен DNS и формирующее полностью определенное имя домена (Fully Qualified Domain Name — FQDN).
В данном примере показана методика установки имени узла и его проверки с помощью утилиты hostname в случае работы с дистрибутивами Red Hat/Fedora.
Для установки имени узла в дистрибутивах Ubuntu/Debian используется файл /etc/hostname .
Во всех дистрибутивах Linux вы можете изменить имя узла с помощью команды hostname $новое_имя_узла . В этом случае имя узла будет изменяться не на постоянной основе.
В любой системе Linux вы также можете использовать утилиту sysctl для вывода и изменения имени узла.
22.6. Утилита arp
Поиск соответствий между IP- и MAC-адресами осуществляется с помощью протокола ARP второго уровня сетевой модели OSI . Содержимое таблиц ARP может выводиться с помощью одноименной утилиты arp . В примере ниже показан список имен и адресов компьютеров, с которыми не так давно обменивался данными рассматриваемый компьютер.
Узел с именем «anya» является межсетевым экраном Cisco, с именем «faith» — лазерным принтером, с именем «kiss» — медиа-плеером Kiss DP600, с именем «laika» — ноутбуком, а с именами «Agapi», «Shaka» и «Pasha» — серверами SPARC. С помощью символа знака вопроса обозначен сервер под управлением дистрибутива Red Hat Enterprise Linux, работающий в виртуальной машине.
Вы можете использовать команду arp -d для удаления элемента из таблицы ARP .
22.7. Утилита route
Вы можете ознакомиться с локальной таблицей маршрутизации компьютера, воспользовавшись утилитой /sbin/route (а также с помощью команды netstat -r ).
Оказывается, на данном компьютере не установлен адрес шлюза , поэтому мы можем воспользоваться командой route add default gw для непосредственной установки адреса шлюза, используемого по умолчанию .
Если вы не добавите адрес шлюза в один из описанных в начале данной главы файлов конфигурации сетевых интерфейсов из директории /etc/ , ваш компьютер будет забывать этот адрес после каждой перезагрузки.
22.8. Утилита ping
Если удаленный узел обнаруживается в сети с помощью утилиты ping , все необходимые для функционирования стека протоколов TCP/IP настройки были выполнены корректно.
22.9. Дополнительная информация: утилита ethtool
Для вывода и изменения значений рабочих параметров сетевой карты следует использовать утилиту ethtool . Результаты работы утилиты зависят от возможностей вашей сетевой карты. При рассмотрении представленного в примере вывода можно сделать вывод, что сетевая карта осуществляет автоматическое согласование пропускной способности.
А в данном примере показана методика использования утилиты ethtool с целью перевода сетевой карты с режима работы с пропускной способностью в 1000МБит к режиму работы с пропускной способностью в 100МБит и назад. Учтите, что для возврата сетевой карты в режим работы с пропускной способностью в 1000Мбит потребуется некоторое время.
22.10. Практическое задание: настройка сетевых интерфейсов
1. Проверьте, исполняется ли на вашем компьютере демон dhclient .
2. Выведите информацию о вашем текущем IP-адресе (или адресах).
3. Выведите содержимое файла конфигурации, в котором записан используемый IP-адрес .
4. Выполните действия, перечисленные в одном из разделов с описанием процесса н астройки сетевых интерфейсов , для перехода от использования клиента DHCP к использованию фиксированного IP-адреса . Используйте полученный ранее IP-адрес для того, чтобы избежать конфликтов!
5. Установили ли вы корректный адрес шлюза при выполнении предыдущего задания? Если нет, сделайте это сейчас.
6. Проверьте корректность установки адреса шлюза.
7. Проверьте возможность соединения с адресом шлюза, а также корректность работы шлюза.
8. Измените два последних символа в MAC-адресе вашей сетевой карты.
9. Какие порты используются приложениями, работающими по протоколам http, pop3, ssh, telnet, nntp и ftp?
10. Поясните, почему для передачи сообщений электронной почты и доступа к вебсайтам используется протокол TCP , а не UDP .
11. Выведите имя узла вашего компьютера.
12. Выведите список IP-адресов узлов, с которыми ваш компьютер недавно обменивался данными.
22.11. Корректная процедура выполнения практического задания: настройка сетевых интерфейсов
1. Проверьте, исполняется ли на вашем компьютере демон dhclient .
2. Выведите информацию о вашем текущем IP-адресе (или адресах).
3. Выведите содержимое файла конфигурации, в котором записан используемый IP-адрес .
В дистрибутивах Ubuntu/Debian: cat /etc/network/interfaces
В дистрибутивах RedHat/Fedora: cat /etc/sysconfig/network-scripts/ifcfg-eth*
4. Выполните действия, перечисленные в одном из разделов с описанием процесса н астройки сетевых интерфейсов , для перехода от использования клиента DHCP к использованию фиксированного IP-адреса . Используйте полученный ранее IP-адрес для того, чтобы избежать конфликтов!
В дистрибутивах Ubuntu/Debian:
В дистрибутивах RedHat/Fedora:
5. Установили ли вы корректный адрес шлюза при выполнении предыдущего задания? Если нет, сделайте это сейчас.
6. Проверьте корректность установки адреса шлюза.
7. Проверьте возможность соединения с адресом шлюза, а также корректность работы шлюза.
8. Измените два последних символа в MAC-адресе вашей сетевой карты.
9. Какие порты используются приложениями, работающими по протоколам http, pop3, ssh, telnet, nntp и ftp?
10. Поясните, почему для передачи сообщений электронной почты и доступа к вебсайтам используется протокол TCP , а не UDP .
Так как протокол TCP является надежным, а протокол UDP не является таковым.
11. Выведите имя узла вашего компьютера.
12. Выведите список IP-адресов узлов, с которыми ваш компьютер недавно обменивался данными.
Источник