Настройка виртуальных сетевых интерфейсов в Linux
Знаете ли вы, что одному физическому сетевому интерфейсу можно назначить несколько IP-адресов? Этот метод очень полезен, например, при работе с Apache и виртуальными хостами, поскольку он позволяет вам получить доступ к одному и тому же серверу Apache, используя два разных IP-адреса.
Процесс создания виртуального сетевого интерфейса в Linux — дело довольно простое. Он предполагает однократное выполнение ifconfig команда.
Приведенная выше команда создаст новый виртуальный сетевой интерфейс на основе исходного физического интерфейса eth0. Единственным наиболее важным условием для создания виртуального сетевого интерфейса является физический сетевой интерфейс, так как в нашем случае должен существовать eth0. Полный пример показан ниже:
На этом этапе мы можем настроить новый виртуальный интерфейс на основе eth0. Как только вы выполните ifconfig команда новый виртуальный интерфейс будет немедленно готов к использованию.
Отключить виртуальный сетевой интерфейс
Чтобы отключить наш временный сетевой интерфейс, созданный ранее, мы можем использовать ifconfig снова, но с опущенным флагом.
Вышеупомянутая конфигурация не сохранится после перезагрузки. Если вы хотите, чтобы виртуальный сетевой интерфейс был постоянным, вам необходимо изменить файлы конфигурации, относящиеся к вашему конкретному дистрибутиву Linux. Ниже вы можете найти информацию, описывающую эту процедуру для основных дистрибутивов Linux:
Debian / Ubuntu
Статический
Для Debian или Ubuntu Linux вам необходимо отредактировать /etc/network/interfaces файл с вашим любимым текстовым редактором и добавьте следующие строки:
Также возможно использование виртуального сетевого интерфейса с DHCP. В этом случае вам нужно будет добавить в свой /etc/network/interfaces следующая строка.
Чтобы применить изменения, перезапустите сеть с помощью:
Redhat / Fedora / CentOS
Статический
Для Redhat, Fedora или CentOS Linux каталог, отвечающий за постоянное назначение IP-адреса, — /etc/sysconfig/network-scripts. В этом каталоге вам нужно создать файл, соответствующий вашему новому виртуальному интерфейсу. В нашем случае это будет файл с именем ifcfg-eth0: 0. Создайте этот новый файл и вставьте следующие строки, чтобы сделать ваше виртуальное назначение адреса постоянным после перезагрузки:
Когда все будет готово, перезапустите ваши интерфейсы с помощью:
Раньше один физический сервер обслуживал один веб-сайт. Сегодня это больше не является жизнеспособным вариантом для хостинга веб-сайтов, поэтому способность операционной системы создавать виртуальный сетевой интерфейс действительно необходима.
Подпишитесь на новостную рассылку Linux Career Newsletter, чтобы получать последние новости, вакансии, советы по карьере и рекомендуемые руководства по настройке.
LinuxConfig ищет технических писателей, специализирующихся на технологиях GNU / Linux и FLOSS. В ваших статьях будут представлены различные руководства по настройке GNU / Linux и технологии FLOSS, используемые в сочетании с операционной системой GNU / Linux.
Ожидается, что при написании статей вы сможете идти в ногу с технологическим прогрессом в вышеупомянутой технической области. Вы будете работать независимо и сможете выпускать не менее 2 технических статей в месяц.
- 08/08/2021
- 0
- Разное

Архивы Ubuntu 18.04
- 08/08/2021
- 0
- Разное
Цель состоит в том, чтобы установить драйверы NVIDIA в Ubuntu 18.04 Bionic Beaver Linux. В этой статье мы обсудим три метода установки драйвера Nvidia в следующем порядке:Автоматическая установка с использованием стандартного репозитория UbuntuАвт.
Любос Рендек, автор руководств по Linux
- 08/08/2021
- 0
- Разное
ЗадачаPopcorn Time транслирует фильмы и телешоу из торрентов прямо на ваш экран. Цель состоит в том, чтобы установить стример фильмов Popcorn Time на Ubuntu 18.04 Bionic Beaver Linux. Предупреждение: Есть несколько проектов под разными доменными и.
Ник Конглтон, автор руководств по Linux
- 08/08/2021
- 0
- Разное
ЗадачаУстановите и настройте Dunst для уведомлений на рабочем столе.РаспределенияDunst распространяется только как исходный код, поэтому его можно построить на любом текущем дистрибутиве.ТребованияРабочая установка Linux с привилегиями root.Сложно.
Настройка сети вручную
В руководстве приведены примеры редактирования конфигурационных файлов с помощью текстовых редакторов «nano» и «gedit». Обратите внимание на то, что первый редактор запускается в терминале и может быть использован как при запуске Ubuntu с графическим интерфейсом, так и без него, а «gedit» можно использовать только при включенной графической среде.
Требования к системе
Для воспроизведения описанных в руководстве действий подходит любой вариант установки системы. Наличие графического пользовательского интерфейса не обязательно. Все действия необходимо выполнять в консоли. Подразумевается, что команды, начинающиеся с символа $ — необходимо выполнять от пользователя, а начинающиеся с # — от суперпользователя (root).
Прежде чем Вы начнете, убедитесь, что:
Для настроек вам обязательно потребуется имя вашего сетевого адаптера. Его можно узнать из вывода команды:
Она позволяет посмотреть подключенные сетевые устройства.
Пример вывода команды:
Обратите внимание на строку:
eth0 — это и есть искомое имя сетевого интерфейса.
Имя eth0 будет далее применяться для настройки именно данной сетевой карты. Где eth обозначает что используется Ethernet интерфейс, а 0 — номер устройства. Если у вас установлено несколько сетевых устройств, то, соответственно, им будут присвоены имена: eth0 , eth1 , eth2 и т.д.
Более подробно о наименовании сетевых интерфейсов в SystemD можно почитать тут (англ.).
Такое переименование можно отключить добавив в /etc/default/grub, в строку с переменной GRUB_CMDLINE_LINUX_DEFAULT строку net.ifnames=0. После этого нужно выполнить sudo update-grub
Настройка проводной сети
Настройка IP-адреса, шлюза по умолчанию, маски подсети
Отредактируйте файл конфигурации /etc/network/interfaces , например так:
И допишите в него:
Для статического IP:
eth0 — имя подключаемого своего интерфейса. Список интерфейсов можно посмотреть набрав:
В итоге файл /etc/network/interfaces должен выглядеть примерно так:
(для одного проводного соединения со статическим IP)
Сохраните файл и закройте редактор. В данном примере (редактор nano) — нажмите Ctrl + X , затем Y , убедитесь, что «Имя файла для записи» — /etc/network/interfaces и нажмите Enter .
Более подробно про синтаксис файла /etc/network/interfaces можно прочитать в документации.
Пример конфигурации для динамического IP:
Временная настройка IP-адреса и маски подсети
При необходимости задать пробные настройки, выполните:
Где 192.168.0.1 — наш IP-адрес, /24 — число бит в префиксной части адреса (соответствует маске подсети 255.255.255.0).
eth0 — подключаемый сетевой интерфейс.
Данные настройки пропадут после перезагрузки системы и не повлияют на файл /etc/network/interfaces
Настройка DNS
В итоге описание статического интерфейса в /etc/network/interfaces должно выглядеть примерно так:
Ubuntu до версии 12.04
В более старых версиях ubuntu, когда есть необходимость указать статические адреса DNS серверов (если они не выдаются автоматически) выполните:
Настройка соединений ppp
За создание соединений типа «точка-точка» в Ubuntu отвечает демон pppd , более подробная информация о котором доступна в документации. В рамках данного руководства будут рассмотрены примеры создания PPPoE подключения через DSL модем, подключения PPTP (VPN-подключения) и DIAL-UP подключения через обычный модем.
Соединение PPPoE
В стандартную установку Ubuntu входит утилита для настройки PPPoE соединений – pppoeconf , для ее запуска наберите:
Появится «псевдографическое» 2) окно в терминале. Утилита произведет поиск сетевых устройств и выведет их на экран, далее она произведет поиск модема 3) на этих устройствах. Если на этом этапе pppoeconf выдаст отрицательный результат — проверьте правильность подключения, питание модема. Следующий шаг — выбор «популярных параметров» — в большинстве случаев стоит согласиться. Далее утилита запросит Ваш логин, а затем — пароль. Теперь — выбор способа указания DNS серверов. Опять же, в большинстве случаев следует согласиться на получение адресов DNS серверов автоматически. Далее Вам предложат ограничить размер MSS до 1452-х байт — как правило, стоит согласиться. Следующий вопрос — устанавливать ли подключение автоматически при загрузке компьютера. Последний вопрос утилиты — установить ли соединение сейчас. pppoeconf по умолчанию создает для подключения имя dsl-provider. Управлять подключением Вы можете при помощи команд:
Если в Вашем случае опций, предоставляемых утилитой pppoeconf недостаточно — обратитесь к документации по pppd или pppoeconf.
Замечание: при настройке соединения с помощью pppoeconf часть настроек записывается в /etc/network/interfaces , в результате чего Network Manager больше не может управлять сетью. Выход: либо использовать только NM, либо только консоль+конфиги. Вернуть управление Network Manager можно следующим образом. Приведите /etc/network/interfaces к следующему виду (лишнее не обязательно удалять, достаточно закомментировать):
Перезагрузитесь или перезапустите Network Manager:
Соединение PPTP
Для осуществления VPN-соединения при помощи pppd Вам потребуется установить пакет pptp-linux , который может быть найден на установочном диске Ubuntu. Далее создайте (от root'а) в папке /etc/ppp/peers файл с названием Вашего провайдера и отредактируйте его, например так:
И добавьте туда опции подключения, например такие:
Далее — отредактируйте файл /etc/chap-secrets 4) и добавьте туда:
После перезагрузки системы Вы сможете управлять соединением при помощи команд:
Процесс настройки VPN-соединения может сильно облегчить скрипт-помощник.
Настройка DIAL-UP подключения
Для настройки модемного соединения можно использовать встроенный конфигуратор pppd — pppconfig или специальную утилиту wvdial .
При помощи pppconfig
Процесс настройки при помощи pppconfig во многом похож на утилиту pppoeconfig , Вам по очереди будут заданы вопросы о параметрах подключения, и будет предложено ввести номер телефона, логин и пароль, а также имя соединения. Запускать pppconfig следует с правами суперпользователя. Например так:
Управлять соединением можно так:
Где my-provider — имя, присвоенное Вами соединению при настройке.
При помощи wvdial
В некоторых случаях (например при подключении с использованием мобильного телефона), удобнее использовать wvdial . Для этого нужно его сначала установить. Например так:
В состав пакета wvdial входит утилита автоматического конфигурирования — wvdialconf .
Вывод будет примерно следующим:
Теперь остается только отредактировать файл /etc/wvdial.conf и добавить в него номер телефона, логин и пароль.
В данном примере я дополнительно добавил несколько опций. См. комментарии.
Файл /etc/wvdial.conf разбит на секции, в качестве разделителей которых выступают сами названия секций, предварённые словом Dialer, в квадратных скобках. Если исполнять команду без параметров, то в дело пойдут установки, перечисленные в секции Defaults. В противном случае дополнительно будут исполнены указанные в добавочных секциях команды.
Теперь, когда все настроено, соединение можно установить набрав:
Если потребуется запустить wvdial с набором номера в импульсном режиме, то это можно сделать командой
Прервать соединение можно прервав выполнение команды wvdial , т.е. в том же терминале нужно нажать Ctrl + C .
Автоматическое подключение
Отредактируйте файл конфигурации /etc/network/interfaces , например так:
И допишите в него:
Для pppoe , pptp , и модемного подключения без использования wvdial :
Где my-provider — название вашего соединения.
При использовании wvdial :
Теперь при перезапуске сетевых служб соединение будет автоматически установлено.
Ручная настройка роутинга
Если Вы не получаете адрес шлюза по-умолчанию от сервера, к которому подключаетесь, или по какой-либо иной причине Вам необходимо указать маршруты вручную — Вы можете создать свой скрипт в /etc/ppp/ip-up.d/ , либо по рекомендации официальной документации создать /etc/ppp/ip-up.local например так:
со следующим кодом:
Далее — сделайте этот скрипт исполняемым, например так:
Теперь маршруты будут автоматически подключаться при установлении ppp-соединения.
Установка MTU и TTL
TTL (Time To Live) — время жизни ip-пакета в секундах. Нужен чтобы избежать перегрузки сети пакетами. Обычно каждый роутер, через которого прошел пакет, уменьшает TTL на еденицу. Если TTL=0, пакет из системы удаляется. Изначально TTL=128 (для Windows) и TTL=64 (для Ubuntu). Для DNS -записей TTL определяет время актуальности данных при кешировании запросов.
Для изменения величины MTU, отредактируем файл конфигурации /etc/network/interfaces , например так:
Для изменения величины TTL наберите:
Настройка WiFi
Настройка Wi-Fi при помощи wpa-supplicant и /etc/network/interfaces
В этой главе пойдет речь о настройке подключения к существующей Wi-Fi сети с использованием наиболее безопасного на сегодняшний день стандарта шифрования и аутентификации WPA2. Дополнительно приведены примеры настроек для менее безопасных соединений.
Замечания
Дополнительно к требованиям, указанным выше Вам следует учесть, что:
Подготовка
Установите пакеты wpa-supplicant и wireless-tools
Например так:
Теперь убедитесь в том, что Ваше беспроводное устройство (в данном примере это «wlan0») работает и «видит» беспроводные сети. Команда
должна выдать примерно такой результат:
а доступные сети можно посмотреть командой
которая должна выдать примерно такой результат:
Бывает, что Ваше устройство Wi-Fi не включено по умолчанию, тогда команда вместо рапорта, приведенного выше выдаст такое сообщение:
Ничего страшного, просто введите команду
соответственно выключить устройство можно командой
Настройка
Редактируем /etc/network/interfaces , например так:
Удаляем (или комментируем) все упоминания нашего беспроводного интерфейса и добавляем свои:
| Параметр | Описание |
|---|---|
| iface wlan0 inet dhcp | конфигурация для DHCP (для статического IP см. пример ниже) «iface wlan0» — Имя нашего интерфейса (wlan0, eth1, rausb0, ra0, итд.) |
| wpa-driver | Это wpa-driver для нашей карты ('wext' — общий драйвер для linux, работающий с «ndiswrapper»). Рекомендуется оставить как есть. Другие варианты: hostap = Host AP driver (Intersil Prism2/2.5/3) atmel = ATMEL AT76C5XXx (USB, PCMCIA) wext = Linux wireless extensions (generic) madwifi = Atheros wired = wpa_supplicant wired Ethernet driver |
| wpa-ssid | Имя нашей точки доступа (ESSID). Без кавычек. |
| wpa-ap-scan | Параметр вещания точкой доступа ее имени. «1» = ESSID вещается всем. «2» = ESSID скрыт. |
| wpa-proto | Протокол «RSN» = WPA(2) «WPA» = WPA(1) |
| wpa-pairwise & wpa-group | «CCMP» = AES-шифрователь (как часть стандарта WPA(2)) «TKIP» = TKIP-шифрователь (как часть стандарта WPA(1)) |
| wpa-key-mgmt | «WPA-PSK» = Аутентификация через ключевую фразу (см. 'Cоздание ключей') «WPA-EAP» = Аутентификация при помощи сервера аутентификаций. |
| auto wlan0 | Автоматическое включение wlan0 при загрузке/перезагрузке сети. |
Генерация ключей
Теперь нам нужно сконвертировать нашу ключевую фразу (WPA ASCII ) в hex-ключ:
Результат будет примерно таким:
hex-ключ это все символы после «psk=».
Нужно его скопировать в буфер обмена и вставить в файл /etc/network/interfaces в поле wpa-psk.
Теперь можно сохранить файл и перезагрузить сеть. Должно установиться соединение. Однако иногда этого сразу не происходит. Если это так — перезагружаем машину.
Дополнительно
Отключаем чтение файла /etc/network/interfaces для others во избежания попадания пароля от сети к третьим лицам.
Примеры конфигураций
WPA2 + статический IP, скрытый ESSID.
Другие способы работы Wi-Fi оборудования
При помощи Wi-Fi адаптера также возможно установить децентрализованную сеть ad-hoc или сделать из компьютера под управлением Ubuntu точку доступа. Поскольку описание данных способов Wi-Fi подключения выходит за рамки этого руководства — обратитесь к соответствующим разделам. Ссылки на эти разделы см. в разделе Cсылки .
Решение проблем
Не устанавливается соединение по Wi-Fi/Ethernet с точкой доступа/маршрутизатором
Симптомы: сеть обычно изначально работает нормально, долго или недолго, а затем неожиданно пропадает и не появляется после перезагрузки. Эта проблема может быть непостоянной. Сеть «сама собой» начинает работать, а затем пропадает вновь. При перезапуске адаптера сети таким образом:
будет выводиться в консоль похожий текст
Причиной проблемы может быть то, что материнская плата полностью не обесточивается при выключении компьютера. При этом вероятно не обесточивается и некоторое периферийное оборудование, в т.ч. могут не обесточиваться usb порты. Если вы используете, например, Wi-Fi usb-адаптер, то в таком случае можно заметить горящий на адаптере светодиод (если он им оборудован). Вероятно проблема возникает из-за того, что сетевое оборудование в этом режиме работает не совсем корректно.
Простое решение проблемы состоит в выключении компьютера и выдергивании кабеля питания из розетки с последующим подключением шнура питания и включением компьютера.
Сложное решение проблемы состоит в настройке параметров BIOS-а на полное обесточиваение сетевого оборудования при выключении компьютера.
Иногда наглухо пропадает соединение по Wi-Fi с точкой доступа/маршрутизатором
Симптомы: сеть изначально работает, а затем после перезагрузки точки доступа/маршрутизатора неожиданно пропадает, и не появляется ни после перезагрузки, ни после танцев с бубном. При этом беспроводной адаптер в упор не видит точку доступа (хотя она может стоять рядом с компьютером), но прекрасно видит все соседские сети. Затем после
перезагрузки маршрутизатора сеть сама собой появляется вновь.
Причиной проблемы может быть то, что некоторые маршрутизаторы произвольно выбирают номер рабочего канала, игнорируя номер канала выбранный в настройках маршрутизатора. Если в файле /etc/network/interfaces номер канала для беспроводного интерфейса указан, то вероятно проблема состоит именно в этом. Номер 6 канала указывается в файле примерно так:
Простое решение проблемы состоит в комментировании этого параметра, чтобы адаптер не был ограничен только этим каналом, и перезапуске сети
Сложное решение проблемы состоит в регистрации бага на сайте производителя маршрутизатора (прошивки для него) и обновление прошивки маршрутизатора после (в случае) его исправления.
Перезапуск сети
Теперь, когда все необходимые действия выполнены, можно перезапустить сеть и проверить соединение. Для этого:
Теперь, при запуске команды ip addr должно отобразиться подключение eth0 с выставленными параметрами. Если подключение отображается, но параметры не такие, какие были указаны в файле /etc/network/interfaces , либо возникают любые другие ошибки, перепроверьте этот файл на наличие неточностей и опечаток и попробуйте ещё раз перезапустить сеть.
FAQ по сетям
Как зайти на мой компьютер извне (через интернет)?
Для начала надо узнать, какой IP-адрес даёт провайдер — серый или белый (не путать со статическим/динамическим). Если серый, то ничего не получится. Если белый, то возможны два варианта:
Мне кажется, у меня слишком медленно работает сеть!
Измерьте скорость сети между двумя компьютера с помощью iperf . Можно воспользоваться этой инструкцией. В ней предлагают скомпиллировать программу из исходников, но можно просто установить её из репозитория. Если iperf покажет значение немного меньшее, чем ожидаемое, то с сетью всё в порядке, проблема может быть в железе (жёсткий диск/процессор не могут обеспечить большую скорость), в способе передачи (например, scp и ftp весьма неторопливы), в настройках (скорость может быть ограничена, например, настройками FTP -сервера) или в чём-то ещё. Если iperf показал величину, которая в разы меньше желаемой, то да — с сетью проблемы. Стоит посмотреть, в нужном ли режиме работает карта (например, с помощью ethtool ), проверить наличие «errors» в выводе ifconfig и протестировать скорость подключения к какому-нибудь третьему компьютеру.
Как узнать, какие программы слушают порты на моём компьютере?
Чтобы посмотреть список открытых портов и названия слушающих их программ, используйте команду:
Для вывода информации о конкретном порте можно использовать grep . Например, для 80 порта:
Из вывода netstat не всегда понятно, о какой программе идёт речь (например, 2671/python), подробнее о процессе расскажет ps :
Как присвоить два IP-адреса одной сетевой карте?
Например, интерфейсу eth0 нужно добавить адрес 192.168.1.1. Кратковременно, до перезапуска сети:
Навсегда — добавить в /etc/network/interfaces следующее:
Как пробросить порт?
Например, нужно пробросить порт 8081. Адрес, на который обращается клиент, назовём внешний_ip, а адрес, на который он должен попасть — внутренний_ip.
Добавить новый сетевой интерфейс Ubuntu
cd /etc/sysconfig/network-scripts/
cp ifcfg-enp0s3 ifcfg-enp0s8
MYUID=$(uuidgen enp0s8)
sed -i s / UUID=* / UUID=$MYUID / /etc/sysconfig/network-scripts/ifcfg-enp0s8
sed -i s / NAME=* / NAME=enp0s8 / /etc/sysconfig/network-scripts/ifcfg-enp0s8
sed -i s / DEVICE=* / DEVICE=enp0s8 / /etc/sysconfig/network-scripts/ifcfg-enp0s8
ifup enp0s8
unset MYUID
Пояснения
Допустим есть интерфейс enp0s3 и нужно создать новый интерфейс enp0s8
Перейдите в директорию /etc/sysconfig/network-scripts/ , в которой лежат настройки интерфейсов.
Скопируйте файл существующего интерфейса в файл с нужным именем
cp ifcfg-enp0s3 ifcfg-enp0s8
Сгенерируйте новый UID для интерфейса с помощью uuidgen
Замените старые имена и UID на новые, с помощью sed
sed -i s/UUID=*/UUID=$MYUID/ /etc/sysconfig/network-scripts/ifcfg-enp0s8
sed -i s/NAME=*/NAME=enp0s8/ /etc/sysconfig/network-scripts/ifcfg-enp0s8
sed -i s/DEVICE=*/DEVICE=enp0s8/ /etc/sysconfig/network-scripts/ifcfg-enp0s8
Сетевые интерфейсы
Сетевые интерфейсы создаются автоматически для каждого обнаруженного сетевого устройства при загрузке ядра ОС.
eth — сетевой интерфейс к карте Ethernet или картам WaveLan (Radio Ethernet).
Каждый интерфейс характеризуется определёнными параметрами, необходимыми для обеспечения его функционирования и для сетевого обмена данными по протоколу IP.
Параметры интерфейса
- DEVICE: Имя интерфейса.
- IPADDR: IP-адрес, соответствующий данному сетевому интерфейсу. Пакеты, отправленные по этому адресу, поступят на соответствующий интерфейс.
- NETMASK: Битовая маска, необходимая для вычисления маршрута передачи IP-пакета.
- BROADCAST: Адрес, используемый при широковещательной рассылке пакетов через интерфейс.
- Метрика: Условная характеристика интерфейса соответствующая уровню затрат при передаче информации через него. Используется при маршрутизации пакетов, для выбора оптимального маршрута.
- MTU: Maximum Transfer Unit. Максимальный размер блока данных обрабатываемого интерфейсом. Наибольшее значение MTU определяется типом интерфейса (например, для Ethernet MTU=1500), но может быть искусственно снижено.
- MAC-адрес: Аппаратный адрес сетевого устройства, соответствующего интерфейсу (для которых это имеет смысл).
Кроме этих параметров интерфейс характеризуется ещё:
- Флагами, которые определяют состояния устройства, например такие как: включен ли интерфейс (Up/Down), находится ли он в неразборчивом режиме (promiscuous/nonpromiscuous).
- Аппаратными характеристиками, такими как адрес памяти, номер IRQ, DMA, порт ввода/вывода.
- Статистической информацией, характеризующей различные аспекты работы интерфейса. Например, количество переданных/полученных байтов/пакетов, число переполнений, коллизий и др. с момента создания интерфейса.
Конфигурационные файлы и настройка IPv4
Debian/Ubuntu
Настройки сетевого интерфейса указываются в конфигурационном файле /etc/network/interfaces :
Ubuntu 16.04 LTS
Директивы сетевого интерфейса записываются в файл /etc/network/interfaces . В отличие от Debian и Ubuntu более ранних версий, интерфейсы именуются с префиксом ens , например — ens3 :
Ubuntu 18.04 LTS
В этой версии ОС сеть может задаваться не с помощью networking, а с помощью утилиты netplan.
Конфигурационный файл сетевого интерфейса расположен в каталоге: /etc/netplan/50-cloud-init.yaml . Описание интерфейса выглядит следующим образом:
Для применения изменений необходимо выполнить команду netplan apply. Она проверяет конфигурационный файл на наличие ошибок, применяет изменения и автоматически перезагружает интерфейс.
Redhat/Fedora/CentOS
В Redhat, Fedora или CentOS директория, отвечающая за присвоение постоянных IP-адресов — это /etc/sysconfig/network-scripts . В данной директории необходимо создать файл, соответствующий вашему новому виртуальному интерфейсу. Например, на наших боксах подобный файл будет называться ifcfg-eth0:0 .
/etc/sysconfig/network-scripts — каталог, содержащий конфигурационные файлы интерфейсов и скрипты, выполняющие их инициализацию.
/etc/sysconfig/network-scripts/ifup — скрипт, который выполняет настройку и активацию интерфейса.
/etc/sysconfig/network-scripts/ifdown — скрипт, который выполняет деактивацию интерфейса.
/etc/sysconfig/network-scripts/ifcfg-* — конфигурационные файлы, описывающие интерфейсы системы.
/etc/init.d/network — скрипт, выполняющий настройку сетевых интерфейсов и маршрутизации при загрузке.
/etc/sysconfig/network — конфигурационный файл, содержащий имя хоста, IP-адрес основного шлюза и IP-адреса основного и вспомогательного DNS-серверов:
Адрес можно добавить на тот же интерфейс, что и IPv4, новый создавать не нужно.
На нашей площадке используется универсальный шлюз fe80::1 .
CentOS
Для работы с IPv6 необходимо добавить следующие директивы в конфигурационный файл /etc/sysconfig/network :
- NETWORKING_IPV6 — включаем поддержку IPV6.
- IPV6_DEFAULTDEV — интерфейс по умолчанию.
- IPV6_DEFAULTGW — gateway по умолчанию.
IP-адрес назначается в конфигурационном файле /etc/sysconfig/network-scripts/ifcfg-* :
Debian/Ubuntu
IP-адрес добавляется на интерфейс в файле /etc/network/interfaces :
Ubuntu 16.04 LTS
От других систем семейства отличается имя интерфейса, вместо eth0 – ens3.
Ubuntu 18.04 LTS
В файл /etc/netplan/50-cloud-init.yaml нужно добавить:
И применить изменения командой netplan apply.
Несколько IP-адресов
Чтобы назначить дополнительные IPv4-адреса на тот же самый интерфейс, необходимо создать виртуальный интерфейс в виде имя_интерфейса:номер, например eth0:0 .
В остальном интерфейс настраивается аналогично физическому.
CentOS
Debian/Ubuntu
Ubuntu 16.04 LTS
Для данной ОС не требуется создавать виртуальный интерфейс, достаточно добавить второй IP-адрес на уже существующий, например:
Ubuntu 18.04 LTS с netplan
В интерфейсе описываются необходимые адреса, роутинг происходит через директиву routes .
Несколько IPv6-адресов можно назначать на один интерфейс без создания виртуального. При этом gateway указывается только один раз. Например:
CentOS
Debian/Ubuntu
Ubuntu 16.04 LTS
Nameservers
Необходимые директивы для nameservers добавляются в конфигурационный файл. Указать можно столько DNS-серверов, сколько необходимо.
CentOS
Ubuntu/Debian
Настройка приватной сети
Для создания приватной сети между боксами необходимо настроить новый интерфейс — он уже добавлен, увидеть его можно в выводе утилиты ip
У боксов без приватной сети только два интерфейса: lo и eth/ens . У боксов с приватной сетью есть ещё один интерфейс eth/ens , изначально он выключен. Чтобы его включить, надо:
Ubuntu 18.04 LTS и старше
Добавить в файл /etc/netplan/50-cloud-init.yaml :
Важно соблюдать количество пробелов как в остальном файле.
Debian
Добавить в файл /etc/network/interfaces.d/50-cloud-init :
CentOS
Создать файл /etc/sysconfig/network-scripts/ifcfg-eth1 :
Вы можете использовать любые IP-адреса из диапазона приватных. Там же можно узнать, какие маски для каких диапазонов лучше использовать.
Проверить работу приватной сети можно с помощью ssh, ping или любых других подходящих утилит:
Настройка mtu на интерфейсе
Параметр mtu нужно менять, если вы пользуетесь индивидуальной защитой от DDoS. В стандарте Ethernet TCP-пакеты разбиты на кадры объемом 1500 байт, но при передаче через GRE-тоннель маршрутизаторы дописывают к кадрам свои 24 байта. Принимающая система оказывается не готова к кадру размером 1524 байт, поэтому мы изменим параметр mtu на интерфейсе, уменьшив его до 1476 байт, чтобы принимающая система спокойно восприняла итоговый кадр в 1500 байт.
Ubuntu 18.04+
Дописываем mtu в конфигурационный файл /etc/netplan/50-cloud-init.yaml сразу после имени интерфейса, например:
Важно соблюдать количество пробелов как в остальном файле.
После чего перезагружаем сетевую службу командой netplan apply.
Debian
Редактируем файл /etc/network/interfaces, добавляя параметр вслед за описанием интерфейса:
Перезагружаем сеть командой systemctl restart networking.
CentOS
Вносим в файл /etc/sysconfig/network строку:
И перезагружаем сетевую службу: systemctl restart network.
ifconfig
Команда ifconfig позволяет получать диагностическую информацию об интерфейсах системы и выполнять их настройку.
Формат вызова команды:
Для получения информации, программа ifconfig может вызываться простым пользователем. Файл ifconfig находится в каталоге /sbin , чаще всего при вызове нужно указывать абсолютное путевое имя.
Без параметров программа выводит на экран информацию обо всех активных (находящих в состоянии up ) интерфейсах. Если указано имя интерфейса и отсутствуют опции, выводится информация только о нем.
Просмотр информации об интерфейсе eth0
Формат вывода информации о интерфейсе программой ifconfig:
Характеристики канального уровня
Канальный уровень Link encap. Аппаратный MAC-адрес устройства HWaddr.
Характеристики сетевого уровня
IP-адрес интерфейса inet addr; широковещательный адрес интерфейса Bcast; маска подсети интерфейса Mask.
Флаги, метрика и MTU
Список установленных флагов интерфейса: включён UP; принимает широковещательные пакеты BROADCAST; принимает групповые пакеты MULTICAST. Среди списка установленных флагов может присутствовать слово PROMISC, означающее, что интерфейс работает в неразборчивом режиме. Установленный размер максимального блока, передаваемого через интерфейс MTU и метрика интерфейса Metric.
Информация о полученных пакетах RX
Число пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns. Такое назначение полей соответствует только сетям Ethernet. В других сетях, смысл может отличаться.
Информация об отправленных пакетах
Число пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns, потерь несущей carrier, коллизий collisions ; объем буфера передачи txqueuelen. Такое назначение полей соответствует только сетям Ethernet. В других сетях, смысл может отличаться.
Объем переданных данных
Количество байтов полученных RX bytes и отправленных TX bytes через интерфейс/
Аппаратные параметры
Номер линии IRQ Interrupt и адрес памяти Base address.
Назначение IP-адреса 10.0.0.1 первой Ethernet-карте
Назначение IP-адреса 10.0.0.1 первой Ethernet-карте выполняется командой:
Включение интерфейса
Включение добавленного интерфейса выполняется командой:
Маршрутизация (route)
route — утилита для настройки таблицы маршрутизации.
Просмотр таблицы маршрутизации
Вывод совпадает с выводом netstat -r :
Добавление шлюза по умолчанию
Добавление маршрута в локальную сеть
Добавление маршрута в удаленную сеть
Удаление маршрута
Утилита ip
Утилита ip совмещает в себе другие сетевые утилиты и позволяет производить те же самые операции, что и ifconfig, route и arp вместе взятые.
Подробную информацию об утилите можно получить с помощью help :
Разберем вывод команды подробнее.
Блок «Usage» содержит синтаксис утилиты:
В блоке «OBJECT» указаны все доступные объекты:
Часто используемые объекты:
- address — сетевой адрес на устройстве
- link— физическое сетевое устройство
- monitor — мониторинг состояния устройств
- neigh — ARP
- route — управление маршрутизацией
- rule — правила маршрутизации
- tunnel — настройка туннелирования
«OPTIONS» содержит список доступных опций:
Часто используемые опции:
- -v — вывод информации об утилите и ее версии
- -s — включает вывод статистической информации
- -f — указывает протокол для работы. Если протокол не указан, берется на основе параметров команды. Принимает одно из значений:
- bridge — . Аналогично опции -B
- dnet —
- inet — . Аналогично опции -4
- inet6 — . Аналогично опции -6
- ipx —
- link — означает отсутствие протокола. Аналогично опции -0
Также при работе с утилитой ip используются различные команды и параметры.
Команды:
Если команда не указана, выполняется show .
Параметры:
- dev имя_устройства — сетевое устройство.
- up — включить.
- down — выключить.
- llarrr — MAC — адрес.
- initcwnd — размер окна перегрузки TCP при инициализации.
- window — размер окна TCP.
- cwnd — размер окна перегрузки TCP.
- type — тип.
- via — подключиться к роутеру.
- default — маршрут по умолчанию.
- blackhole — маршрут «черная дыра» — отбрасывать пакеты и не посылать ICMP сообщения о недоступности.
- prohibit — маршрут «запрета» — отбрасывать пакеты и возвращать ICMP сообщения о запрете доступа.
- unreachable — маршрут «недостижимый» — отбрасывать пакеты и посылать ICMP пакеты о недостижимости узла.
Не все команды и параметры доступны при работе с различными объектами. Подробную информацию также можно получить применив «help».
При выводе help для объекта address блок «Usage» содержит синтаксис различных комбинаций команд и параметров:
Примеры
Показать все соединения
Сокращенный вывод ifconfig без параметров:
Отображение информации об интерфейсе eth0
Включение интерфейса eth1
Вывод всех интерфейсов и IP-адресов
Установка/удаление IP-адреса для интерфейса eth1
Отображение маршрута к указанной сети
Отображение маршрута к указанной сети от указанного интерфейса
Создание/удаление маршрута
Создание маршрута по умолчанию
Создание маршрута к указанной сети
Как и для утилиты route, команды можно сокращать. Например, ip l тоже самое, что и ip link show .
Перезапуск сетевых сервисов
Чтобы применить изменения, внесенные в конфигурационный файл, необходимо перезапустить сервис.
Название самого сервиса будет отличаться в зависимости от выбранного дистрибутива, для Ubuntu/Debian это networking, для CentOS — network.