Сетевой интерфейс (его называют также сетевой адаптер) — это программная часть физического или виртуального устройства (маршрутизатора, сетевой карты, коммутатора или другого оборудования), с помощью которого ОС и различные программы передают и принимают (обмениваются) данными по сети.
В материале расскажем, что такое сетевой интерфейс Linux, как создать и настроить виртуальный сетевой интерфейс на «Линукс», зачем нужен виртуальный сетевой интерфейс.
Сетевые интерфейсы Linux
Чтобы описать как Linux взаимодействует по сети используют понятие «сетевой интерфейс». Сетевой интерфейс — это программная оболочка, позволяющая обращаться к сетевому оборудованию, обычно физическому. Кроме физического, сетевой интерфейс бывают виртуальные интерфейсы, не привязанные к физическому устройству, а существующие лишь на уровне программы в ОС. Другими словами, виртуальный — это лишь имитирующий физический интерфейс. Он может пригодиться при создании виртуальных машин или контейнеров, нужных для корректной работы и взаимодействия программного обеспечения, которое было создано как сетевое, но запускается на локальном ПК.
Увидеть список сетевых интерфейсов можно обратившись к утилите ifconfig.
Обычно в операционной системе уже есть два сетевых интерфейса.
- eth0 — привязан к сетевому Ethernet-адаптеру, который работает по кабелю. Команда «ifconfig» выводит всю необходимую информацию о нём, в том числе связанный IP-адрес. Если установлено больше одной Ethernet-карты, то они будут иметь имена в формате eth*: eth0, eth1, eth2…
- lo (loopback device) — этот интерфейс уже виртуальный и он существует по умолчанию и предназначен для настройки программного обеспечения, работающего по сети, или для того, чтобы локально запустить серверное ПО. У него всегда один и тот же IP: 127.0.0.1., dns-имя — localhost.
Добавляем виртуальный интерфейс в Linux
Добавление виртуального интерфейса — довольно простая и рутинная задача. Приступая к его созданию, убедитесь, что у вас есть необходимые полномочия: привилегированный доступ к вашей системе Linux как root или через команду sudo.
Новый сетевой интерфейс можно назвать абсолютно любым именем. В наших примерах мы будем добавлять интерфейс с именем virtual1.
Добавление непостоянного сетевого интерфейса
Бывают ситуации, когда нет необходимости создавать постоянный виртуальный, тогда прибегают к созданию временного сетевого интерфейса. Это можно сделать с помощью инструмента «ip» и некоторых дополнительных аргументов.
- В нашей инструкции для настройки мы будем подключать модуль ядра dummy. Сперва включим этот модуль:
sudo modprobe dummy
- Создаём интерфейс, для этого вводим в командной строке (в приведённой команде также указываем, что будем пользоваться dummy):
sudo ip link add name <имя_создаваемого_виртуального_интерфейса> type dummy
- Проверить, что интерфейс добавлен, можно с помощью запроса:
ip link show virtual1
Также пользуются командой «ip a», которая покажет полную конфигурацию.
- Пример приведенной выше команды (мы назначили имя «virtual1») и ее проверка с «ip a» показаны в следующем разделе кода:
ubuntu@ubuntu-exp:~$ sudo ip link add name virtual1 type dummy
ubuntu@ubuntu-exp:~$ ip a
1: [...]
2: [...]
3: virtual1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 3a:4f:ec:a3:ad:68 brd ff:ff:ff:ff:ff:ff
ubuntu@ubuntu-exp:~$
Третий интерфейс — это только что созданный virtual1.
Затем можно приступить к настройке (назначить IP-адрес, маску и т. п.) обычным способом, как если бы настраивали физический сетевой интерфейс. Все эти назначения не являются постоянными, что означает, что интерфейс будет существовать до перезагрузки системы, а после перезагрузки вашего компьютера все настройки будут сброшены.
- Присваиваем MAC-адрес. Замените адрес из нашего примера, на нужный вам:
sudo ifconfig virtual1 hw ether А7:В7:1A:4D:76:85
Если инструмент «ifconfig» не доступен, то нужно предварительно установить пакет net-tools. Используйте следующую команду для установки пакета:
ubuntu@ubuntu-exp:~$ sudo apt install net-tools
- Добавляем псевдоним к интерфейсу и настраиваем его IP-адрес:
sudo ip addr add 192.168.1.100/24 brd + dev virtual1 label virtual1:0
- Обязательно поднимаем сетевой интерфейс, иначе он не будет виден и окажется бесполезен:
sudo ip link set dev virtual1 up
- Сетевой интерфейс настроен и им можно пользоваться. Проверяем параметры всё той же командой «ip a», которая выведет полную конфигурацию.
- Чтобы откатить изменения, введите:
sudo ip addr del 192.168.1.100/24 brd + dev eth0 label eth0:0
sudo ip link delete virtual1 type dummy
sudo rmmod dummy
Добавление постоянного сетевого интерфейса
Итак, как создать временный виртуальный сетевой интерфейс, мы уже знаем. А следующая инструкция предназначена тем, кому нужен постоянный, для длительного пользования.
- Сначала создадим файлы virtual1.netdev и virtual1.network и добавим их в каталог /etc/systemd/network/, для этого выполним команду в командной строке:
sudo touch /etc/systemd/network/virtual1.netdev
sudo touch /etc/systemd/network/virtual1.network
- Вывод, свидетельствующий о том, что приведенная выше команда выполняется в нашей системе:
ubuntu@ubuntu-exp:~$ sudo touch /etc/systemd/network/virtual1.netdev
ubuntu@ubuntu-exp:~$ sudo touch /etc/systemd/network/virtual1.network
ubuntu@ubuntu-exp:~$ ls /etc/systemd/network/
virtual1.netdev virtual1.network
ubuntu@ubuntu-exp:~$
- Следующим шагом отредактируем оба файла; добавьте в них содержимое следующими командами (присваиваем имя, IP-адрес, маску и т. д.):
ubuntu@ubuntu-exp:~$ cat /etc/systemd/network/virtual1.network
[Match]
Name=virtual1
[Network]
Address=192.168.0.100
Mask=255.255.255.0
ubuntu@ubuntu-exp:~$ cat /etc/systemd/network/virtual1.netdev
[NetDev]
Name=virtual1
Kind=dummy
ubuntu@ubuntu-exp:~$
- Для вступления в силу внесённых изменений нужно либо перезагрузить систему, либо просто выполнить указанную ниже команду:
sudo systemctl restart systemd-networkd
- Для проверки запустите «ip a»:
ubuntu@ubuntu-exp:~$ sudo systemctl restart systemd-networkd
ubuntu@ubuntu-exp:~$ ip a
1: [...]
2: [...]
3: virtual1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 3a:4f:ec:a3:ad:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.100/24 brd 192.168.0.255 scope global virtual1
valid_lft forever preferred_lft forever
inet6 fe80::384f:ecff:fea3:ad68/64 scope link
valid_lft forever preferred_lft forever
Под номером 3 мы видим наш новый сетевой интерфейс.
Теперь вы знаете, как создать и настроить виртуальный сетевой интерфейс на «Линукс».
Читайте в блоге полезные инструкции по ОС Linux: