Linux ubuntu где хранятся настройки сети

Настройка сети в 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 адреса. Пример:

Читайте также:  Monodevelop windows нет c

В современных дистрибутивах 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 через конфиг-файлы, ч.1

Первое моё общение с Линуксом состоялось около шести лет назад. Тогда это был какой-то свежевышедший Red Hat, который мы с другом смогли установить, но при этом войти в него у нас так и не получилось.
Однако статья не об этом. Позже через мои руки и голову прошли почти все семейства дистрибутивов Linux, и везде я замечал свои подходы к автонастройке сети. И в этом цикле статей я постараюсь осветить наиболее популярные из них. Надеюсь, они будут полезны тем пользователям, которые пока ещё нажимают на кнопки и проставляют галочки в графических менеджерах настройки, но уже понимают, что это не true 🙂
Возможно познавательными эти статьи будут и тем, кто (не от большого знания) пишет свои скрипты управления сетью и помещает их в какой-нибудь rc.local

Итак, в первой части речь пойдёт о семействе номер один, одном из самых обширных по числу дистрибутивов, Red Hat based.

Сюда, например, относятся такие используемые сейчас дистрибутивы, как:

  • Fedora
  • RHEL/CentOS
  • Mandriva
  • ASPLinux

Служебные скрипты для настройки сети и сами конфиг-файлы в этих дистрибутивах хранятся по традиции в каталоге /etc/sysconfig/network-scripts/
Там вы найдёте несколько скриптов ifup-* и столько же ifdown-*, которые, соответственно, поднимают или опускают определённый тип интерфейса, а также ifcfg-* (звёздочка — это имя), где хранятся настройки этих самых интерфейсов.
Если сеть ещё не настроена, то вы обнаружите там ifcfg-lo, описывающий интерфейс loopback. В имеющейся у меня под рукой Fedora Core 7 этот файл выглядит следующим образом: (комментарии из файла удалены)

DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

Не все параметры, перечисленные здесь являются обязательными. Зачастую чтобы задать интерфейс достаточно указать IPADDR и NETMASK. Параметр DEVICE необходим, если вы хотите, чтобы в имени скрипта после «ifcfg-» стояло не имя интерфейса, а какое-нибудь другое слово. Здесь же можно указывать такие параметры как GATEWAY, BOOTPROTO (static или dhcp), HWADDR (если есть желание изменить mac-адрес интерфейса) и так далее. Полный список возможных параметров зависит от типа поднимаемого интерфейса и дистрибутива. А, учитывая скудность официальной информации, его можно узнать и познать только перелопатив скрипты.

Такими конфиг-файлами можно задавать различные ppp-интерфейсы, ip-туннели, vlan’ы и так далее.

Следующий пример показывает настройку ipip-туннеля (ifcfg-tun0):
DEVICE=tun0
MY_OUTER_IPADDR=172.16.0.2
PEER_OUTER_IPADDR=192.168.0.1
MY_INNER_IPADDR=10.0.0.2
PEER_INNER_IPADDR=10.0.0.1
TYPE=IPIP
TTL=255

В этом примере мы, имея адрес 172.16.0.2, создаём туннель с машиной 192.168.0.1, указывая TTL=255, и присваиваем туннелю адрес 10.0.0.2 peer 10.0.0.1.

Не все знают, что помимо файлов ifcfg-* в этом же каталоге можно помещать соответствующие им файлы rule-* и route-*
Они нужны, соответственно, чтобы прописывать правила маршрутизации и сами маршруты ( ip rule, ip route ), например при использовании source-policy routing.

Для указанного выше туннеля эти файлы могут выглядеть так.

rule-tun0:
from 10.0.0.2 lookup mytable

route-tun0:
default dev tun0 table mytable
192.168.0.0/24 dev tun0

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

Ещё одна интересная возможность — автоматическое создание алиасов. Если у вас есть интерфейс eth0 с адресом 192.168.0.1, а вы хотите повесить ещё и 192.168.0.2, то достаточно создать файл ifcfg-eth0:1, куда вписать помимо вышеперечисленных параметров (IPADDR, NETMASK и так далее), ещё один — REALDEVICE=eth0.
Если же вдруг возникла необходимость в создании большого числа алиасов, а отдельные файлы для каждого создавать не хочется, то и тут есть выход: нас спасёт ifcfg-eth0-range, который может выглядеть так:
IPADDR_START=192.168.0.5
IPADDR_END=192.168.0.15
CLONENUM_START=3

Читайте также:  Файл защищен mac os

Этот пример создаст интерфейсы eth0:3 — eth0:13 с адресами от 192.168.0.5 до 192.168.0.15.

Ну и, наконец, нельзя не упомянуть о каталогах ifup.d и ifdown.d, лежащих там же (в /etc/sysconfig/network-scripts).
В эти каталоги вы можете поместить свои файлы, которые будут выполняться при поднятии и опускании интерфейса. Вашим скриптам будет передан один параметр $1 — это имя интерфейса, который был поднят или опущен.

Имея сеть, настроенную по этим принципам, вы всегда можете поднять/опустить отдельный интерфейс командой ifup name (ifdown name), где name — это ваш интерфейс. Чтобы перезагрузить всю сеть, достаточно набрать service network reload.

Следующая часть будет посвящена не семейству, а одному дистрибутиву — Alt Linux. Несмотря на его прямые RedHat-корни, разработчики практически полностью заново написали всю систему управления сетью, которая получила имя etcnet и заслужила (на мой взгляд) более пристального внимания 🙂

Источник

Где в системах с systemd лежат файлы конфигурации сети и прочих сервисов?

В дистрибутиве который у меня стоял раньше, сеть настраивалась в файле /etc/network/interfaces, всё понятно и красиво, как во всех гайдах в интернете. Но вот сейчас я поставил минт, и смотрю что в этом файле кроме локальной петли ничего нету. Я сразу подумал, как же тогда интерфейс при запуске сам поднялся то, если там не прописано чтобы он поднимался, там вообще ничего нет. Потом ещё заметил ненормальные названия интерфейсов и пошел гуглить. Из нагугленного понял, что виновник всей этой вакханалии и хаоса некий systemd, который кроме своей задачи запуска системы позволяет себе ещё что-то делать. Ну полез я в папку /etc/systemd/network, а там пусто. Ну и где мне теперь искать куда настройки сети прописаны? Гугл выдет только стандартный путь как в нормальных дистрибутивах.

mint на базе убунты а там netplan.io запилили вроде

cast intelfx

И как уже им пользоваться? Зачем они вообще всё это делают? Всё же прекрасно работало.

Ну и что это? Это же управление нетворк менеджером из терминала. Я и так в нетворк менеджере могу всё прописать. Мне надо знать где сами конфиги лежат в минте этом, и зачем оно так работает.

как во всех гайдах в интернете
Потом ещё заметил ненормальные названия интерфейсов
некий systemd

Ты к нам из 2013го?

Ну и где мне теперь искать куда настройки сети прописаны?

Читай в документации к своему дистрибутиву. В линуксе есть несколько способов настройки сети — interfaces, network manager, networkd etc. Настраиваются они все по разному.

0 Имеем подсказку nmcli c s

1 Читаем man nmcli , в секции SEE ALSO находим nm-settings(5)

2 Внимательно читаем nm-settings(5)

3 Обращаем внимание в секции FILES на

/etc/NetworkManager/system-connections or distro plugin-specific location

5 Настраиваем сеть.

Так зачем мне нетворк менеджер? Я и так могу в нетворк менеджере натыкать. Мне нужен сам файл где эти все настройки прописаны.

Ну так в минте этом только и в графической оболочке через нетворк менеджер и настраивается. Понаделали мусора какого-то, что теперь ничего не работает, ну за-то стильно, модно, молодёжно.

Имена интерфейсов можно назначать через правила udev привязав конкретное имя к конкретному MAC.
при этом само имя может быть любым.

Хорошо, давай вместе.

Покажи вывод nmcli c s

Покажи вывод ls -l /etc/NetworkManager/system-connections/

А можно сделать чтобы всё по человечески было как раньше?

Ну так в минте этом только и в графической оболочке через нетворк менеджер и настраивается

Графические оболочки есть не только у NM. Но, если в минте действительно по умолчанию используется NM (что может быть не так, так как в первом же коммите сказали про убунтовский netplan), то и смотри в его файлы настройки, в чём проблема.

У всех всё работает.

Ну и что это такое? Файл с настройками интерфейса не так должен выглядеть.

ПРОБЛЕМА В ТОМ ЧТО Я НЕ МОГУ НАЙТИ ФАЙЛЫ НАСТРОЙКИ Ну зачем это всё? Кому от этого лучше стало?

Оно включено не во всех дистрибутивах с systemd

Смотрю в 18 убунте: Файл interfaces есть, то есть можно выключить нэтворк-манагер и прописать в него всё по-старинке. Разве нет?

Файл конфигурации соединения для NetworkManager

Файл с настройками интерфейса не так должен выглядеть.

А как должен? Сейчас такие времена, что в одном дистрибутиве могут поддерживаться и ifupdown и systemd-networkd и netplan и NetworkManager

ПРОБЛЕМА В ТОМ ЧТО Я НЕ МОГУ НАЙТИ ФАЙЛЫ НАСТРОЙКИ

Затем, что сейчас не 1999, а 2019. С одной стороны, ноутбуки ­— тут ноут может быть подключен по проводу, там по одной вайфай сети, тут по другой, а где-то вообще через usb-модем с мобильным инетом, interfaces тут сильно не в тему. С другой стороны, контейнеры, облака и прочая, где часто требуется централизованное управление большим количеством сетевых настроек, там и interfaces не в тему, да и голый NM не годится, отсюда всякие netplan/networkd.

То, что вы настраивали а etc network interfaces это одно, это конфигурационный файл для сервиса networking.

Настройки networkmanager это вообще другое, файл interfaces networkmanager не читает и не использует.

Более того настраивать интерфейсы одновременно в etc network interfaces и networkmanager нельзя.

Где networkmanager хранит свои настройки смотрите в его документации.

Фактически на основе файла etc network interfaces вызываются скрипты, в которых вызываются консольные утилиты iproute2, а ранее ifconfig.

Даже сейчас в Ubuntu с нетплан вы можете прописать настройки сети в файле interfaces.

Читайте также:  Synaptics touchpad driver windows 10 64 bit samsung

в одном дистрибутиве могут поддерживаться и ifupdown и systemd-networkd и netplan и NetworkManager

NM при этом может ещё поддерживать старую редхатовскую ifcfg схему через плагин ifcfg-rh 🙂

Файлы настройки чего, какого сервиса?

У Нетворк манагер свои файлы и их не надо руками трогать, у нетворкинг — свои.

Откройте документацию по нетворкманагер и документацию по убунту и прочтите как настраивается сеть.

Но чтобы пользоваться файлом interfaces надо как-то удалить все настройки из всех этих менеджеров.

Так я вот и не знаю какой именно сервис у меня тут сеть подымает, ведь они все тут есть.

В разных дистрибутивах вообще свои файлы настройки сети, так было пока все не стали переходить на система.

Можете посмотреть настройки сети в генту с опенрс, слакваре.

Структура файла настроек сети зависит от сервиса, который управляет сетью в дистрибутиве.

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

Их можно отключить. Почитай как в системд включать и отключать сервисы (юниты).

Ок. И ради чего весь этот цирк сделали?

чтобы поглумиться над такими недоумками, что не могут понять, очевидно же

Но чтобы пользоваться файлом interfaces надо как-то удалить все настройки из всех этих менеджеров.

У меня Debian Buster и networkmanager просто не поставлен, или поставлен и тут же удалён обратно. В общем не чисти их конфиги, просто удали не нужные сервисы.

И ради чего весь этот цирк сделали?

Ради того чтобы затруднить создание дистров отличных от RedHat, который являясь лидером разработки systemd через него будет контролировать развитие конкурирующих проектов.

Ну так ты скажешь мне, недоумку, зачем?

Ну как, тебе как дистростроителю не нравится уже что-то существующее, ты хочешь что-то новое, со своим видением.

Ты пишешь свою вещь и она постепенно едет в продакшн в твоём дистрибутиве.

Откуда по твоему появился systemd, pulseaudio, cinnamon, mate.

У тебя, как администратора локалхоста есть выбор что использовать, если тебе не нравится сделанное разработчиками дистрибутива.

Но чтобы пользоваться файлом interfaces надо как-то удалить все настройки из всех этих менеджеров.

Так я вот и не знаю какой именно сервис у меня тут сеть подымает, ведь они все тут есть.

Скорее всего, в mint сеть обслуживают ifupdown и NetworkManager.

  • смотрим, что за файлы в каталоге /etc/netplan и их содержимое
  • проверяем systemd-networkd networkctl status
  • проверяем как стартовала сеть systemctl status networking.service
  • проверяем systemctl status network-manager.service
  • проверим разрешённость NetworkManager nmcli n
  • посмотрим, какими интерфейсами управляет NetworkManager nmcli d s

Проанализировав состояние, можем настраивать /etc/network/interfaces, отключать ненужные сервисы и т.д.

Мне надо знать где сами конфиги лежат

И что ты будешь делать с этим знанием?

В убунтах уже давно, по умолчанию, netplan. Открываешь /etc/netplan, там файл конфига в формате yaml, что то типа:

Всё было включено, нетворк менеджер управлял интерфейсами, всё остановил, а сеть работает дальше.

Пропишу в конфиги то что мне нужно.

Ради того чтобы затруднить создание дистров отличных от RedHat, который являясь лидером разработки systemd через него будет контролировать развитие конкурирующих проектов.

1. Red Hat пилит systemd и не только для своих нужд. 2. Компания делится своими разработками с сообществом. 3. Разработчики дистров сами решают стоит ли им использовать эти наработки. 4. Не хотите использовать systemd, берите что-то другое. Сами его поддерживаете и обеспечивайте его интеграцию с другими проектами.

Все легко и просто.

Нетпалм у меня управляется нетворк менеджером, я отключил его, но сеть всеравно работает дальше. Что за сатанизм то? Есть ещё что-то на чём сеть может висеть?

Судя по всему, сеть настроил NetworkManager, смотри nmcli -t c s Проводное\ соединение\ 1

Походу так и есть. Я затупил, сеть же и не должна была падать после остановки всех служб, ведь они просто один раз настройки указывают для интерфейсов. Вырубил всё и после этого кабель вытянул, сеть поднялась после запуска нетворк менеджера. Но странно почему так, ведь на другом дистрибутиве у меня сеть падала когда нетворкинг вырубаешь, а тут пашет, без всего.

Немного не по теме. Пока разбирался с systemd увидел там вот эту вот забавную фигню gvfs-metadata.service, это что анальные зонды от разрабов убунты?

Если тебе не нужно ничего такого, что нельзя сделать через nmcli, то и настраивай через nmcli без прописывания в конфиги.

Да это дрочево какое-то. Намного проще же просто в конфиг прописать. Как например в этом nmcli pppoe настроить?

Обычно так говорят виндо- и макоюзеры о любом командно-строчном интерфейсе и любых конфигах.

Намного проще же просто в конфиг прописать.

Ага, только сначала надо как минимум выяснить, где он находится.

Как например в этом nmcli pppoe настроить?

Не знаю, я вообще pppoe настраивал один раз в жизни свыше 10 лет назад. Попробуй посмотреть man nmcli-examples .

ты думаешь networkmanager VS netplan — нет же, оно всё работает совместно (надеюсь и не поломается, потому как чинить никто[может я ошибаюсь?] не умеет).

виновник всей этой вакханалии и хаоса некий systemd, который кроме своей задачи запуска системы позволяет себе ещё что-то делать

И ещё детей ест.

gvfs-metadata.service, это что анальные зонды от разрабов убунты

Нет. Это от рептилоидов-жидомасонов. Они прописывают себя в BIOS и потом сразу в прошивку сетевой карты твоего роутера. Так что всё, ты под колпаком, можешь уже не дёргаться.

> ПРОБЛЕМА В ТОМ ЧТО Я НЕ МОГУ НАЙТИ ФАЙЛЫ НАСТРОЙКИ

Теперь реестр. Если хочешь без реестра/systemd, используй Devuan, Knoppix или PClinuxOS

Источник

Оцените статью