Как создать и настроить виртуальный интерфейс на Linux

Как создать и настроить виртуальный интерфейс на Linux

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

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

  1. В нашей инструкции для настройки мы будем подключать модуль ядра dummy. Сперва включим этот модуль:
sudo modprobe dummy
  1. Создаём интерфейс, для этого вводим в командной строке (в приведённой  команде также указываем, что будем пользоваться dummy):
sudo ip link add name <имя_создаваемого_виртуального_интерфейса> type dummy
  1. Проверить, что интерфейс добавлен, можно с помощью запроса:
ip link show virtual1

Также пользуются командой «ip a», которая покажет полную конфигурацию.

  1. Пример приведенной выше команды (мы назначили имя «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:

    Что будем искать? Например,VPS-сервер

    Мы в социальных сетях