Управление сетевыми адаптерами linux

Рука помощи

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

Настройку сети можно разделить на два вида:

Постоянные настройки — задаются через конфигурационные файлы и сохраняются после перезагрузки.

Временные настройки — задаются через командную строку, сбрасываются после перезагрузки системы или сервиса отвечающего за работу сети.

На текущий момент, наиболее часто используются Ubuntu 16.04 и Ubuntu 18.04, которые отличаются в настройке сети. Так в OC Ubuntu 16.04 использовалась утилита ifupdown, которую заменили netplan.

1. Просмотр доступных сетевых интерфейсов

Перечень доступных интерфейсов можно получить несколькими способами.

С помощью утилиты lshw, которая выводит информацию о всех компонентах компьютера. Для получения информации о сетевых картах выполняем ее с ключом -C и указываем интересующий класс network. Пример вывода:

$ sudo lshw -C network

*-network

description: Ethernet interface

product: RTL-8100/8101L/8139 PCI Fast Ethernet Adapter

vendor: Realtek Semiconductor Co., Ltd.

physical ID: 7

bus info: pci@0000:08:07.0

logical name: enp8s7

version: 10

serial: 00:1d:60:bc:40:98

size: 100Mbit/s

capacity: 100Mbit/s

width: 32 bits

clock: 33MHz

capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation

configuration: autonegotiation=on broadcast=yes driver=8139too driverversion=0.9.28 duplex=full ip=10.254.253.1 latency=64 link=yes maxlatency=64 mingnt=32 multicast=yes port=MII speed=100Mbit/s

Для дальнейшей настройки нас будут интересовать следующие значения:

  • logical name — логическое имя сетевого адаптера
  • serial — MAC-адрес сетевой карты
  • link — указывает наличие подключения

При помощи утилиты lshw Вы сможете получить информацию только о физических сетевых интерфейсах, информации о логических, например, VLAN Вы не получите.

Получить информацию о сетевых интерфейсах можно, используя утилиту ip вызвав ее с параметром address. Данная утилита выводит информацию о всех доступных интерфейсах, в том числе, логических. Пример вывода:

$ ip address

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: enp8s7: mtu 1500 qdisc fq_codel state UP group default qlen 1000

link/ether 00:1d:60:bc:40:98 brd ff:ff:ff:ff:ff:ff

inet 10.254.253.1/24 brd 10.254.253.255 scope global enp8s7

valid_lft forever preferred_lft forever

inet6 fe80::21d:60ff:febc:4098/64 scope link

valid_lft forever preferred_lft forever

Где lo — петля, enp8s7 — интерфейс сетевой карты.

Читайте также:  Yandex browser под linux

Для меня в работе более привычно использование утилиты ifconfig, поэтому все дальнейшие действия я буду описывать, используя ее.

Пример вывода информации о сетевых интерфейсах используя ifconfig:

$ ifconfig

enp8s7: flags=4163 mtu 1500

inet 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255 # Информация о настройке сетевого интерфейса

inet6 fe80::21d:60ff:febc:4098 prefixlen 64 scopeid 0x20

ether 00:1d:60:bc:40:98 txqueuelen 1000 (Ethernet) # MAC-адрес сетевой карты

RX packets 2473367 bytes 1178806843 (1.1 GB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 3706512 bytes 2647126986 (2.6 GB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10

loop txqueuelen 1000 (Локальная петля (Loopback))

RX packets 43756 bytes 4844250 (4.8 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 43756 bytes 4844250 (4.8 MB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

2. Настройка сети

Настройку сетевых интерфейсов в данной статье буду рассматривать на примере проводной сети.

Настройка для Ubuntu 16.04 и ранее

Настройки происходят посредством редактирования конфигурационного файла /etc/network/interfaces

Пример настройки сетевых интерфейсов:

# This file describes the network interfaces available on your system

#

# and how to activate them. For more information, see interfaces(5).

#

# The loopback network interface

auto lo

iface lo inet loopback

# My Net

iface inet static

address 10.10.10.1

netmask 255.255.255.0

gateway 10.10.10.2

dns-nameservers 8.8.8.8 8.8.4.4

auto enp8s7

В данном файле всегда должен быть описан сетевой интерфейс lo и секции настройки наших сетевых интерфейсов. Пояснения по параметрам конфигурации:

  • auto enp8s7 — указывает, что сетевой интерфейс «поднимать» при загрузке системы
  • iface enp8s7 inet static — указываем, что для сетевого интерфейса enp8s7 используем статический IP-адрес, если вместо параметра static указать dhcp — сетевой адрес будет получен по протоколу dhcp и остальные параметры конфигурации не нужны
  • address 10.10.10.1 — указывает IP-адрес сетевого интерфейса
  • netmask 255.255.255.0 -маска подсети
  • gateway 10.10.10.2 — основной шлюз
  • dns-nameservers 8.8.8.8 8.8.4.4 — перечень DNS-серверов через пробел
Читайте также:  Mount sata in linux

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

Настройка для Ubuntu 18.04 и более поздние

Начиная с Ubuntu 18.04, для настройки сети используется Netplan, который для хранения конфигурации использует формат YAML. Файлы конфигурации хранятся в директории /etc/netplan/ при установке системы создается файл 50-cloud-init.yaml В него будем вносить все изменения

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

Error while loading /etc/netplan/50-cloud-init.yaml, aborting. — в файле для отступов используются знаки табуляции

An error occured: the configuration could not be generated или Error in network definition: expected mapping (check indentation) — в случае не соблюдения количества отступов также будет указана строка с ошибкой.

Структура конфигурационного файла:

network:

ethernets: — объявляем блок с конфигурацией сетевых интерфейсов, далее идут блоки конфигураций для каждого интерфейса. Отступ 2 пробела

enp8s7: — имя первого сетевого интерфейса. Отступ 4 пробела

addresses: [10.10.10.1/24] — IP-адрес и маска подсети, в случае использования нескольких IP-адресов на одном интерфейсе, перечисляем через запятую, например, [10.10.10.1/24,10.10.20.1/24] IPv6 выделяется кавычками. Отступ 6 пробелов

gateway4: 10.10.10.2 — основной шлюз. Отступ 6 пробелов

nameservers: — блок конфигурации DNS-серверов. Отступ 6 пробелов

addresses: [8.8.8.8] — перечень IP-адресов DNS-серверов, допускается использование нескольких, указываются через запятую. Отступ 8 пробелов

dhcp4: false — указывает использовать статические параметры или получать по DHCP. Допустимые значения true/false. Если значение «true», будет прочитан только блок с настройками DNS-серверов. Отступ 6 пробелов

enp0s25: — имя второго сетевого интерфейса

dhcp4: true

version: 2

# This file is generated from information provided by

# the datasource. Changes to it will not persist across an instance.

# To disable cloud-init’s network configuration capabilities, write a file

# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:

# network:

network:

ethernets:

enp8s7:

addresses: [10.10.10.1/24]

gateway4: 10.10.10.2

nameservers:

addresses: [8.8.8.8]

dhcp4: false

enp0s25:

dhcp4: true

version: 2

Для проверки файла конфигурации и применения изменений используем команду

Обратите внимание, что необходимо нажать Enter для применения или по истечению 2-х минут ожидания применение прервется и изменения не будут применены.

Читайте также:  Linux mint срок поддержки

Конфигурация сетевых интерфейсов через командную строку

Напоминаю, что все изменения, внесенные через командную строку, не сохраняются после перезагрузки. Конфигурацию описываю, используя утилиту ifconfig.

Для присвоения IP-адреса сетевому интерфейсу используем команду:

  • enp8s7 — имя сетевого интерфейса
  • 10.10.10.1 — IP-адрес
  • 255.255.255.0 — маска подсети

Так как через утилиту ifconfig не указывается основной шлюз и DNS-сервера, это необходимо сделать отдельно

Для временного указания DNS-сервера необходимо добавить в файл /etc/resolv.conf строку

Где 8.8.8.8 — IP-адрес DNS-сервера

Для получения IP-адреса через DHCP используем команду

Где enp8s7 — имя сетевого интерфейса

3. Управление таблицей маршрутизации.

Для просмотра таблицы маршрутизации используются команды: netstat -rn или route -n

Если у Вас нет отдельно созданных маршрутов, вывод результата будет похож на следующий

$ netstat -rn

Destination Gateway Genmask Flags MSS Window irtt Iface

0.0.0.0 10.10.10.2 0.0.0.0 UG 0 0 0 enp8s7

10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 enp8s7

Добавление статических маршрутов

Добавление статического маршрута в Ubuntu 16.04

Для добавления статического маршрута необходимо добавить строку конфигурации в файл /etc/network/interfaces в секцию конфигурации соответствующего сетевого интерфейса. Пример строки конфигурации

  • 192.168.0.0 — указание подсети
  • 255.255.0.0 — маска подсети
  • 10.10.10.3 — шлюз

При добавлении такого маршрута конфигурационный файл будет иметь следующий вид

# This file describes the network interfaces available on your system

#

# and how to activate them. For more information, see interfaces(5).

#

# The loopback network interface

auto lo

iface lo inet loopback

# My Net

iface inet static

address 10.10.10.1

netmask 255.255.255.0

gateway 10.10.10.2

dns-nameservers 8.8.8.8 8.8.4.4

up route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.10.10.3

auto enp8s7

Добавление статического маршрута в Ubuntu 18.04

Для добавления статических маршрутов через netplan необходимо добавить секцию routes: в конфигурацию сетевого интерфейса

Пример конфигурации сетевого интерфейса с указанием статических маршрутов

enp8s7:

addresses: [10.10.10.1/24]

gateway4: 10.10.10.2

nameservers:

addresses: [8.8.8.8]

dhcp4: false

routes:

— to: 10.10.20.0/24

via: 10.10.10.3

metric: 100

— to: 10.10.30.0/24

via: 10.10.10.4

metric: 100

Конфигурация маршрутов через командную строку

При конфигурации маршрутов через командную строку все изменения сохраняются до перезагрузки.

Управление маршрутами происходит при помощи утилиты route. Для добавления маршрута выполняем команду

В заметке не затрагивались настройки wi-fi адаптеров и виртуальных интерфейсов. Это будет описано отдельно. При возникновении вопросов задавайте их в комментариях.

Источник

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