Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
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 ===== |