Настройка сети в Linux, диагностика и мониторинг Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
wiki:настройка_сети_в_linux [2011/10/16 11:52]
создано
wiki:настройка_сети_в_linux [2016/06/01 14:55] (текущий)
[Файлы настроек сети в Linux (конфигурационные файлы)]
Строка 4: Строка 4:
 ===== Настройка TCP/IP в Linux для работы в сети Ethernet ===== ===== Настройка TCP/IP в Linux для работы в сети Ethernet =====
  
-Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только **петлевого интерфейса**,​ но если необходимо объединить хосты между собой, естественно,​ необходимо наличие сетевого интерфейса,​ каналов передачи данных (например витая пара), возможно,​ какого-либо сетевого оборудования. Так же, необходимо наличие установленных [[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda#​network|утилит для настройки сети]] ([[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda/#​ifconfig|/​sbin/​ifconfig]],​ [[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda/#​route|/​sbin/​route]] и др.), обычно поставляемые в [[http://​www.k-max.name/​linux/​upravlenie-programmnym-obespecheniem-v-linux/#​pakage|пакете net-tools]]. Так же необходимо наличие [[http://​www.k-max.name/​linux/​fajlovaya-sistema-linux-i-struktura-katalogov/​|конфигурационных файлов]] для сети (например /etc/hosts) и поддержку сети [[http://​www.k-max.name/​category/​linux/​yadro/​|ядром Linux]]. +{{ :​wiki:​network-300x181.jpg?​|}}Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только **петлевого интерфейса**,​ но если необходимо объединить хосты между собой, естественно,​ необходимо наличие сетевого интерфейса,​ каналов передачи данных (например витая пара), возможно,​ какого-либо сетевого оборудования. Так же, необходимо наличие установленных [[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda#​network|утилит для настройки сети]] ([[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda/#​ifconfig|/​sbin/​ifconfig]],​ [[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda/#​route|/​sbin/​route]] и др.), обычно поставляемые в [[http://​www.k-max.name/​linux/​upravlenie-programmnym-obespecheniem-v-linux/#​pakage|пакете net-tools]]. Так же необходимо наличие [[http://​www.k-max.name/​linux/​fajlovaya-sistema-linux-i-struktura-katalogov/​|конфигурационных файлов]] для сети (например /etc/hosts) и поддержку сети [[http://​www.k-max.name/​category/​linux/​yadro/​|ядром Linux]].
 ==== Параметры сети ==== ==== Параметры сети ====
  
Строка 25: Строка 24:
  
 Для понимания работы сети в Linux, я бы обязательно посоветовал ознакомиться со статьей "​[[http://​www.k-max.name/​linux/​nachalo-etapy-zagruzki-os-linux-v-sxeme/​|Этапы загрузки Linux]]"​. В целом, вся работа Linux основана на [[http://​www.k-max.name/​linux/​nachalo-etapy-zagruzki-os-linux-v-sxeme/#​init|процессе init]], который рождается при загрузке ОС и плодит своих потомков,​ которые в свою очередь и выполняют всю необходимую работу,​ будь то запуск bash или демона. Да, и вся загрузка Linux основана на [[http://​www.k-max.name/​category/​linux/​bash/​|скриптах bash]], в которых прописана вся последовательность запуска мелких утилит с различными параметрами,​ которые последовательно запускаются/​останавливаются при запуске/​остановке системы. Аналогично запускается и сетевая подсистема Linux. Для понимания работы сети в Linux, я бы обязательно посоветовал ознакомиться со статьей "​[[http://​www.k-max.name/​linux/​nachalo-etapy-zagruzki-os-linux-v-sxeme/​|Этапы загрузки Linux]]"​. В целом, вся работа Linux основана на [[http://​www.k-max.name/​linux/​nachalo-etapy-zagruzki-os-linux-v-sxeme/#​init|процессе init]], который рождается при загрузке ОС и плодит своих потомков,​ которые в свою очередь и выполняют всю необходимую работу,​ будь то запуск bash или демона. Да, и вся загрузка Linux основана на [[http://​www.k-max.name/​category/​linux/​bash/​|скриптах bash]], в которых прописана вся последовательность запуска мелких утилит с различными параметрами,​ которые последовательно запускаются/​останавливаются при запуске/​остановке системы. Аналогично запускается и сетевая подсистема Linux.
-Каждый дистрибутив Linux имеет слегка отличающийся от других механизм инициализации сети, но общая картина,​ думаю, после прочтения будет ясна. Если просмотреть стартовые скрипты сетевой подсистемы какого-либо дистрибутива Linux, то, как настроить конфигурацию сети с помощью конфигурационных файлов,​ станет более-менее понятно,​ например у Debian (за основу возьмем этот дистрибутив) за инициализацию сети отвечает скрипт ''/​etc/​init.d/​networking'',​ просмотрев содержимое которого:​+Каждый дистрибутив Linux имеет слегка отличающийся от других механизм инициализации сети, но общая картина,​ думаю, после прочтения будет ясна. Если просмотреть стартовые скрипты сетевой подсистемы какого-либо дистрибутива Linux, то, как настроить конфигурацию сети с помощью конфигурационных файлов,​ станет более-менее понятно,​ например у Debian/​Ubuntu ​(за основу возьмем эту ветвь дистрибутивов) за инициализацию сети отвечает скрипт ''/​etc/​init.d/​networking'',​ просмотрев содержимое которого:​
  
 <code bash> <code bash>
Строка 147: Строка 146:
 </​file>​ </​file>​
  
-Соответственно,​ прочитав [[http://​manpages.ylsoftware.com/​dokuwiki/​man/​debian/​interfaces_5|man interfaces (rus)]] или [[http://​www.opennet.ru/​man.shtml?​topic=interfaces&​russian=0&​category=&​submit=%F0%CF%CB%C1%DA%C1%D4%D8+man|man interfaces (eng)]], становиться ясно, как же в Debian настроить какой-либо сетевой интерфейс с помощью конфига **/​etc/​network/​interfaces**. Ниже, пример данного конфигурационного файла для 3х интерфейсов:​ пертлевой (lo), со статичным IP (eth2) и IP получаемым по [[http://​www.k-max.name/​linux/​dhcp-server-na-linux/​|dhcp]] (eth0):+Соответственно,​ прочитав [[http://​manpages.ylsoftware.com/​dokuwiki/​man/​debian/​interfaces_5|man interfaces (rus)]] или [[http://​www.opennet.ru/​man.shtml?​topic=interfaces&​russian=0&​category=&​submit=%F0%CF%CB%C1%DA%C1%D4%D8+man|man interfaces (eng)]], становиться ясно, как же в Debian/​Ubuntu ​настроить какой-либо сетевой интерфейс с помощью конфига **/​etc/​network/​interfaces**. Ниже, пример данного конфигурационного файла для 3х интерфейсов:​ петлевой (lo), со статичным IP (eth2) и IP получаемым по [[http://​www.k-max.name/​linux/​dhcp-server-na-linux/​|dhcp]] (eth0):
  
 <​file>​ <​file>​
Строка 208: Строка 207:
 **/​etc/​resolv.conf** ​ **/​etc/​resolv.conf** ​
  
-Данный фал определяет параметры механизма преобразования сетевых имен в IP адреса. Простым языком,​ **определяет настройки DNS**. Пример:​+Этот файл определяет параметры механизма преобразования сетевых имен в IP адреса. Пример:​
 <​file>​ <​file>​
 ip-server:​~#​ cat /​etc/​resolv.conf ip-server:​~#​ cat /​etc/​resolv.conf
Строка 216: Строка 215:
 </​file>​ </​file>​
  
-Первые 2 строчки **указывают сервера DNS**. Третья строка указывает домены поиска. Если при разрешении имени, имя не будет FQDN-именем,​ то данный домен подставиться в виде "​окончания"​. Например при выполнении команды ping host, прингуемый адрес преобразуется в host.domain.local. Остальные параметры можно почитать в [[http://​opennet.ru/​man.shtml?​topic=resolv.conf&​category=5&​russian=0|man resolv.conf]]. ​Очень часто, в Linux используется динамическая генерация данного файла, с помощью т.н. программы **/sbin/resolvconf**. ​Данная программа является посредником между службами,​ динамически предоставляющими сервера имен (например //DHCP client//) и службами,​ использующими данные сервера имен. ​Для ​того чтобы использовать динамически ​генерируемый файл ///​etc/​resolv.conf//,​ необходимо ​сделать данный файл символической ссылкой на **/etc/resolvconf/​run/​resolv.conf**. В некоторых дистрибутивах ​путь может быть ​другой, об этом ​обязательно будет написано в **man resolvconf**.+Первые 2 строчки **указывают сервера DNS**. Третья строка указывает домены поиска. Если при разрешении имени, имя не будет FQDN-именем,​ то данный домен подставиться в виде "​окончания"​. Например при выполнении команды ping host, прингуемый адрес преобразуется в host.domain.local. Остальные параметры можно почитать в [[http://​opennet.ru/​man.shtml?​topic=resolv.conf&​category=5&​russian=0|man resolv.conf]]. ​\\ 
 + 
 +В современных дистрибутивах Linux используется динамическая генерация данного файла, с помощью ​утилиты **resolvconf**. ​Она является посредником между службами,​ динамически предоставляющими сервера имен (например //DHCP client//) и службами,​ использующими данные сервера имен. ​Статические ​адреса DNS серверов, в случае использования **resolvconf**, задаются внутри ​/​etc/​network/​interfaces (подробнее ​об этом ​- в разделе настройки).
  
 ===== Настройка сети ===== ===== Настройка сети =====
  
-Ознакомившись с основными конфигурационными файлами,​ можно посмотреть на [[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda/#​network|команды управления сетью]]. Выше уже говорилось о команде **ifup**, **ifdown**, но данные средства не совсем универсальны,​ допустим в дистрибутивах RH данных команд по умолчанию нет. Кроме того, в новых дистрибутивах появилось новое высокоуровневое средство управления сетью - команда **ip**. ​Но в текущем посте я его рассматривать не буду. Ему я посвящу отдельный пост. +Настройка сети подробно разобрана в [[wiki:​настройка_сети_вручную|отдельной статье]].
- +
-Итак, чтобы быть уверенным в работоспособности ​команды в любом дистрибутиве,​ необходимо ​пользоваться ​двумя основными командами-старичками. Это [[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda/#​ifconfig|ifconfig]] и [[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda/#​route|route]]. Первая команда (ifconfig) отвечает за **настройку сетевых интерфейсов** (//ip, маска, шлюз//​),​ вторая (route) - **настройка маршрутизации**. Хочется заметить,​ что выполнение данных команд ​без отключения стандартного скрипта запуска сетевой подсистемы внесет изменения только до первой перезагрузки/​перезапуска сетевой службы, т.к. если пораскинуть мозгами, то можно понять,​ что скрипт ///​etc/​init.d/​networking//​ при очередном запуске перечитает указанные выше конфиги и применит старые настройки. Соответственно,​ выход для постоянной установки настроек - либо команда ifconfig с соответствующими параметрами - вписать ​в [[http://​www.k-max.name/​linux/​nachalo-etapy-zagruzki-os-linux-v-sxeme/#​init|rc.local]],​ либо поправить руками соответствующие конфиги сетевых интерфейсов. +
- +
-Так же, если выполняется команда ifconfig с недостающими параметрами (например только IP адрес), то остальные дополняются автоматически (например бродкаст адрес добавляется по умолчанию с хостовым адресом, оканчивающимся на 255 и маска подсети по умолчанию берется 255.255.255.0). +
- +
-Маршрутизация для имеющихся интерфейсов всегда поднимается автоматически силами ядра. Вернее сказать,​ прямые марштуры в сеть, в которую смотрит поднятый интерфейс формируются автоматически,​ силами ядра. Поле gateway (шлюз) для таких записей показывает адрес выходного интерфейса или *. Если есть необходимость организовать свои маршруты,​ то необходимо воспользоваться [[http://​www.k-max.name/​linux/​osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda/#​route|командой route]]. Данной командой можно добавлять и удалять маршруты,​ но опять же, это поможет только до перезапуска /​etc/​init.d/​networking (или другого скрипта,​ отвечающего за вашу сеть). Чтобы маршруты добавлялись автоматом, ​необходимо так же, как и с ifconfig - добавить команды добавления маршрутов в rc.local, либо поправить руками соответствующие конфиги сетевых интерфейсов (например в Deb - **/​etc/​network/​options**). +
- +
-По каким правилам формируются маршруты к сетям, я в [[http://​www.k-max.name/​linux/​osnovnye-ponyatiya-setej/#​route|первой части, на примерах нескольких маршрутизируемых сетей]].+
  
 ===== Диагностика сети Linux ===== ===== Диагностика сети Linux =====