- Настройка локальной сети в Linux
- Как посмотреть текущие сетевые настройки в Linux?
- Как остановить/запустить или перезагрузить сетевой интерфейс?
- Как изменить сетевые настройки?
- Дополнительные сетевые настройки: DNS -сервера, MAC -адреса и скорость сетевого интерфейса.
- Настройка DNS -сервера.
- Смена MAC -адреса сетевой карты.
- Настройка сети в Linux с помощью netplan
- Конфигурационный файл
- Простая настройка сети
- Применение настроек
- Как настроить несколько сетевых интерфейсов в Ubuntu 20.04
- Автоматическая настройка Netplan
- Настройка маршрутов на основе политик
Настройка локальной сети в Linux
Для систематизирования информации по настройке сети в ОС Linux было решено написать эту заметку. Здесь в доступной форме описан процесс настройки сетевого интерфейса на примере ОС Ubuntu. Также данное руководство поможет «поднять» локальную сеть и на любом другом дистрибутиве Linux.
Как посмотреть текущие сетевые настройки в Linux?
Для просмотра текущих параметров сети и состояния сетевых интерфейсов в ОС Линукс существует команда:
inet addr:192.168.1.18 Bcast:192.168.255.255 Mask:255.255.0.0
inet6 addr: fe80::211:5bff:fe91:253e/64 Диапазон:Ссылка
ВВЕРХ BROADCAST RUNNING MULTICAST MTU :1500 Metric:1
RX packets:648009 errors:0 dropped:0 overruns:0 frame:0
TX packets:1075413 errors:0 dropped:0 overruns:0 carrier:0
коллизии:0 txqueuelen:1000
RX bytes:70177943 (70.1 MB) TX bytes:1536487024 (1.5 GB)
Прервано:19 Base address:0xd000
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Диапазон:Узел
ВВЕРХ LOOPBACK RUNNING MTU :16436 Metric:1
RX packets:106 errors:0 dropped:0 overruns:0 frame:0
TX packets:106 errors:0 dropped:0 overruns:0 carrier:0
коллизии:0 txqueuelen:0
RX bytes:13776 (13.7 KB) TX bytes:13776 (13.7 KB)
Для просмотра абсолютно всех сетевых интерфейсов запускаем команду с ключом -a:
Из приведенного примера видно, что на компьютере используется два сетевых интерфейса: eth0 и lo.
Интерфейс lo — это локальная петля, которая имеет IP-адрес 127.0.0.1 и предназначена для сетевого доступа к своему же компьютеру. Далее этот интерфейс рассматриваться не будет, так как для эффективной работы не требует дополнительной настройки.
Интерфейс eth0 – это Ethernet сетевая карта, которая имеет сетевые параметры: IP-адрес – 192.168.1.18, маску сети – 255.255.0.0 и MAC -адрес – 00:11:5b:91:25:3e. Значение RUNNING показывает, что в данный момент сетевой интерфейс eth0 работает.
Для просмотра типа соединения, скорости и поддерживаемых параметров сетевым интерфейсом eth0 набираем команду:
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD : 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pg
Wake-on: d
Current message level: 0×000000c5 (197)
Link detected: yes
Из вывода видно, что сетевой интерфейс eth0 работает на скорости 100Мб/с с включенным полным дуплексом (Full Duplex). Полный дуплекс от полудуплекса (Half Duplex) отличается тем, что первый обеспечивает передачу данных в обе стороны одновременно, а второй осуществляет передачу входящих и исходящих данных поочередно.
Как остановить/запустить или перезагрузить сетевой интерфейс?
Команду легко запомнить, так как после названия самой команды идет имя интерфейса и после действие, которое нужно произвести над ним (down или up).
Для возобновления работы сетевого интерфейса eth0:
Эта строка запускает bash-скрипт networking, перезапускающий сетевые интерфейсы системы.
Так же по аналогии производится остановка всех интерфейсов:
Как изменить сетевые настройки?
Чтобы изменить сетевые настройки в ОС Linux можно пойти двумя путями:
- использовать команды для присвоения параметров сетевых интерфейсов;
- отредактировать конфигурационный файл, содержащий параметры сетевых интерфейсов.
Настроить сеть можно одним из вышеприведенных способов. Эти два способа абсолютно взаимозаменяемые. Кому как привычнее.
Настройка сети с помощью команд.
Чтобы настроить сетевой интерфейс, не влезая в дебри конфигурационного файла, нужно воспользоваться специальными командами.
Чтобы задать основной IP-адрес и маску сети для интерфейса eth0:
Если локальная сеть, к которой подключаемся, подразумевает ручную настройку IP-адреса, то содержимое конфигурационного файла должно выглядеть примерно так:
auto eth0
iface eth0 inet static
address 192.168.1.18
netmask 255.255.0.0
gateway 192.168.1.253
Первые строки оставляем как есть, так как их дополнительная настройка не требуется.
Строка auto eth0 говорит, что сетевой интерфейс eth0 должен стартовать при загрузке ОС.
Вторая строка iface eth0 inet static говорит, что сетевому интерфейсу eth0 IP-адрес задается вручную.
Строка address 192.168.1.18 говорит, что сетевому интерфейсу eth0 назначен IP-адрес 192.168.1.18 (этот сетевой адрес взят для примера и на его месте может быть любой другой).
Строка netmask 255.255.0.0 говорит, что маска сети является 255.255.0.0.
Последняя строчка gateway 192.168.1.253 показывает, что сетевым шлюзом является компьютер с IP-адресом 192.168.1.253. Эта строка может отсутствовать, так как ее наличие в конфигурационном файле зависит от параметров локальной сети, к которой подключается настраиваемый компьютер.
Если в подключаемой локальной сети используется автоматическая раздача сетевых настроек DHCP -сервером, то конфигурационный файл /etc/network/interfaces должен быть приведен к виду:
Дополнительные сетевые настройки: DNS -сервера, MAC -адреса и скорость сетевого интерфейса.
Настройка DNS -сервера.
Так же во многих случаях для правильной работы локальной сети на настраиваемом компьютере потребуется ввести IP-адрес используемого DNS -сервера.
Для этого нужно открыть конфигурационный файл командой:
Строка nameserver 192.168.1.253 говорит, что в качестве DNS -сервера используется компьютер с IP-адресом 192.168.1.253.
Смена MAC -адреса сетевой карты.
Чтобы временно поменять MAC -адрес сетевой карты eth0 нужно воспользоваться командой:
Для смена MAC -адреса навсегда нужно в конфигурационном файле /etc/network/interfaces к настройкам сетевого интерфейса добавить строку с новым MAC -адресом:
Настройка сети в Linux с помощью netplan
Обновлено: 16.02.2023 Опубликовано: 31.10.2019
Начиная с Ubuntu 18.04 конфигурирование сети выполняется с помощью утилиты netplan. В других системах на базе deb, например, Debian, она может быть установлена командой:
Конфигурационный файл
Файл для настройки сети находится в каталоге /etc/netplan/. Имя файла может быть любым, на конце должно быть расширение yaml, например:
* чаще всего, это файл 50-cloud-init.yaml или 01-netcfg.yaml. YAML представляет из себя текстовый формат файла. Вложенные параметры должны иметь отступы табуляциями или пробелами, количество которых имеет важное значение (если поставить лишний пробел у одного из нескольких параметров, мы получим сообщение об ошибке «expected mapping»).
Простая настройка сети
Разберем пример настройки 3-х сетевых интерфейсов. Два из них будут с IP-адресами назначенными вручную (static IP), один — по DHCP. Приводим файл к следующему виду:
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: true
ens7:
dhcp4: no
addresses: [192.168.122.195/24]
routes:
#- to: 0.0.0.0/0
— to: default
via: 192.168.122.1
mtu: 1500
nameservers:
addresses: [8.8.8.8, 77.88.8.8]
search: [ dmosk.local ]
ens9:
dhcp4: no
addresses: [192.168.1.10/24, 192.168.1.20/24]
nameservers:
addresses:
— 8.8.8.8
— 77.88.8.8
search: [ dmosk.local, dmosk.ru ]
- version — версия YAML. На момент обновления статьи, была 2.
- renderer — менеджер сети (networkd или NetworkManager).
- ethernets — настройка сетевых адаптеров ethernet.
- ens3, ens7, ens9 — настройки для соответствующих сетевых адаптеров. В данном примере мы настраиваем 3 сетевых адаптера.
- dhcp4 — будет ли получать сетевой адаптер IP-адрес автоматически. Возможны варианты yes/true — получать адрес автоматически; no/false — адрес должен быть назначен вручную.
- addresses — задает IP-адреса через запятую.
- routes — настройка маршрутов. Для шлюза по умолчанию используем опцию и значение to: default. Ранее использовалась директива gateway4, но теперь она считается устаревшей (при применении настройки с ней система вернет предупреждение gateway4 has been deprecated, use default routes instead). Также обратите внимание на вариант с 0.0.0.0 — в более ранних версиях системы вариат с default выдаст ошибку, и нужно использовать конфигурацию с четыремя нулями.
- mtu — при желании, можно задать значение MTU.
- nameservers — настройка серверов имен (DNS).
- nameservers addresses — указываем серверы DNS. Обратите внимание на разный формат записи для ens7 и ens9. Приемлемы оба варианта.
- nameservers search — дописывает окончание домена, если мы обращаемся к узлу сети только по его имени. Стоит обратить внимание, что мы можем указать несколько доменов через запятую.
Применение настроек
Для применения настроек необходимо запустить команду netplan. Ее синтаксис:
Для проверки нашего конфигурационного файла вводим:
Как настроить несколько сетевых интерфейсов в Ubuntu 20.04
В ситуациях, когда на сервере Ubuntu 20.04 присутствует 2 и более сетевых интерфейса с публичными IP адресами необходимо произведение дополнительных настроек для обеспечения доступности сервера по этим дополнительным адресам. Виной всему применяемая по умолчанию политика маршрутизации, отправляющая все сетевые пакеты через 1 интерфейс, у которого прописан маршрут по умолчанию. При этом не важно через какой интерфейс пакет попал на сервер. Поэтому, даже при правильных настройках Netplan сервер не будет отвечать по дополнительным адресам без дополнительных настроек. Рассмотрим как же настроить несколько сетевых интерфейсов в Ubuntu 20.04.
Как настроить несколько сетевых интерфейсов с публичным IP на Ubuntu 20.04:
Автоматическая настройка Netplan
Linux серверы Serverspace призваны упрощать жизнь пользователей. В них присутствует функция настройки сетевых интерфейсов в автоматическом режиме при их добавлении в панели управления или во время создания сервера. Но для обеспечения работы маршрутизации на основе политик и как результат доступности сервера сразу по нескольким сетевым интерфейсам нам необходимо внести изменения в настройки Netplan. Чтобы наши настройки не перезаписались во время перезагрузки, необходимо отключить автоматическую настройку сети. После того, как Вы убедитесь, что необходимое количество интерфейсов добавлено на сервер, создайте на нём файл:
И добавьте в него параметр:
Теперь последующие изменения в Netplan не будут перезаписываться в автоматическом режиме при перезагрузке.
Настройка маршрутов на основе политик
В основе маршрутизации на основе политик лежат таблицы. Для каждой таблицы настраиваются свои маршруты и политики. Проверим наличие в системе пакета iproute2. Если его нет, произведите его установку.
Откройте файл с таблицами маршрутизации
И добавьте в его конец количество таблиц, соответствующее количеству настраиваемых интерфейсов:
[/step]
Формат записи: приоритет (число) пробел название таблицы (число).
Теперь откройте файл Netplan с настройками сетевых интерфейсов. Он расположен по пути /etc/netplan/ и имеет расширение .yaml. В моём случае путь такой:
Каждый интерфейс имеет в данном файле блок настроек. В конец данного блока мы и будем добавлять настройки политик и правил маршрутизации для интерфейса. В данном файле важно соблюсти количество пробелов перед каждым параметром и значением, а также не использовать табуляции вместо пробелов. Ориентируйтесь на отступы в уже имеющихся записях и добавляйте по аналогии.
Для каждого сетевого интерфейса добавляем блоки routes и routing-policy. Итоговая запись для 1 интерфейса будет выглядеть так:
network:
version: 2
ethernets:
enp0s5:
addresses:
— 78.89.90.12/24
gateway4: 78.89.90.1
match:
macaddress: 54:43:32:21:10:09
mtu: 1500
nameservers:
addresses:
— 8.8.8.8
— 1.1.1.1
— 8.8.4.4
search: []
set-name: enp0s5
routes:
— to: 0.0.0.0/0
via: 78.89.90.1
table: 700
routing-policy:
— from: 78.89.90.12
table: 700
priority: 300
Для других интерфейсов запись будет аналогична, начиная с имени интерфейса (enp0s5), но у других должен отсутствовать параметр gateway4, т.к. шлюз по умолчанию должен быть один. Настройки routes и routing-policy:
- to – адрес назначения пакета. Для наших целей – любой (0.0.0.0/0)
- via – адрес шлюза для данного интерфейса
- table – имя таблицы маршрутизации. Должны быть указаны одинаковые значения в routes и routing-policy для одного интерфейса, но быть различными от интерфейса к интерфейсу. Данные таблицы мы создали в файле rt_tables
- from – адрес источника пакета. Для целей данного руководства – это IP адрес интерфейса
- priority – обязательное числовое значение
После внесения настроек и сохранения файла проверим конфигурацию на ошибки:
Подобный вывод укажет на ошибку при их наличии (в данном случае пропущен пробел):
Если конфиг составлен верно, то вывод будет отсутствовать. Это значит, что пора применить изменения:
После применения изменений настроенные таким образом сетевые интерфейсы станут доступны извне по своим публичным IP адресам.