Как создать виртуальный интерфейс linux
Для добавления или удаления виртуальных сетевых интерфейсов не нужно использовать утилиту netifcfg . Требуется вручную отредактировать файл /etc/ifaliases.cf .
Список поддерживаемых виртуальных интерфейсов представлен в главе « Настройка и создание виртуальных сетевых интерфейсов .
Процедура добавления будет рассмотрена на примере 802.1Q интерфейса.
1. Войдите в Linux bash.
2. Создайте виртуальный 802.1Q интерфейс (данная процедура подробно описана в главе « Настройка и создание виртуальных сетевых интерфейсов » ).
3. Определите в нотации Linux имя нового виртуального сетевого интерфейса:
root@Hub1-0:~# ip link show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:9e:84:31 brd ff:ff:ff:ff:ff:ff
3: eth1: mtu 9000 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:9e:bf:69 brd ff:ff:ff:ff:ff:ff
4: eth2: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:9e:f5:ec brd ff:ff:ff:ff:ff:ff
5: eth1.4000@eth1: mtu 1400 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:9e:bf:69 brd ff:ff:ff:ff:ff:ff
Вывод консоли свидетельствует о том, что в системе присутствуют 802.1 Q интерфейс с именем eth1.4000.
4. Добавьте 802.1Q интерфейс eth1.4000 в файл /etc/ifaliases.cf (выделено жирным):
Примечание: Место добавления интерфейса в файл / etc /ifaliases.cf влияет только на порядок отображения его в консоли cisco — like .
root@Hub1-0:~# vim.tiny /etc/ifaliases.cf
interface (name=»GigabitEthernet0/0″ pattern=»eth0″)
interface (name=»GigabitEthernet0/1″ pattern=»eth1″)
interface (name=»GigabitEthernet0/1.4000″ pattern=»eth1.4000″)
interface (name=»GigabitEthernet0/2″ pattern=»eth2″)
interface (name=»default» pattern=»*»)
· значение параметра name должно иметь следующий шаблон:
· значение параметра pattern должно совпадать с именем 802.1Q интерфейса в нотации Linux.
5. Пересчитайте контрольную сумму файла /etc/ifaliases.cf:
root@Hub1-0:~# integr_mgr calc -f /etc/ifaliases.cf
SUCCESS: Operation was successful.
6. Перезапустите VPN сервис:
root@Hub1-0:~# service vpngate restart
Теперь интерфейс GigabitEthernet0/1.4000 должен быть доступен к заданию политики СКЗИ и правил МЭ посредством консоли Cisco-like и LSP, а также к конфигурированию посредством консоли Cisco-like.
7. Процедура удаления выполняется аналогично процедуре добавления.
Создание и настройка виртуальных сетевых интерфейсов в Linux
Оригинал: Configuring virtual network interfaces in Linux
Автор: Lubos Rendek
Дата публикации: январь 2013 года
Перевод: А. Кривошей
Дата перевода: август 2013 г.
1. Введение
Знаете ли вы, что можете присвоить более чем один IP-адрес физическому сетевому интерфейсу? Эта техника очень полезна, например при работе с Apache и виртуальными хостами, так как позволяет получить доступ к одному и тому же серверу Apache с двух разных IP-адресов.
2. Временный виртуальный сетевой интерфейс
Процесс создания виртуального сетевого интерфейса в Linux не занимает много времени. Он включает один запуск команды ifconfig.
$ ifconfig eth0:0 123.123.22.22
Приведенная выше команда создает виртуальный сетевой интерфейс, базирующийся на оригинальном физическом сетевом интерфейсе eth0. Самое важное условие для создания виртуального сетевого интерфейса — должен существовать физический сетевой интерфейс, в нашем случае eth0. Ниже приведен полный пример:
# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 3c:97:0e:02:98:c8 inet addr:192.168.100.23 Bcast:192.168.100.255 Mask:255.255.255.0 # ping 192.168.100.23 PING 192.168.100.23 (192.168.100.23) 56(84) bytes of data. 64 bytes from 192.168.100.23: icmp_req=1 ttl=64 time=0.023 ms 64 bytes from 192.168.100.23: icmp_req=2 ttl=64 time=0.059 m
Теперь мы можем настроить новый виртуальный интерфейс на базе eth0. После выполнения команды ifconfig новый виртуальный интерфейс готов к немедленному использованию.
# ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 3c:97:0e:02:98:c8 UP BROADCAST MULTICAST MTU:1500 Metric:1 Interrupt:20 Memory:f1600000-f1620000 # ifconfig eth0:0 123.123.22.22 # ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 3c:97:0e:02:98:c8 inet addr:123.123.22.22 Bcast:123.255.255.255 Mask:255.0.0.0 # ping 123.123.22.22 PING 123.123.22.22 (123.123.22.22) 56(84) bytes of data. 64 bytes from 123.123.22.22: icmp_req=1 ttl=64 time=0.060 ms 64 bytes from 123.123.22.22: icmp_req=2 ttl=64 time=0.057 ms
2.1. Отключение виртуального сетевого интерфейса
Для отключения нашего, созданного ранее, временного сетевого интерфейса мы можем также использовать команду ifconfig с флагом down.
# ifconfig eth0:0 down
3. Присвоение виртуальному интерфейсу постоянного адреса
Описанные выше настройки не сохраняются после перезагрузки. Если вы хотите, чтобы виртуальный сетевой интерфейс работал постоянно, необходимо модифицировать конфигурационные файлы в соответствии с требованиями вашего дистрибутива Linux. Ниже описан этот процесс для самых распространенных дистрибутивов:
3.1. Debian / Ubuntu
3.1.1. Статический адрес
В Debian или Ubuntu вам необходимо отредактировать файл /etc/network/interfaces, добавив в него следующие строки:
iface eth0:0 inet static address 123.123.22.22 netmask 255.0.0.0 broadcast 123.255.255.255
3.1.2. Dhcp
Возможно также использовать витруальный сетевой интерфейс с DHCP. В этом случае вам необходимо добавить в /etc/network/interfaces следующую строку:
iface eth0:0 inet dhcp
Для того, чтобы изменения вступили в силу, необходимо перезапустить сеть:
# /etc/init.d/networking restart
3.2. Redhat / Fedora / CentOS
3.2.1. Статический адрес
В Redhat, Fedora или CentOS Linux директория, отвечающая за присвоение постоянных IP-адресов — это /etc/sysconfig/network-scripts. В этой директории необходимо создать файл, соответствующий вашему новому виртуальному интерфейсу. В нашем случае этот файл будет называться ifcfg-eth0:0. Создайте этот новый файл и вставьте в него приведенные ниже строки. После перезагрузки адрес будет присвоен виртуальному интерфейсу на постоянной основе.
DEVICE=eth0:0 IPADDR=123.123.22.22 NETMASK=255.0.0.0 NETWORK=123.0.0.0 BROADCAST=123.255.255.255 ONBOOT=yes
3.2.2. Dhcp
DEVICE=eth0:0 BOOTPROTO=dhcp ONBOOT=yes
Когда закончите, перезапустите ваши интерфейсы:
# service network restart
4. Заключение
Раньше один физический сервер обслуживал один веб-сайт. Сегодня такой способ хостинга уже не является жизнеспособным, поэтому способность операционной системы создавать виртуальные сетевые интерфейсы действительно необходима.
Виртуальный сетевой интерфейс в linux. TAP vs TUN
Читатели, не нуждающиеся в теоретическом изложении концепции виртуальных сетевый интерфейсов Linux, могут сразу перейти к настройке по ссылкам:
- #Создаем интерфейс типа tun с помощью ip
- #Создаем интерфейс типа tap с помощью ip
- #Создаем интерфейс типа dummy с помощью ip
- #Создаем интерфейс типа tun с помощью systemd-networkd
- #Создаем интерфейс типа tap с помощью systemd-networkd
- #Создаем интерфейс типа dummy с помощью systemd-networkd
Создавать сетевые интерфейсы в linux нам позволяют различные модули ядра. Но там, где для реальных железных сетевых карт эти модули ядра, или как их еще называют — драйверы, обеспечивают прием данных от стека TCP/IP и их формирование уже в виде электрического сигнала на сетевой карте, драйверы виртуальных сетевых интерфейсов (loopback) могут лишь, приняв эти данные, отдать их какому-нибудь приложению для дальнейшей обработки. Такая функциональность может быть востребована, если на вашем сервере установлены программы, использующие стек TCP/IP для обмена данными и, понятно, не нуждающиеся в выводе этих данных в реальную сеть. Пример: веб-сайт на drupal связывается с базой данных, установленной на этом же сервере:
Другим распростаренным примером использования виртуальных сетевых интерфейсов (loopback) в linux может быть их использование для целей построения виртуальных частных сетей — VPN. Вы наверняка слышали о таких технологиях как OpenVPN, GRE, WireGuard и т.д. Каждый из этих демонов создает виртуальный сетевой интерфейс который служит для прозрачной маршрутизации данных между узлами, находящимися на удалении друг от друга и не имеющих возможности прямого взаимодействия. Рассмотрим общую сетевую топологию на примере OpenVPN:
От используемого драйвера зависит тип интерфейса, его скорость, допустимый размер MTU и т. д. Совсем даже не обязательно, что загружать драйвер в ядро вам придется самостоятельно. Скорее всего, создавая интерфейс нужного типа, система сама подберет и загрузит требуемый драйвер. Вам лишь останется сконфигурировать уже работающий loopback интерфейс. В данной статье мы рассмотрим 3 возможных на конец 2016 года типа виртуальных интерфейсов в linux: tun, tap и dummy. Отличие интерфейсов tun и tap заключается в том, что tap старается больше походить на реальный сетевой интерфейс, а именно он позволяет себе принимать и отправлять ARP запросы, обладает MAC адресом и может являться одним из интерфейсов сетевого моста, так как он обладает полной поддержкой ethernet — протокола канального уровня (уровень 2). Интерфейс tun этой поддержки лишен, поэтому он может принимать и отправлять только IP пакеты и никак не ethernet кадры. Он не обладает MAC-адресом и не может быть добавлен в бридж. Зато он более легкий и быстрый за счет отсутствия дополнительной инкапсуляции и прекрасно подходит для тестирования сетевого стека или построения виртуальных частных сетей (VPN). Виртуальный интерфейс типа dummy очень похож на tap, разница лишь в том, что он реализуется другим модулем ядра.
Создаем виртуальный интерфейс в linux вручную
Создавать и удалять интерфейсы, назначать IP и MAC адреса, изменять MTU и многое другое нам помогает утилита ip. Пользоваться ip удобно и легко, но помните, что произведенные изменения будут потеряны после перезагрузки компьютера. Используйте ip в целях тестирования.
Создаем интерфейс типа tun
ip tuntap add dev tun0 mode tun
ip address add 192.168.99.1/30 dev tun0
ip address show tun0
2: tun0: mtu 1500 qdisc noop state DOWN group default qlen 500
link/none
inet 192.168.99.1/30 scope global tun0
valid_lft forever preferred_lft forever
Как видим у нас теперь есть виртуальный интерфейс с именем «tun0», у него есть IP-адрес, и ни слова о MAC-адресе — всё, как мы и рассчитывали. Его уже можно пинговать, и на нем уже можно запускать слушающие сервисы. Но что будет, если мы попытаемся добавить этот интерфейс в бридж?
ip link set dev tun0 master br0
RTNETLINK answers: Invalid argument
Команда ip логичным образом выдала ошибку — нет никакого смысла добавлять в бридж интерфейс, не обладающий поддержкой ethernet.
Создаем интерфейс типа tap
ip tuntap add dev tap0 mode tap
ip address add 192.168.99.5/30 dev tap0
ip address show tap0
3: tap0: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether d6:1c:67:cd:6f:80 brd ff:ff:ff:ff:ff:ff
inet 192.168.99.5/30 scope global tap0
valid_lft forever preferred_lft forever
У нас теперь появился новый виртуальный интерфейс с именем «tap0», у него есть как IP-адрес, так и MAC-адреса. Его также можно пинговать, и на нем также можно запускать слушающие сервисы. Команда, добавляющая интерфейс в бридж уже не выдаст ошибку, потому что это интерфейс, обладающий поддержкой ethernet:
ip link set dev tap0 master br0
Создаем интерфейс типа dummy
ip link add dev dum0 type dummy
ip address add 192.168.99.9/30 dev dum0
ip address show dum0
4: dum0: mtu 1500 qdisc noop master br0 state DOWN group default qlen 1000
link/ether 1a:37:3b:0f:da:be brd ff:ff:ff:ff:ff:ff
inet 192.168.99.9/30 scope global dum0
valid_lft forever preferred_lft forever
Вы наверняка заметили, что команда для добавления интерфейса изменилась. Ничего необычного. Так написана утилита «ip». Ну и конечно, виртуальный интерфейс типа dummy можно легко добавить в бридж:
ip link set dev dum0 master br0
Создаем виртуальный интерфейс в linux с помощью systemd-networkd
В systemd-networkd за создание интерфейсов отвечают одни конфигурационные файлы, имеющие суффикс «.netdev», а за их настройку другие, имеющие суффикс «.network». Соответственно нам понадобиться в /etc/systemd/network создать по паре конфигурационных файлов для каждого из исследуемых типов интерфейсов
Создаем интерфейс типа tun
Создадим соответственно файлы tun0.netdev с содержимым:
[NetDev]
Name=tun0
Kind=tun
Создаем интерфейс типа tap
Создадим соответственно файлы tap0.netdev с содержимым:
[NetDev]
Name=tap0
Kind=tap
Создаем интерфейс типа dummy
Создадим соответственно файлы dum0.netdev с содержимым:
[NetDev]
Name=dum0
Kind=dummy
Стоит отметить, что если вы планируете маршрутизировать траффик через виртуальные интерфейсы ( а, используя их для цели создания виртуальных частных сетей (VPN), вы точно этого хотите), то в конфигурационный файл в секии «Network» следует добавить диррективу «IPForward=yes».
Создание субинтерфейса в Ubuntu (добавление второго IP на интерфейс)
Это руководство покажет, как настроить второй IP адрес на сетевом интерфейсе (создать субинтерфейс).
Для начала — посмотрим сетевые соединения:
ifconfig
Мы видим сетевой интерфейс eth0 с назначенным ему IP-адресом.
Конфигурация субинтерфейса
Добавим интерфейс eth0:0 в файл конфигурации интерфейсов:
nano /etc/network/interfaces
Запуск субинтерфейса
Подключаем сетевой суб-интерфейс eth0:0 :
ifup eth0:0
Затем выполняем команду, чтобы посмотреть работает ли у нас все:
ip addr
Если что-то пошло не так, — убедитесь, что Вы не допустили ошибки и перезапустите сетевую службу:
/etc/init.d/networking restart
Проверим сетевые интерфейсы:
ifconfig
На этом настройка дополнительного IP-адреса завершена.
Восстановление пароля
Заказать звонок
Мы перезвоним в будни с 9:30 до 18:30(по московскому времени).
Вход в личный кабинет
Создать аккаунт
© 2002-2023 Компания «NeoCommunications»
www.neocomms.ru
NeoServer Виртуальный сервер VDS (VPS) под Linux Выделенный виртуальный сервер (ВДС) с операционной системой Linux. На базе серверов HP Proliant, система хранения Raid10, резервное копирование. Тест бесплатно. 180
NeoServer Виртуальный сервер VDS (VPS) под Windows Выделенный виртуальный сервер (ВПС) с операционной системой Windows. Доступен онлайн 24 часа, резервное копирование. Тест бесплатно. 645