в каком файле ос linux хранятся соответствия ip адресов и dns имен
Ручная настройка сети в Linux
Привязка интерфейса к карте
Конфигурационный файл переименования интерфейсов обновляется автоматически при первом обнаружении очередной сетевой карты и находится в файле /etc/udev/rules.d/70-persistent-net.rules. Файл состоит из строк такого содержания:
Видно, что нумерация опирается на аппаратный (MAC) адрес карты. Если в компьютере заменить карту, то интерфейс eth0 станет недоступным, а новая карта получит имя eth1. Если есть желание вручную назначить имена картам, то можно отредактировать этот файл, выставив желаемые соответствия между MAC адресами именами интерфейсов (возможно потребуется перезагрузка).
ifcfg
Классическая утилита конфигурации сетевых интерфейсов ifcfg
route
Настройка таблицы маршрутизации route
В современных дистрибутивах линукса на смену ifconfig и route приходит универсальная утилита ip
Адреса серверов DNS и имя локального домена вписываются в файл /etc/resolv.conf
Ручная настройка сети в ArchLinux
Для просмотра доступных сетевых интерфейсов используется команда ip link
Содержимое enp1s0-work после редактирования
Базовые команды netctl
Ручная настройка сети в Ubuntu
Ручная настройка сети в CentOS 6
Общие настройки сети
Конфигурация интерфейса
Файлы в каталоге /etc/sysconfig/network-scripts с именами вида ifcfg-eth0
Интерфейс, получающий адрес по DHCP
Дополнительный IP адрес на интерфейсе eth1
Инициализация VLAN на eth1
Настройка DNS
Файл /etc/resolv.conf
Ручная настройка имен хостов файл /etc/hosts
Настройка брандмауэра
Файл /etc/sysconfig/system-config-firewall правила для настройки программой system-config-firewall
Файл /etc/sysconfig/iptables текущие правила, сохраненные на случай перезагрузки.
После ручного изменения правил их можно сохранить командой service iptables save
Блог о системном администрировании. Статьи о Linux, Windows, СХД NetApp и виртуализации.
Доброго времени, уважаемые читатели. Публикую вторую часть статьи о сетевой подсистеме Linux. В текущей части основной упор сделан на реализацию сети в Linux (как настроить сеть в Linux, как продиагностировать сеть в Linux и поддерживать в рабочем состоянии сетевую подсистему в Linux).
Настройка TCP/IP в Linux для работы в сети Ethernet
Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только петлевого интерфейса, но если необходимо объединить хосты между собой, естественно, необходимо наличие сетевого интерфейса, каналов передачи данных (например витая пара), возможно, какого-либо сетевого оборудования. Так же, необходимо наличие установленных утилит для настройки сети (/sbin/ifconfig, /sbin/route и др.), обычно поставляемые в пакете net-tools. Так же необходимо наличие конфигурационных файлов для сети (например /etc/hosts) и поддержку сети ядром Linux.
Параметры сети
Файлы настроек сети в Linux (конфигурационные файлы)
Для понимания работы сети в Linux, я бы обязательно посоветовал ознакомиться со статьей «Этапы загрузки Linux». В целом, вся работа Linux основана на процессе init, который рождается при загрузке ОС и плодит своих потомков, которые в свою очередь и выполняют всю необходимую работу, будь то запуск bash или демона. Да, и вся загрузка Linux основана на скриптах bash, в которых прописана вся последовательность запуска мелких утилит с различными параметрами, которые последовательно запускаются/останавливаются при запуске/остановке системы. Аналогично запускается и сетевая подсистема Linux.
Каждый дистрибутив Linux имеет слегка отличающийся от других механизм инициализации сети, но общая картина, думаю, после прочтения будет ясна. Если просмотреть стартовые скрипты сетевой подсистемы какого-либо дистрибутива Linux, то, как настроить конфигурацию сети с помощью конфигурационных файлов, станет более-менее понятно, например у Debian (за основу возьмем этот дистрибутив) за инициализацию сети отвечает скрипт /etc/init.d/networking, просмотрев который:
The ifup and ifdown commands may be used to configure (or, respectively, deconfigure) network interfaces based on interface definitions in the file /etc/network/interfaces.
/etc/hosts
Данный файл хранит перечень IP адресов и соответствующих им (адресам) имен хостов.Формат файла ничем не отличается от мастдайного:
Исторически, данный файл использовался вместо службы DNS. В настоящее время, файл так же может использоваться вместо службы DNS, но только при условии, что в вашей сети количество машин измеряется в единицах, а не в десятках или сотнях, потому что в таком случае, придется контролировать корректность данного файла на каждой машине.
/etc/hostname
Данный файл содержит NetBIOS-имя хоста:
/etc/networks
Данный файл хранит имена и адреса локальной и других сетей. Пример:
При использовании данного файла, сетями можно управлять по имени. Например добавить маршрут не route add 192.168.1.12, а route add home-network.
/etc/nsswitch.conf
Файл определяет порядок поиска имени хоста/сети, за данную настройку отвечают строки:
Параметр files указывает использовать указанные файлы (/etc/hosts и /etc/networks соответственно), параметр dns указывает использовать службу dns.
/etc/host.conf
Файл задает параметры разрешения имен для резолвера
/etc/resolv.conf
Данный фал определяет параметры механизма преобразования сетевых имен в IP адреса. Простым языком, определяет настройки DNS. Пример:
Настройка сети
Так же, если выполняется команда ifconfig с недостающими параметрами (например только IP адрес), то остальные дополняются автоматически (например бродкаст адрес добавляется по умолчанию с хостовым адресом, оканчивающимся на 255 и маска подсети по умолчанию берется 255.255.255.0).
По каким правилам формируются маршруты к сетям, я в первой части, на примерах нескольких маршрутизируемых сетей.
Диагностика сети Linux
Существует большое количество инструментов диагностики сети в Linux, зачастую, они очень похожи на утилиты от Microsoft. Я рассмотрю 3 основные утилиты диагностики сети, без которых выявить неполадки будет проблематично.
Думаю, что данная утилита знакома чуть ли не каждому. Работа этой утилиты заключается в отправке т.н. пакетов ICMP удаленному серверу, который будет указан в параметрах команды, сервер возвращает отправленные команды, а ping подсчитывает время требуемое отправленному пакету, чтобы дойти до сервера и вернуться. Например:
Как видно, из приведенного примера, ping выводит нам кучу полезной информации. Прежде всего, мы выяснили, что можем установить соединение с хостом ya.ru (иногда говорят, что «хост ya.ru нам доступен»). Во-вторых, мы видим, что DNS работает корректно, потому что «пингуемое» имя было корректно преобразовано в IP адрес (PING ya.ru (87.250.251.3)). Далее, в поле icmp_seq= указана нумерация отправляемых пакетов. Каждому отправляемому пакету последовательно присваивается номер и если в данной нумерации будут «провалы», то это нам расскажет о том, что соединение с «пингуемым» неустойчиво, а так же может означать, что сервер, которому шлют пакеты перегружен. По значению time= мы видим, сколько времени пакет путешествовал до 87.250.251.3 и обратно. Остановить работу утилиты ping можно клавишами Ctrl+C.
Следует отметить, что данная утилита не всегда надежный инструмент для диагностики. Удаленный сервер может блокировать ответы на ICMP запросы.
traceroute
Как видно, можно проследить маршрут от маршрутизатора провайдера 243-083-free.kubtelecom.ru (213.132.83.243) (Юг россии) до конечного хоста в www.yandex.ru (213.180.204.3) в москве.
Данная утилита посылает запросы серверам DNS и возвращает информацию о заданном домене. Пример:
Другие утилиты диагностики
ping, dig и другие утилиты диагностики с параметрами, можно найти в посте Основные команды Linux: сеть.
Подключение новой сетевой карты
Подключение и запуск новой сетевой карты сводится к выполнению нескольких шагов:
1. Физическое подключение карты
3. Просмотр вывода dmesg на обнаружение системой новой сетевой карты:
Посмотрим вывод ДО подключения новой карты:
в выводе видно, что в системе есть 2 сетевые карты eth1 и eth2. Подключаем третью и смотрим вывод:
Резюме
Думаю, на сегодня это все. Когда начал писать данную статью, думал что впишусь в один пост, но он получился громаден. Посему было решено разбить статью на две. Итого, я постарался изложить, не пошаговое хауту по настройке сети, а изложить принцип и объяснить понимание того, как же запускается и работает сеть в Linux. Очень надеюсь, что мне это удалось. Буду рад вашим комментариями и дополнениям. Со временем, буду статью дополнять.
В каком файле ос linux хранятся соответствия ip адресов и dns имен
Используется для сервера доменных имен (DNS). Размещается тут опционально, однако здесь нормальное месторасположение этой информации.
FBSD
FBSD
FBSD
FBSD
Примечание:
RHL == Red Hat Linux 4
FBSD == FreeBSD 6.3
ASPL == ASPLinux 10
Как узнать IP DNS сервера в Linux
DNS (Domain Name System — система доменных имён) является важным элементом сети. Без DNS не работали бы Интернет-браузер, почтовые сервера, стриминговые сервисы и другие.
Задача DNS сообщать IP адрес запрошенного имени хоста (обычно домена веб-сайта).
Эта служба работает на специальных компьютерах, называемых DNS сервер — они хранят базу данных записей, включающей в себя имена хостов и соответствующие им IP адреса. DNS серверы представляют собой иерархическую структуру, но нам важно только то, что на наш запрос с именем хоста DNS сервер отвечает, какой у этого хоста IP адрес.
То есть DNS решает проблему, что нам не нужно помнить/знать IP адреса всех сайтов, которые мы посещаем.
DNS это обширная и интересная тема, но в этой заметке мы только поговорим, как узнать, к какому именно DNS серверу делаются запросы с данного компьютера на Linux? То есть мы научимся определять IP адрес используемого DNS сервера.
Имеется несколько способов сделать это, мы рассмотрим самые универсальные, подходящие для Linux, BSD, и других Unix-подобных систем.
Как узнать какой DNS сервер используется
1. Настройки DNS в системе хранятся в файле /etc/resolv.conf, то есть IP адрес DNS сервера можно узнать просто посмотрев этот файл.
С помощью команды cat:
С помощью команды less:
Или с помощью команды grep:
Все эти команды выведут одинаковые результаты, например в моём случае это:
Запись может быть только одна или их может быть несколько. В первую очередь используется первый указанный DNS сервер, если к нему не удаётся получить доступ, то используются запасные DNS (если они указаны).
2. Если вам нужен альтернативный метод (например, вы предполагаете, что настройки DNS изменены сетевым подключением), то вы можете использовать программу dig:
Используемый сервер имён показан в строке начинающейся с ;; SERVER:
А в этом разделе, кстати, вы можете узнать IP адрес любого сайта:
3. Ещё один способ узнать IP адрес сайта, а заодно и IP DNS сервера к которому делаются запросы — с помощью команды nslookup:
В этих строках показан IP используемого DNS сервера:
А в этой строке IP адрес интересующего сайта:
Как в Linux определяется порядок источников для разрешения имён (приоритет файла hosts и DNS)
Перед доступом к сайту компьютеру необходимо узнать его IP. Обычно для этого используется запрос к DNS серверу, который веб-браузер или операционная система выполняют автоматически, без действий пользователя.
В операционных системах Windows и Linux имеется файл hosts, в котором можно установить IP адреса для любых имён — хостов и доменных имён. По умолчанию операционные системы работают так:
В операционной системе Linux можно поменять приоритет источников для получения IP адреса или вовсе отключить некоторые из них. Для этого используется файл /etc/nsswitch.conf
Для чего нужен /etc/nsswitch.conf
Файл /etc/nsswitch.conf — это «Name Service Switch configuration file», то есть конфигурационный файл переключения служб имён. Он устанавливает настройки не только службы преобразования имён хостов и доменных имён, но эта настройка, пожалуй, самая востребованная.
Строка, которая отвечает за преобразование имён хостов начинается на «hosts». В моей системе эта строка выглядит так:
hosts — это указание на службу, для которой предназначена строка.
files означает файл, относящийся к этой службе. У каждой службе в системе свой файл, в данном случае имеется ввиду /etc/hosts
Кстати, для других служб файлы следующие:
Поскольку слово files стоит в строке первым, то в начале имя хоста (доменное имя) ищется в файле /etc/hosts
mymachines — судя по названию, означает имя машины. Можно предположить (информации в документации я не нашёл), что если искомое имя совпадает с именем машины, то возвращается IP адрес текущей машины
myhostname — аналогично, документацию я не нашёл, но ключевое слово имеет отношение имени текущего хоста, возможно, работает как и mymachines
resolve — это системная служба, подробности:
Строка [!UNAVAIL=return] означает, что если предыдущая служба недоступна, то немедленно будет возвращён результат без запроса в следующем источнике. Поскольку resolve кэширует и валидирует DNS, то, видимо, без resolve нет смысла делать запрос через dns. Также resolve отвечает за преобразования некоторых локальных имён, в том числе «localhost» и «localhost.localdomain» (а также любые имена хостов, заканчивающиеся на «.localhost» или «.localhost.localdomain«), а также «_gateway«, который преобразовывается в адрес текущего маршрута по умолчанию.
Кстати, по этой причине возможен следующий фокус (будет пропингован IP адрес маршрута по умолчанию):
dns — эта запись означает запрос имён у DNS серверов
Как можно увидеть, в первую очередь приоритет отдаётся /etc/hosts, и если ничего не найдено с помощью других сервисов, то только в этом случае для разрешения имени задействуется DNS.
Другие подробности, в том числе про условия передачи управления следующей службы, смотрите в справочной странице файла nsswitch.conf:
Когда вступают в силу изменения в файле nsswitch.conf. Почему не работают изменения в файле nsswitch.conf
Если вы будете редактировать настройки файла nsswitch.conf, то помните, что службы, которые его используют, считывают файл только один раз. Если после этого в файл были сделаны изменения, то служба по-прежнему будет использовать старый вариант! Получается, чтобы изменения вступили в силу, нужно перезагрузить операционную систему.
Как отключить файл /etc/hosts
Чтобы отключить файл /etc/hosts, нужно в файле /etc/nsswitch.conf найти строку, которая начинается на hosts и удалить из неё слово files.
Например, начальный вид строки:
Для отключения /etc/hosts нужно чтобы строка выглядела так
Как сделать приоритет DNS выше файла /etc/hosts
Чтобы запросы к DNS серверу выполнялись до поиска имён в файле /etc/hosts, нужно в файле /etc/nsswitch.conf найти строку, которая начинается на hosts и слово dns поставить ДО слова files. Например, так:
Как оптимизировать файл /etc/nsswitch.conf
Я не проверял этот совет на своей ОС и не мору ручаться, что после него всё будет работать как надо, но я наткнулся на рекомендацию в файле /etc/nsswitch.conf из строки с hosts удалить всё лишнее и записать её в следующем виде:
Повторюсь, не мору ручаться за верность последнего совета.
Настройка TCP/IP в Linux для работы в сети Ethernet

