Сетевые настройки в centos 7

Часто задаваемые вопросы по теме статьи (FAQ)

Стоит ли удалять NetworkManager?

Все зависит от конкретной ситуации. Я чаще всего удаляю, потому что мне его функционал не нужен. В подавляющем большинстве случаев, я настраиваю сеть в centos один раз во время установки сервера. Какой мне смысл оставлять NM в системе и постоянно его обновлять? Тем не менее Redhat настоятельно рекомендует использовать NetworkManager для настройки сети и в этом есть определенный смысл. К примеру, если вы будете проходить сертификацию, то вам 100% нужен будет этот инструмент, так как с его помощью можно быстрее настроить сеть и вероятность ошибки будет минимальной. Так что решайте сами по месту, нужен вам Network Manager или нет.Есть ли разница в том, как настраивать hostname, через правку файла или команду hostnamectl?

Принципиальной разницы нет. Результат будет один и тот же.Как настроить proxy в centos?

Централизованно для всей системы настроить proxy не получится. Для каждой службы нужно это делать отдельно — yum или dnf, браузер и т.д.Нужно ли отключать ipv6 в системе?

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

Именование сетевых интерфейсов в CentOS

Классическая схема именования сетевых интерфейсов в Linux присваивает имена eth0, eth1 и так далее по порядку. Но эти имена не привязываются жестко к интерфейсам и после перезагрузки при наличии нескольких сетевых интерфейсов, эти имена могут поменяться. Это может доставлять некоторые проблемы, при настройке, например, межсетевого экрана через firewalld или iptables. В связи с этим начиная с RedHat 7 и CentOS 7, решено было назначать имена сетевых интерфейсов на основе иерархии различных схем именования. По умолчанию systemd будет поочередно применять схемы именования, остановившись на первой доступной и применимой. Имена присваиваются в автоматическом режиме, остаются неизменными даже если аппаратные средства добавлены или изменены. С другой стороны, такие имена интерфейсов менее читабельны, например, enp5s0 или ens3, чем традиционные eth0 и eth1.

Можно вернуться к стандартному имени интерфейса Linux с помощью следующих действий.

Отредактируйте файл /etc/default/grub:

В строку GRUB_CMDLINE_LINUX нужно добавить:

net.ifnames=0 biosdevname=0

Пример полной строки:

GRUB_CMDLINE_LINUX="consoleblank=0 fsck.repair=yes crashkernel=auto nompath selinux=0 rhgb quiet net.ifnames=0 biosdevname=0"

Обновите конфигурацию grub:

Переименуйте конфигурационный файл сетевого интерфейса:

И заменить значение DEVICE:

 

Сохраните файл, перезагрузите сервер и проверьте все ли в порядке:

Интерфейс теперь называется eth0.

Что делать, если CentOS не видит сетевую карту?

Вы установили сервер, загрузились и обнаружили, что в системе нет ни одной сетевой карты. Что в таком случае делать? Первым делом посмотрите вывод команды dmesg и поищите там поминание о своей карте. Возможно, она в системе есть, просто не активирована. Активировать ее можно с помощью nmtui, а котором я рассказывал выше.

Там есть пункт меню Activate connection, нужно в него зайти и активировать вашу сетевую карту. После этого ее можно будет настраивать.

Если же вашей сетевой карты нет в системе, то нужно поискать в интернете по модели информацию об этой сетевой карте. Возможно в репозиториях будут драйвера для нее. Это достаточно распространенная ситуация. Чаще всего драйвера найдутся и их необходимо будет правильно установить.

Есть еще вероятность, что вы не увидите своей карточки при выводе команды ifconfig, если в эту карту не воткнут сетевой провод. Чтобы наверняка посмотреть все интерфейсы, необходимо использовать ключ -a:

Есть еще один способ поискать сетевую карту в системе. Установите пакет pciutils:

И посмотрите вывод команды:

Если сетевая карта видится системой, то должно быть что-то в этом роде:

Если в выводе пусто, значит сетевая карта не определена.

Сетевые настройки на сервере Debian

Вопрос настройки сети я уже кратко поднимал в теме начальной настройки Debian. Я рекомендую с ней ознакомиться и выполнить некоторые подготовительные действия, чтобы было удобнее работать далее. Сейчас мы подробно разберем все наиболее значимые нюансы сетевых настроек, которые могут пригодиться в повседневной работе.

Первоначальная настройка сети начинается во время установки сервера. Если у вас есть сетевой интерфейс и dhcp сервер в сети, то сеть сконфигурируется автоматически на основе полученных настроек и будет готова к работе. В последствии вы можете выполнить настройку сети в Debian через консоль с помощью программ ip или ifconfig. Наиболее популярным и современным средством на текущий момент является ip, поэтому в дальнейшем рассмотрим вопрос конфигурации сетевых интерфейсов с ее помощью. Про ifconfig тоже не забудем. Рассмотрим ее позже отдельно.

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

Есть 2 различные возможности изменить сеть в Debian:

  1. Настройка сети из консоли с помощью указанных ранее консольных программ.
  2. С помощью редактирования конфигурационного файла сетевых интерфейсов /etc/network/interfaces.

Мы рассмотрим оба этих варианта. Вводная теоретическая часть окончена, приступаем к практике.

Настройка сетевой карты

Иногда возникают ситуации, когда необходимо настроить или изменить настройки сетевой карты. Сразу отмечу, что настраивать сетевую карту можно только на реальном железе. На виртуальном, скорее всего, ни одна из предложенных дальше команд не приведет к какому-нибудь результату. У виртуальных сетевых адаптеров просто нет настроек. Для начала посмотрим, какие сетевые карты есть на сервере:

В моем случае это единственная сетевая карта фирмы Qualcomm. Теперь установим утилиту ethtool для настройки сетевой карты:

Посмотрим информацию о сетевой карте:

Указана текущая скорость, на которой работает карточка. Ее можно сменить в случае необходимости:

Этой командой можно изменить скорость сетевой карточки до 100Mb/s в случае, если там стояла другая скорость. Смотрим, что получилось:

Показал просто для примера, вряд ли кому-то понадобится уменьшать скорость. Чаще нужно выполнить обратное преобразование. У меня была ситуация, когда сетевая карта упорно не хотела работать на скорость 1Gb, хотя поддерживала такую работу, и свитч был гигабитный. Долго бился и пробовал различные утилиты для изменения скорости. Оказалось, что патч корд был 4-х жильный из комплекта какого-то роутера

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

У утилиты ethtool много параметров, с помощью которых можно настроить сетевую карту. Пример этих параметров можно посмотреть на сайте redhat.

Включать интерфейс при загрузке

Чтобы не включать сетевой интерфейс каждый раз вручную можно в настройках прописать ONBOOT=yes

Как вариант можно перейти в

И отредактировать с помощью

vi

файл

ifcfg-ИМЯ_ИНТЕРФЕЙСА
— например

ifcfg-enp0s3

sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

Либо под root использовать

sed

sudo sed -i sONBOOT=noONBOOT=yes /etc/sysconfig/network-scripts/ifcfg-enp0s3

Если команда выше вам не до конца понятна — изучите статью

«Основы sed»

Проверить получилось ли изменить ONBOOT на yes можно командой

grep ONBOOT !$

Подробную информацию о каждом сетевом интерфейсе можно получить выполнив nmcli connection show имя_интерфейса

Например:

nmcli connection show ens192

connection.id: ens192
connection.uuid: 5c2584c5-7d87-4826-ba2a-79713eb62a9a
connection.stable-id: —
connection.type: 802-3-ethernet
connection.interface-name: ens192
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 1618914913
connection.read-only: no
connection.permissions: —
connection.zone: —
connection.master: —
connection.slave-type: —
connection.autoconnect-slaves: -1 (default)
connection.secondaries: —
connection.gateway-ping-timeout: 0
connection.metered: unknown
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
802-3-ethernet.port: —
802-3-ethernet.speed: 0
802-3-ethernet.duplex: —
802-3-ethernet.auto-negotiate: no
802-3-ethernet.mac-address: —
802-3-ethernet.cloned-mac-address: —
802-3-ethernet.generate-mac-address-mask:—
802-3-ethernet.mac-address-blacklist: —
802-3-ethernet.mtu: auto
802-3-ethernet.s390-subchannels: —
802-3-ethernet.s390-nettype: —
802-3-ethernet.s390-options: —
802-3-ethernet.wake-on-lan: default
802-3-ethernet.wake-on-lan-password: —
ipv4.method: auto
ipv4.dns: —
ipv4.dns-search: —
ipv4.dns-options: «»
ipv4.dns-priority: 0
ipv4.addresses: —
ipv4.gateway: —

DHCP

Для автоматического получения IP-адреса от сервера DHCP мы должны задать следующее значение для опции BOOTPROTO в конфигурационном файле:


BOOTPROTO=dhcp

* в наших примерах выше данный параметр имеет значение static.

Переопределение DNS с помощью dhclient.conf

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

vi /etc/dhcp/dhclient.conf

Вставляем запись:

interface «enp0s3»
{
    supersede domain-name-servers 8.8.8.8, 8.8.4.4;
}

* где enp0s3 — имя сетевого интерфейса, который будет получать адрес от сервера DHCP. 8.8.8.8, 8.8.4.4 — адреса, которые будут настоены на интерфейсе, независимо от того, какие предложит сервер DHCP.

Или мы можем использовать адреса от DHCP, но сделать приоритетными свои:

interface «enp0s3»
{
    prepend domain-name-servers 127.0.0.1;
}

* в данном примере, мы зададим в качестве основного сервера DNS — 127.0.0.1.

Чтобы данный метод сработал в CentOS 8, необходимо открыть файл:

vi /etc/NetworkManager/NetworkManager.conf

В раздел  добавить:

dhcp=dhclient

Переопределение DNS в NetworkManager (альтернативный способ)

Метод, описанный выше по переопределению DNS не подходит для NetworkManager без изменения настройки dhcp, так как адреса будут получены и обработаны с помощью встроенных методов. Выше, предоставлено решение в виде настройки dhcp=dhclient, однако мы рассмотрим альтернативный способ, на случай, если кому-то это пригодится.

Создаем файл:

vi /etc/NetworkManager/dispatcher.d/99-resolv.conf.dhclient

#!/bin/bash
sleep 1
rm -f /etc/resolv.conf
echo ‘# Generated by dispatcher’ > /etc/resolv.conf
echo ‘nameserver 127.0.0.1’ >> /etc/resolv.conf
echo » >> /etc/resolv.conf
cat /var/run/NetworkManager/resolv.conf >> /etc/resolv.conf

* в данном примере мы создали скрипт, который сначала добавит нужную нам запись в файл /etc/resolv.conf, а после добавит туда значения, полученные от DHCP

Обратите внимание, что в конкретном примере:

  • адрес 127.0.0.1 задается в качестве приоритетного сервера DNS.
  • остальные настройки получаем от DHCP, которые NetworkManager помещает в файл /var/run/NetworkManager/resolv.conf.

Разрешаем запуск скрипта:

chmod +x /etc/NetworkManager/dispatcher.d/99-resolv.conf.dhclient

Перезапускаем сеть:

systemctl restart NetworkManager

Через 2 секунды проверяем:

cat /etc/resolv.conf

Установка шлюза по-умолчанию (default gateway)

Теперь разберемся со шлюзом по-умолчанию. В предыдущих примерах со статическим ip адресом и настройками по dhcp у нас не было необходимости указывать отдельно default gateway. Мы его устанавливали вместе с остальными настройками. Чтобы посмотреть установленный по-умолчанию шлюз в debian, можно воспользоваться следующей командой в консоли:

Это шлюз по-умолчанию (default gateway). Можно воспользоваться другими, более популярными и привычными командами:

Если получите ошибки:

Значит у вас не установлен пакет net-tools. Установить его можно следующей командой.

Сетевые инструменты из пакета net-tools объявлены устаревшими и не включены в состав базовой системы. Я ими продолжаю пользоваться, потому что мне нравится их вывод больше, чем у команды ip. Netstat мне видится более информативным, хотя по сути, они все показывают одно и то же. Отказ в пользу утилиты ip идет по той причине, что она объединяет в себе все основные сетевые инструменты. Удобнее пользоваться только ей одной для настройки сети, нежели разными утилитами для разных целей.

Если нам нужно сменить default gateway, то сначала надо удалить текущий шлюз, а потом назначить новый.

То же самое, только с помощью ip:

Проверяем, что получилось:

Все получилось. Эта настройка будет действовать до перезагрузки. Чтобы ее сохранить, либо меняйте конфигурационный файл interfaces, либо, при необходимости, придумывайте что-то еще. 

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

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

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

# ip route add default via 192.168.1.1
# ip route add 192.168.24.0/24 via 192.168.1.2
# ip route show
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.100
192.168.24.0/24 via 192.168.1.2 dev eth1
default via 192.168.1.1 dev eth

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

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

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

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

iface eth1 inet static
      address 192.168.1.100
      netmask 255.255.255.0
      up ip route add 192.168.100.0/24 via 192.168.1.1
      down ip route del 192.168.100.0/24
      gateway 192.168.1.3

Выводы

На этом, данную заметку заканчиваю. Подведу краткие итоги. Для управления физическими интерфейсами применяется команда 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

Подготовка сервера

Проверяем наличие поддержки со стороны процессора:

cat /proc/cpuinfo | egrep «(vmx|svm)»

Если команда ничего не вернет, на сервере отсутствует поддержка виртуализации или она отключена в настройках БИОС. Сам KVM поставить на такой сервер можно, но при попытке ввести команду управления гипервизором мы получим ошибку «WARNING  KVM acceleration not available, using ‘qemu’». В таком случае необходимо перезагрузить сервер, войти в БИОС, найти поддержку технологии виртуализации (Intel VT или AMD-V) и включить ее.

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

mkdir -p /kvm/{images,iso}

* каталог /kvm/images для виртуальных дисков; /kvm/iso — для iso-образов.

Объединение интерфейсов (bonds)

С помощью bonds мы можем объединить интерфейсы с целью обеспечения отказоустойчивости и/или повышения пропускной способности.

Пример настройки:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens2f0: {}
        ens2f1: {}
    bonds:
        bond0:
            dhcp4: no
            interfaces:
            — ens2f0
            — ens2f1
            parameters:
                mode: active-backup
            addresses:
                — 192.168.122.195/24
            gateway4: 192.168.122.1
            mtu: 1500
            nameservers:
                addresses:
                    — 8.8.8.8
                    — 77.88.8.8

* в данном примере мы объединяем физические интерфейсы ens2f0 и ens2f1; настройка parameters mode указываем на тип объединения — доступны варианты:

  • balance-rr (задействуются оба интерфейса по очереди, распределение пакетов по принципу Round Robin).
  • active-backup (используется только один интерфейс, второй активируется в случае неработоспособности первого).
  • balance-xor (задействуются оба интерфейса по очереди, распределение пакетов на основе политики хеширования xmit_hash_policy).
  • broadcast (задействуются оба интерфейса одновременно, пакеты передаются все интерфейсы).
  • 802.3ad (задействуются оба интерфейса по очереди, распределение пакетов на основе политики хеширования xmit_hash_policy)
  • balance-tlb (задействуются оба интерфейса по очереди, пакеты распределяются в соответствии с текущей нагрузкой)

Настройка сети через консоль с помощью networking

Кроме NetworkManager, сетями управляет служба Networking. Она интегрирована с NetworkManager и позволяет настроить все необходимые вам параметры с помощью редактирования конфигурационных файлов. Сначала нам нужно посмотреть список сетевых интерфейсов:

У меня имя сетевого интерфейса enp2s0f0. Именно на его примере дальше будет выполняться подключение к сети centos 7. Все настройки для сети Networking хранятся в каталоге /etc/sysconfig/network-scripts/. Для нашего сетевого интерфейса конфигурационный файл будет называться /etc/sysconfig/network-scripts/ifcfg-enp2s0f0.

Давайте сначала рассмотрим основные параметры, которые вам придется рассмотреть:

  • TYPE — тип соединения, проводное (Ethernet), беспроводное(Wired) и т д;
  • BOOTPROTO — способ получения IP адреса, static, dhcp или none;
  • NAME — имя соединения;
  • DEVICE — имя сетевого интерфейса;
  • ONBOOT — необходимо ли запускать при старте системы;
  • IPADDR — IP адрес, который будет использован для этого компьютера;
  • GATEWAY — шлюз для доступа к интернету;
  • NETMASK — маска сети;
  • DNS1 — сервер для разрешения доменных имен DNS.

Фактически вы уже знаете большинство этих параметров. Теперь рассмотрим какой набор нужно задать для каждого способа получения IP адреса.

Настройка получения IP по DHCP

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

Теперь сохраните изменения и перезапустите сеть. Все должно заработать.

Настройка сети со статическим IP

Для установки статического IP адреса нужно задать значение BOOTPROTO — static, а также указать IP адрес, шлюз, маску сети и DNS. Вот пример конфигурации сети CentOS для нашего интерфейса:

Укажите свои значения и сохраните настройки. Для перезагрузки сети используйте команду:

Затем вам останется проверить работу сети. Если все было сделано правильно сеть будет работать.

Настройка сетевых интерфейсов в CentOS

Настройка сетевых интерфейсов в CentOS происходит правкой конфигурационных файлов. Файлы интерфейсов хранятся в директории /etc/sysconfig/network-scripts, каждый отвечает за свой интерфейс, таким образом сколько интерфейсов, столько и файлов. Во время установки создается дефолтный файл с именем — ifcfg-enp0s3.

Содержание файла ifcfg-enp0s3:

TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="cac20b32-66a0-46bd-9b68-ec786f52d2f8"
DEVICE="enp0s3"
ONBOOT="yes"

Рассмотрим самые важные параметры и значения, чтобы понимать что к чему. Более подробно все параметры описаны в официальной документации Red Hat.

  • TYPE — задает тип сетевого адаптера, в данном случае «Ethernet».
  • BOOTPROTO — способ назначения ip-адреса. Может иметь значения: dhcp — динамический ip-адрес, static или none — статический ip-адрес.
  • DEFROUTE — использовать интерфейс в качестве маршрута по умолчанию. Значения yes или no.
  • IPV4_FAILURE_FATAL — В случае отсутствия IPv4 протокола закрывать соединение, по умолчанию no.
  • NAME — имя интерфейса.
  • DEVICE — имя устройства.
  • UUID — идентификационный номер интерфейса.
  • ONBOOT — старт интерфейса при загрузке, значения yes или no.
  • IPV6INIT — включение поддержки IPv6 протокола, значения yes или no.
  • IPV6_AUTOCONFIPV6_DEFROUTEIPV6_PEERDNSIPV6_PEERROUTESIPV6_FAILURE_FATAL — дополнительные параметры для IPv6 протокола.

Подобная конфигурация означает получение динамического ip-адреса при каждом запуске. Для назначения статического адреса нужно изменить несколько параметров.

  • BOOTPROTO=none — изменяем на none, тем самым указывая что ip будет статическим.
  • IPADDR=192.168.1.6 — назначаем сам адрес.
  • NETMASK=255.255.255.0 — задаем маску подсети.
  • GATEWAY=192.168.1.1 — указываем адрес шлюза.
  • DNS1=192.168.1.1 — задаем адреса DNS серверов.

После внесенных изменений файл должен принять следующий вид, естественно с поправками на ваши значения адресов.

TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.1.6 
NETMASK=255.255.255.0 
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s3
UUID=cac20b32-66a0-46bd-9b68-ec786f52d2f8
DEVICE=enp0s3
ONBOOT=yes

Перезапустим интерфейс для применения изменений.

ifdown enp0s3 && ifup enp0s3

Сохранение настроек сети

Определяем, какие интерфейсы есть в системе

ip a

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

1lo<LOOPBACK,UP,LOWER_UP>mtu65536qdisc noqueue state UNKNOWN

link/loopback000000000000brd000000000000

inet127.0.0.1/8scope host lo

2eth0<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdisc pfifo_fast state UP qlen1000

link/ether001517185fd8 brd ffffffffffff

inet10.15.0.1/28brd91.241.22.15scope globaleth0

3eth1<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdisc pfifo_fast state UP qlen1000

link/ether001517185fd9 brd ffffffffffff

inet192.168.11.101/24brd192.168.11.255scope globaleth1

inet10.49.0.1/8brd10.255.255.255scope globaleth13

inet192.168.70.16/24brd192.168.70.255scope globaleth11

4gre0<NOARP>mtu1476qdisc noop state DOWN

link/gre0.0.0.0brd0.0.0.0

5gretap0<BROADCAST,MULTICAST>mtu1476qdisc noop state DOWN qlen1000

link/ether000000000000brd ffffffffffff

6eth1.122@eth1<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdisc noqueue state UP

link/ether001517185fd9 brd ffffffffffff

inet192.168.123.254/23brd192.168.123.255scope globaleth1.122

 

Сохраняем настройки

Для сохранение я настроек необходимо внести изменения я конфигурационный файл интерфейса, который находиться /etc/sysconfig/network-scripts/ifcfg-eth0 и приводим его к виду:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

DEVICE=»eth0″

BOOTPROTO=none

NM_CONTROLLED=»yes»

ONBOOT=yes

TYPE=»Ethernet»

UUID=»7f9fe579-ac2f-4e35-9445-7685620fa61d»

HWADDR=001517185FD8

IPADDR=10.15.0.1

PREFIX=28

GATEWAY=10.15.0.254

DNS3=8.8.4.4

DNS2=8.8.8.8

DNS1=192.168.11.3

DEFROUTE=yes

IPV4_FAILURE_FATAL=yes

IPV6INIT=no

NAME=»System eth0″

 

Перезапуск сети

После внесения изменений необходимо перезапустить демон сети

1
2
3

service network restart

 

или так

1
2
3

 
/etc/init.d/network restart

 

Network Manager в CentOS

В CentOS по-умолчанию имеется служба, которая управляет всеми сетевыми подключениями — NetworkManager. Она постоянно контролирует сетевые настройки и с помощью демона по управлению конфигурациями вносит соответствующие изменения в активные сетевые устройства. Она поддерживает стандартные файлы конфигураций ifcfg.

Список сетевых утилит и приложений:

ПРИЛОЖЕНИЕ ОПИСАНИЕ
NetworkManager Стандартный networking daemon
nmtui Простой текстовый интерфейс (TUI) для NetworkManager
nmcli Утилита, работающая в командной строке, которая позволяет пользователям и скриптам взаимодействовать с NetworkManager
control-center Утилита с графическим интерфейсом оболочки GNONE
nm-connection-editor GTK+ 3 приложения, необходимые для некоторых задач, не поддерживаемых control-center

Пользователи не взаимодействуют с NetworkManager в CentOS напрямую, для этого используются графические и утилиты командной строки. Одной из таких утилит является system config network tui. В Centos 8 по-умолчанию NetworkManager является рекомендованным способом по настройке сети. Все остальные способы объявлены deprecated.

Сохранение статических маршрутов

Статические маршруты указываются в файлах /etc/sysconfig/network-scripts/route-IFNAME с добавлением имени интерфейса

Вариант 1

1
2
3
4
5

cat/etc/sysconfig/network-scripts/route-eth1

192.168.0.0/16via192.168.11.1

10.10.0.0/16via192.168.11.1

 

Вариант 2

1
2
3
4
5
6
7
8
9
10
11
12

cat/etc/sysconfig/network-scripts/route-eth1

ADDRESS0=192.168.0.0

NETMASK0=255.255.0.0

GATEWAY0=192.168.11.1

ADDRESS1=172.16.0.0

NETMASK1=255.196.0.0

GATEWAY1=192.168.11.1

ADDRESS2=10.10.0.0

NETMASK2=255.255.0.0

GATEWAY2=192.168.11.1

 

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

Как сделать перезапуск сети в CentOS

Ранее я уже касался этого вопроса, но на всякий случай повторим отдельно. Допустим, вы внесли некоторые изменения в конфигурацию сети. Как применить эти настройки, не перезагружая сервер? Очень просто. Для перезапуска сети в CentOS достаточно воспользоваться командой systemd:

Если увидите ошибку:

Значит у вас не установлен пакет network-scripts, а управление сетью выполняется с помощью NetworkManager, который сам перезапускает сеть после изменения настроек.

Если у вас старая версия Centos без systemd, а это 6-я версия и младше, то сеть перезапускается вот так.

Сетевая служба перечитает все сетевые настройки и применит изменения.

Прослушиваемые порты

lsof

Утилита lsof позволяет посмотреть
все
открытые в системе соединения.

Чтобы изучить именно сетевые соединения воспользуйтесь опцией
i

Чтобы отображались именно порты, а не названия сетевых служб примените опцию
P

lsof -i -P

ss

На вопрос как посмотреть список открытых портов также может ответить утилита ss

ss -lntup

Если нужно проверить используется ли определённый порт, например 5000

ss -na | grep :5000

Если вывод пуст, значит порт не используется

Чтобы узнать какая программа слушает определённый порт нужно предварительно установить один из
инструментов:

netstat, fuser или lsof

Начнём с netstat

Netstat

sudo apt install net-tools

С помощью команды
netstat
можно посмотреть список активных соединений по сети

netstat

Обычно netstat используют с набором опций tulpn
который и позволяет понять какая программа слушает какой порт.

netstat -tulpn

(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN —
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN —
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN —
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN —
tcp6 0 0 :::22 :::* LISTEN —
tcp6 0 0 ::1:631 :::* LISTEN —
tcp6 0 0 ::1:6010 :::* LISTEN —
tcp6 0 0 ::1:6011 :::* LISTEN —
tcp6 0 0 :::80 :::* LISTEN —
udp 0 0 0.0.0.0:52756 0.0.0.0:* —
udp 0 0 0.0.0.0:68 0.0.0.0:* —
udp 0 0 0.0.0.0:631 0.0.0.0:* —
udp 0 0 0.0.0.0:5353 0.0.0.0:* —
udp6 0 0 :::45815 :::* —
udp6 0 0 :::5353 :::* —

Как настроить DNS в CentOS

Текущие настройки dns сервера в CentOS можно посмотреть в двух местах:

  1. В файле с настройками сетевой карты ifcfg-eth0, которым мы ранее неоднократно редактировали.
  2. В файле /etc/resolv.conf

Зачем они сейчас в двух местах, я не знаю, но раньше настройки dns сервера в каких-то дистрибутивах, не помню уже точно каких, указывались только в resolv.conf, но в какой-то момент это изменилось. И все сетевые настройки стали храниться в одном файле вместе с адресом, шлюзом, маской и прочим. Если сейчас отредактировать файл resolv.conf и внести туда какие-то dns сервера, то после перезагрузки они будут заменены на значения из файла ifcfg-eth0.

Так что для того, чтобы установить параметры dns сервера, нужно отредактировать файл сетевых настроек ifcfg-eth0, добавив туда столько серверов, сколько требуется. Например так:

Для применения настроек сохраняем файл и перезапускаем сеть, все как обычно. После перезагрузки сервера настройки dns будут записаны в файл resolv.conf

Как указать DNS сервера для сетевого интерфейса в CentOS?

Настроить DNS-сервера для вашего сервера, вы можете с помощью файла /etc/resolv.conf или указать их в настройках сетевого интерфейса. При настройке static конфигурации для сетевого интерфейса, мы уже указывали DNS-сервера, через параметры:

DNS1=
DNS2=
DNS3=

Установите нужные вам DNS-сервера и перезагрузите сервис network.

В файл /etc/resolv.conf, DNS-сервера прописываются автоматически при перезагрузке сервера, забирая их с файла конфигурации сети. Если же вы не указали DNS-сервера при настройке сети, пропишите их вручную в файл /etc/resolv.conf:

nameserver 77.88.8.8
nameserver 8.8.8.8
nameserver 8.8.4.4

Использование ip

Синтаксис ip по структуре напоминает синтаксис Cisco IOS. Любые опции могут быть сокращены до потери двусмысленности, например ip ro ad вместо ip route add.

Назначить маршрут по умолчанию

1
2
3

ip route add defaultvia192.168.1.1

 

Действия с маршрутами
Кроме add также поддерживаются и другие действия:

del — удалить маршрут.
replace — заменить маршрут другим.
change — изменить параметры маршрута.
Equal Cost Multi Path

Если добавить два маршрута до одной и той же сети с одинаковой метрикой, ядро начнет распределять нагрузку между ними путем выбора того или другого с равной вероятностью. Работает и для более чем двух маршрутов. Предупреждение: это может вызвать проблемы со входящими соединениями, потому что иногда ответ может пойти по другому маршруту, чем пришел запрос. Будьте осторожны.

1
2
3
4

ip route add defaultdev eth0

ip route add defaultdev eth1

 

Заключение

С помощью бесплатного дистрибутива Linux мы смогли за считанные минуты настроить шлюз для организации доступа в интернет компьютеров из локальной сети. У меня ушло минут 10 на настройку шлюза по этой инструкции. Если вы делаете это первый раз, то конечно у вас уйдет гораздо больше времени. Нужно будет разобраться в нюансах, к тому же я дал много ссылок на дополнительный материал.

Давайте разберемся в том, что мы сделали:

  1. Выполнили предварительную настройку сервера, подготовили его к работе.
  2. Включили маршрутизацию.
  3. Настроили firewall.
  4. Включили NAT.
  5. Установили и настроили dnsmasq для организации служб dns и dhcp.
  6. Проанализировали сетевую активность шлюза, узнали кто загружает канал интернета.

Это минимально необходимый функционал для организации работы шлюза на CentOS 7. Следующим этапом может быть настройка прокси сервера, шейпера траффика, настройка 2-х и более провайдеров и много другое. Что-то из этого я рассмотрю в своих будущих статьях.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: