Настройка и управление сетевой подсистемой Linux (пакет iproute2)

Жил да был один веб-сервер, работали на нем apache как бэкенд и nginx как фронтэнд. Крутился на всем этом сайт. Но вот потребовалось гео-резервировать сервер, и обеспечить непрерывность работы этого сайта. Настроить сервер в другом дата-центре не большая проблема, можно даже обеспечить репликацию данных (например так). А вот как корректно распределять трафик между серверами?

Книги

  • Командная строка Linux и автоматизация рутинных задач. 2-е изд. Рассмотрены команды Linux, основы работы в командной строке, а также настройка системы с помощью программ, обладающих только текстовым интерфейсом. Работа с системой выполняется только в режиме консоли, что требует определенной квалификации пользоват
  • Серверное применение Linux. 3-е изд. Описана настройка различных типов серверов: Web-, FTP-, DNS-, DHCP-, почтового сервера, сервера баз данных. Подробно рассмотрена установка и базовая настройка операционной системы
  • HTML 5 & CSS 3 — практическо програмиране за начинаещи Тази книга ще ви научи как да прилагате на практика HTML 5 и CSS 3 и да се възползвате от богатите възможности, предлагани в новите уеб стандарти. Изданието е предназначено за всеки, който е решил да се възползва от съвременните технологии за уеб диз
  • Самоучитель системного администратора. 4-е изд. Изложены основные задачи системного администрирования, описаны базовые протоколы, даны рекомендации по выбору оборудования и проведению ежедневных рутинных операций. Подробно раскрыты технологии, используемые при построении информационных систем, опи
  • Планшет и смартфон на базе Android для ваших родителей, 2-е изд. Книга знакомит читателя с мобильными устройствами на базе Android. Она написана простым и понятным языком для людей среднего и старшего возраста

Команды для подключения прокси в Линукс

Всё, что вам потребуется, хранится в DConf – базе конфигураций. Записи хранятся в простом формате, состоя из ключа и его значения. Работать с ними можно из dconf-редакторов, имеющих удобный интерфейс либо из консоли.

Разработчиками предусмотрены команды для подключения прокси через командную строку. Они бывают двух типов – gsettings и dconf. В зависимости от целей, они могут отличаться. К примеру, для SOCKS и HTTPS/FTP настройки разные. Также, если вы хотите применить их для всех, нужно заходить под суперюзером.

Команды для подключения прокси в Линукс

Для автонастройки применяются:

gsettings set mode 'auto' gsettings set autoconfig-url

API и микросервисы

Одна из проблем при разработке API-решения, работающего с использованием микросервисов, заключается в том, как «разделить» различные сервисные вызовы, чтобы они могли размещаться в отдельных контейнерах Docker. Использование подхода, основанного на поддоменах (то есть ), который я описал ранее для стандартных веб-приложений, не очень практичен, когда вы хотите предоставить единый API своему сообществу разработчиков. Тем не менее, это все еще может быть выполнено во многом таким же образом, используя правила обратного прокси на основе URL-пути. Например, рассмотрим эти два вымышленных вызова API:

1 2 GET {contractId} GET {customerId}

В первом примере это вызов RESTful GET, который извлекает данный объект JSON контракта на основе указанного ContractId. Аналогичный шаблон используется в примере 2 для извлечения записи клиента. Как видите, первый элемент пути — это действительно «домен», связанный с вызовом веб-службы. Это может быть использовано в качестве основы для разделения вызовов этих доменов на их собственные отдельные контейнеры Docker микросервиса. Хорошая выгода от этого заключается в том, что один из этих доменов может обычно получать больше трафика, чем другой. Разделив их на отдельные службы, вы можете выполнить целевое масштабирование.

Если вам понравилась эта статья, пожалуйста, ссылку на нее соответственно.

Ссылка: Использование HAProxy в качестве обратного прокси-сервера для микросервисов AWS от нашего партнера по JCG Джеффа Дэвиса в блоге Jeff’s SOA Ruminations .

Эмулятор терминала

С графикой или без, основным интерфейсом управления Linux была и остаётся командная строка. X11, предлагая иной способ взаимодействия с компьютером, не должна лишать пользователя возможности работать с самой системой испытанным и эффективным методом — через терминал. Поэтому первое совершенно необходимое X-приложение должно предоставлять возможность доступа к терминалу в X Window System.

Читайте также:  Как посмотреть на Linux открытые порты — описание способов

Задача дать пользователю X11 командную строку решается довольно легко. Нужно завести X-приложение, окно котрого работает аналогично окну терминала: передаёт символьную информацию от пользователя системе и обратно. Делается это уже описанным в лекции Mount механизмом псевдотерминалов tty/pty (или pts/ptmx): X-приложение получает во владение специальное устройство типа pty, связанное по вводу и выводу с терминальным устройством типа tty, с которым работает shell. Общее название таким программам — эмулятор терминала для X11 (xterm). Мефодий может запустить xterm всё из той же виртуальной консоли, в которой определено значение переменной окружения DISPLAY и получить доступ к командной строке уже из графической оболочки.

Иллюстрация 5. Эмулятор терминала для X11 — xterm

В левом верхнем углу открылось окно xterm, которое легло «поверх» открытого ранее xcalc. В открывшемся окне xterm Мефодий увидел привычное приглашение командной строки bash: теперь из этой командной строки можно выполнять любые команды, в том числе и запускать новые X-приложения, например, ещё один xterm. Чтобы при этом избежать наложения окон друг на друга, можно запустить xterm с параметром «-geometry +150+150», что заставить X-сервер выдать ему окно, верхний левый угол котрого отстоит на 150 экранних точек (пикселей) от левой границы экрана, и на 150 же — от левой. В этом xterm значение DISPLAY унаследовано от родительского процесса и равно «:0», так что окна всех запущенных из него X-приложений откроются на этом же экране.

Не следует путать программу xterm со способом организации рабочей станции (т. н. «X-терминал»): термины эти созвучны, но относятся к разным областям знаний. Нередко бывает, что на экране X-терминала (компьютера) есть окно терминала X11 (программы xterm). XTerm передаёт сигналы как настоящий терминал, имеет богатый набор управляющих последовательностей (унаследованный от устройтсва «DEC VT102/VT220»), а вдобавок позволяет воспользоваться всеми преимуществами графической среды: выбрать шрифт, запомнить текст на экране (даже тот, что уже исчез с экрана) и многое другое.

Кстати сказать, копирование текста при помощи мыши — свойство совсем не только XTerm. На самом деле любое окно, зарегистрированное в X11 как текстовое, позволяет отметить (при постоянно нажатой первой кнопке или последовательными нажатиями третьей) часть текста. Выделенный текст можно немедленно вставить в любое окно текстового ввода нажатием второй кнопки. Утилита xcutsel предоставляет возможность работы с буфером обмена cutbuffer), в котором текст может храниться сколь угодно долго.

Размышления

Раз дополнительный шлюз ставить нельзя, значит пускать трафик через какое-либо устройство тоже не вариант – придётся работать с копией трафика. А то, что нужна детализация в том числе по DNS-именам сайтов, к которым идёт обращение, делает неприемлемым использование NetFlow и Ulog из предыдущей статьи. На счастье ядром сети является Cisco Catalyst 3550, значит можно попробовать снять копию трафика (зеркалирование) и анализировать уже её.

В общем виде сеть выглядит так:

Размышления

Вся основная сеть не показана (она в правой части). Я решил снять копию трафика с порта, ведущего к провайдеру и послать его на виртуальный сервер через ещё один коммутатор Catalyst3560G, по счастливой случайности оказавшийся возле сервера виртуализации.

Читайте также:  kubectl apply vs create. Какую команду использовать для создания ресурсов в кластерной среде Kubernetes?

CentOS

Red Hat Enterprise Linux (RHEL) — одна из известнейших корпоративных ОС на базе Linux. CentOS — её ближайшая альтернатива, позволяющая запускать большинство приложений от RHEL и пользоваться менеджером загрузок YUM. Ещё одно преимущество — CentOS имеет доступ к репозиторию Red Hat Software Collections (RHSCL), расширяющему возможности по использованию языков и баз данных.

CentOS подходит для профессиональной разработки, позволяя не тратить время на организацию взаимодействия с коллегами и поиск свежих дистрибутивов.

Nginx — прокси-сервер, балансировщик нагрузки, кэш HTTP и веб-сервер

Nginx является открытым исходным кодом и бесплатным веб-сервером, который также может выступать в качестве обратного прокси-сервера, балансировщика нагрузки, SSL разгрузки, и кэш HTTP. Nginx оказался вторым наиболее широко используемым веб-сервер для всех «активных» сайтов в Интернете. Nginx был разработан с явной целью опередить веб-сервер Apache.

Операционная система: Linux/Unix-like/BSD/Windows
Тип: Обратный прокси сервер, балансировщик нагрузки и HTTP кэш
Лицензия: 2-clause BSD
Коммерческая поддержка: Да ()
Поддержка от system-admins: Да

Budgie

Budgie позаимствовала док из macOS, боковую панель из Windows 10 и верхнюю панель с треем из GNOME, но выглядит при этом довольно самобытно и интересно. Фишка этой оболочки — удобная панель Raven с правой стороны экрана, управляющая плеером, уведомлениями, календарём и настройками системы.

Среда не может похвастаться обилием настроек, но будет проста и понятна даже для новичков. А если перетащить верхнюю панель вниз, то Budgie и вовсе будет напоминать интерфейс Windows 10.

Budgie
  • Кому подойдёт: как новичкам, которые не хотят разбираться в настройках, так и опытным пользователям Linux, желающим чего-то непривычного.
  • Преимущества: комфортный и интуитивно понятный интерфейс. Хорошо смотрится даже на устройствах с небольшими экранами, например нетбуках.
  • Недостатки: довольно прожорлива в плане системных ресурсов, несмотря на то что настроек меньше, чем в GNOME и KDE.
  • Дистрибутивы: Solus Linux, Ubuntu Budgie.

Управление маршрутизацией с помощью iproute2

Из статьи Основные понятия сетей мы знаем, что если текущему узлу необходимо куда-либо отправить IP пакет, то сетевая подсистема ядра использует таблицу маршрутизации. Если пакет отправляется в ту же подсеть, которой принадлежит хост, то с помощью ARP определяется физический адрес хоста назначения и пакет отправляется напрямую хосту назначения. Если адрес назначения принадлежит не «локальной сети», то пакет отправляется на шлюз (читай — направляется по маршруту), который указан в таблице маршрутизации для сети, которой принадлежит хост назначения. При этом, выбирается та сеть, в которой адрес сети наиболее заполнен (читай — меньше хостов в подсети). Если для хоста назначения не найден маршрут, то пакет отправляется на «шлюз по умолчанию». Все шлюзы должны находиться в той же подсети, что и исходный хост.

Допустим, в локальной сети есть некоторый хост с адресом , а так же есть хост , который является шлюзом в глобальную сеть, а так же есть хост с адресом , который является связующим маршрутизатором с сетью (то есть имеет еще один интерфейс  в сеть и на нем включен форвардинг). Для того, чтобы хост с адресом имел доступ в сеть Интернет и к локальной сети , необходимо внести в таблицу маршрутизации соответствующие записи, например с помощью команды ip route add:

# ip route add default via # ip route add via # ip route show dev eth1 proto kernel scope link src via dev eth1 default via dev eth

Первая команда добавляет маршрут по умолчанию (default) через узел (параметр via ). Вторая команда устанавливает маршрут на сеть через узел

Для вывода на экран содержимого таблицы маршрутизации используется команда ip route show. В данном случае в таблице маршрутизации три записи: первая о том, что сеть доступна непосредственно на интерфейсе eth1 (запись добавляется автоматически), и две записи, добавленные пользователем: альтернативный маршрут и маршрут по умолчанию.

Читайте также:  Лучшие графические оболочки Ubuntu

Добавление постоянного статического маршрута при инициализации сети

О настройке сети через конфигурационные файлы я рассказывал в статье  Настройка сети в Linux, диагностика и мониторинг, в сегодняшней статье я немного дополню эту информацию. С помощью файла /etc/network/interfaces есть возможность задать постоянные маршрута при поднятии интерфейса и удаление маршрута при выключении интерфейса. Это делается с помощью параметра up и down соответственно. Нижеприведенная конфигурация позволяет задать маршрут до сети  через шлюз :

iface eth1 inet static address netmask up ip route add via down ip route del gateway

Выводы

На этом, данную заметку заканчиваю. Подведу краткие итоги. Для управления физическими интерфейсами применяется команда ip link из пакета iproute. Для настройки свойств физического подключения (скорость, технология, тип дуплекса используется команда ethtool. Для того, чтобы хост мог взаимодействовать с другими узлами подсети в рамках локального сегмента (широковещательного домена) на нем должен быть установлен IP-адрес и определена маска подсети. Для управления IP-адресами в Linux можно использовать команду ip addr. В локальной сети данный узел для определения физических адресов(MAC) по IP — адресам других узлов использует протокол ARP и локальный ARP -кэш (таблица). Управление ARP -таблицей осуществляется командой ip neigh. Для взаимодействия с удаленными подсетями на данном узле необходимо определить шлюз по умолчанию или/и альтернативные шлюзы. Все шлюзы должны находиться в той же подсети, что и исходный узел. Управление таблицей маршрутизации на узле может осуществляться командой ip route. У параметров команд пакета iproute2 есть сокращенный синтаксис, например, ip link show eth0 можно записать как ip l sh eth0.

Что почитать

man ip man interfaces Linux Advanced Routing & Traffic Control HOWTO

С Уважением, !

Другие материалы в категории Linux

  • Ошибка 0x80004005 0x80070035 на Windows 10 при доступе к сетевой папке
  • Текстовый редактор VIM, основы работы
  • Спринт Lingoda (ex Марафон Lingoda) + промокод.
  • ddrescue или спасаем данные с HDD
  • Бесплатный SLES для Vmware — ВСЁ…
  • Резервное копирование файлов сайта по ssh
  • SQUID настройка ACL и http_access
  • squid, использование опции debug_options или диагностика компонентов squid
  • Седьмой релиз Debian
  • Удаление неиспользуемого оборудования (драйверов) Windows

Теги: Debian, ip, iproute, Linux, network, основы

Следует ли использовать для настройки инструменты с графическим интерфейсом

В состав современных дистрибутивов Linux часто включаются приложения с графическим интерфейсом, предназначенные для настройки параметров сетевых соединений. Некоторые люди жалуются на то, что данные приложения нарушают настройки сетевых соединений в том случае, если они используются одновременно с инструментами с интерфейсом командной строки. Наиболее известными примерами приложений, которые никоим образом не обрабатывают настройки сетевых соединений, сделанные с помощью инструментов с интерфейсом командной строки, являются демон Network Manager (который нередко заменяется на демон wicd ), а также приложение для настройки системы yast .

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

В данной главе рассматриваются исключительно вопросы использования инструментов с интерфейсом командной строки для настройки сетевых интерфейсов системы!

К сожалению, не существует единого набора команд и файлов конфигурации в директории /etc , которые могли бы использоваться во всех дистрибутивах Linux. Мы рассмотрим вопросы настройки сетей в двух (значительных, но отличающихся) семействах дистрибутивов Linux.

Начнем с рассмотрения аспектов настройки сетевых интерфейсов в дистрибутивах Debian/Ubintu , после чего перейдем к рассмотрению аналогичных аспектов в дистрибутивах Fedora/RHEL .