Linux выбор сетевого интерфейса по умолчанию

Обновлено: 03.07.2024

Для доступа к сетевым картам в Linux используются так называемые интерфейсы. Интерфейсы это не файлы устройств и их нет в каталоге /dev. Интерфейсы создаются динамически и не всегда связаны с сетевыми картами. Например интерфейс ppp0 - это интерфейс VPNа, организованного по протоколу PPTP, а интерфейс lo это виртуальная сетевая карта с адресом localhost (127.0.0.1). В Linux имена интерфейсов традиционно состоят из мнемонического типа интерфейса и его порядкового номера. Карты ethernet доступны через интерфейсы eth0, eth1 и т.д. В системах, использующих systemd способ именования другой - интерфейсы имеют имена вида enp2s0 (en -Ethernet, p - PCI, 2 - номер на шине) Список всех интерфейсов можно посмотреть командой ifconfig -a или ip link .

Привязка интерфейса к карте

При наличии нескольких сетевых карт возникает вопрос о порядке их нумерации. В CentOS 6 эта задача возложена на подсистему обнаружения и конфигурации устройств - udev. В системах с systemd правила именования встроены в udev, но могот быть переопределены, как написано ниже.

Видно, что нумерация опирается на аппаратный (MAC) адрес карты. Если в компьютере заменить карту, то интерфейс eth0 станет недоступным, а новая карта получит имя eth1. Если есть желание вручную назначить имена картам, то можно отредактировать этот файл, выставив желаемые соответствия между MAC адресами именами интерфейсов (возможно потребуется перезагрузка).

ifcfg

Классическая утилита конфигурации сетевых интерфейсов ifcfg

route

Настройка таблицы маршрутизации route

В современных дистрибутивах линукса на смену ifconfig и route приходит универсальная утилита ip

Адреса серверов DNS и имя локального домена вписываются в файл /etc/resolv.conf

Для просмотра доступных сетевых интерфейсов используется команда ip link

ArchLinux использует для настройки сети systemd/netctl . Для конфигурации используются файлы профилей, которые хранятся в /etc/netctl/ . В данном каталоге есть подкаталог examples/ из которого можно копировать файлы с образцами профилей в /etc/netctl/ . Например:

Содержимое enp1s0-work после редактирования

Базовые команды netctl

Просмотр доступных интерфейсов - ifcfg -a

Файл конфигурации интерфейсов - /etc/network/interfaces . auto - говорит о том, что интерфейс надо конфигурировать при старте системы.

После смены настроек в /etc/network/interfaces , необходимо отключить и снова включить интерфейс.

Общие настройки сети

Файл /etc/sysconfig/network используется стартовыми скриптами и содержит ключевые параметры - нужна ли сеть, нужно ли конфигурировать IP v6, имя компьютера. Сюда можно вписать шлюз по умолчанию, но CentOS 6 ориентируется на динамическое подкючение к сетям через WiFi и вписывает его в конфигурацию подходящего интерфейса.

Конфигурация интерфейса

Файлы в каталоге /etc/sysconfig/network-scripts с именами вида ifcfg-eth0

Интерфейс, получающий адрес по DHCP

Дополнительный IP адрес на интерфейсе eth1

Инициализация VLAN на eth1

Настройка DNS

Файл /etc/resolv.conf

Ручная настройка имен хостов файл /etc/hosts

Настройка брандмауэра

Файл /etc/sysconfig/system-config-firewall правила для настройки программой system-config-firewall

Файл /etc/sysconfig/iptables текущие правила, сохраненные на случай перезагрузки.

После ручного изменения правил их можно сохранить командой service iptables save

У меня есть сервер с двумя интерфейсами. eth0 в 100 раз быстрее, чем eth1. Хотя по какой-то причине каждая перезагрузка, интерфейс по умолчанию выбирается случайным образом. Чтобы сделать вещи более раздражающими, они оба используют один и тот же шлюз, поэтому выбор шлюза по умолчанию не будет работать. Как linux выбирает интерфейс по умолчанию и как выбрать его по умолчанию?

Вот мой route -n , чтобы немного объяснить ситуацию.

PS. Это VPS, поэтому мой провайдер также может быть виноват где-то. Причина для второго интерфейса заключается в том, чтобы иметь другой IP-адрес для DNS, потому что он только DNS, очень медленный.

EDIT: это сервер Ubuntu 10.04

2 ответа

Вы должны отключить второй медленный интерфейс, а затем добавить вторичный IP-адрес к первичному. Для этого отредактируйте файл с интерфейсом:

После того, как вы получили доступ к сетевому файлу, вам, вероятно, будет представлено следующее:

Переконфигурируйте его таким образом:

Это присвоит оба IP-адреса первому сетевому адаптеру. После этого сохраните файл и запустите:

И изменения будут зафиксированы.

По моему опыту, если он находится на том же виртуальном коммутаторе, это не имеет значения, хотя размещенные среды могут блокировать его дальше. Возможно, стоит попробовать, но если он не работает, вы можете попросить свою хостинговую компанию изменить виртуальный интерфейс на что-то более способное.

Кроме того, если ваш основной IP-адрес не обслуживает DNS, то почему бы и не использовать его для DNS? Вы можете размещать несколько разных сервисов на одном IP-адресе, поскольку они используют разные порты.

У вас, кажется, есть два интерфейса в одной подсети, что немного странно. Linux (при условии, что вы используете производную от Red Hat) выбирает шлюз по умолчанию, считывая значение GATEWAY из /etc/sysconfig/network . Однако эта переменная содержит IP-адрес в качестве идентификатора шлюза, а не имя интерфейса. Таким образом, в вашем случае один IP-адрес может быть шлюзом для обоих интерфейсов, что приводит (я думаю) к какому-либо состоянию гонки.

Я все еще не уверен, зачем нужен второй интерфейс. Что произойдет, если вы полностью отключите медленный интерфейс?

изменить интерфейс по умолчанию в Linux

Советы и хитрости

Практически все, что мы можем сделать в Linux, требует от нас подключения к сети. Независимо от того, разрабатываем ли мы приложения, устанавливаем программное обеспечение, создаем сценарии, обмениваемся файлами или даже смотрим фильмы, нам необходимо рабочее сетевое соединение. Следовательно, утверждение «Мне требуется подключение к сети» — просто преуменьшение. Единственный способ включить сетевое соединение на машине — через сетевой интерфейс.

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

Это краткое руководство покажет вам, как установить интерфейс по умолчанию в Linux.

Метод 1 — отключите адаптеры

Самый простой способ установить сетевой интерфейс по умолчанию — отключить все остальные интерфейсы. Например, в Linux вы можете использовать диспетчер сети с графическим интерфейсом пользователя или использовать терминал.

Предположим, у вас есть беспроводной адаптер, и вы хотите использовать адаптер Ethernet; в этом случае вы можете отключить адаптер Wi-Fi, используя следующую команду:

$ sudo ifconfig wlan0 down

$ sudo ifconfig eth0 up

Приведенные выше команды отключат беспроводной адаптер и включат адаптер Ethernet.

Это заставит систему переключиться на доступную сеть.

ПРИМЕЧАНИЕ. Для выполнения указанной выше команды требуются права sudo или root с установленным пакетом net-tools.

Метод 2 — Используйте IP-МАРШРУТЫ

Нетрадиционный метод — отредактировать маршруты и указать, какие устройства использовать по умолчанию.

Начните с использования команды:

Эта команда покажет вам шлюз по умолчанию и интерфейс по умолчанию. Например, ниже:

Оригинал: Interface configuration
Автор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 1 апреля 2015 г.

Глава 22. Настройка сетевых интерфейсов

В данной главе описывается процесс настройки сетевых интерфейсов , соответствующих сетевым картам , для последующего использования стека протоколов TCP/IP .

22.1. Следует ли использовать для настройки инструменты с графическим интерфейсом

В состав современных дистрибутивов Linux часто включаются приложения с графическим интерфейсом, предназначенные для настройки параметров сетевых соединений. Некоторые люди жалуются на то, что данные приложения нарушают настройки сетевых соединений в том случае, если они используются одновременно с инструментами с интерфейсом командной строки. Наиболее известными примерами приложений, которые никоим образом не обрабатывают настройки сетевых соединений, сделанные с помощью инструментов с интерфейсом командной строки, являются демон Network Manager (который нередко заменяется на демон wicd ), а также приложение для настройки системы yast .

Так как целью данного курса является изучение приемов администрирования серверов , мы будем считать, что администрирование серверов Linux всегда осуществляется с помощью приложений с интерфейсом командной строки.

В данной главе рассматриваются исключительно вопросы использования инструментов с интерфейсом командной строки для настройки сетевых интерфейсов системы!

К сожалению, не существует единого набора команд и файлов конфигурации в директории /etc , которые могли бы использоваться во всех дистрибутивах Linux. Мы рассмотрим вопросы настройки сетей в двух (значительных, но отличающихся) семействах дистрибутивов Linux.

Начнем с рассмотрения аспектов настройки сетевых интерфейсов в дистрибутивах Debian/Ubintu , после чего перейдем к рассмотрению аналогичных аспектов в дистрибутивах Fedora/RHEL .

22.2. Настройка сетевых интерфейсов в дистрибутивах Debain/Ubuntu

22.2.1. Файл конфигурации /etc/network/interfaces

Файл /etc/network/interfaces является основным файлом настроек сетевых интерфейсов, соответствующих сетевым картам, в дистрибутивах Debain/Ubuntu.

Клиент DHCP

В примере ниже показано, что наша текущая система Ubuntu 11.04 настроена таким образом, что клиент DHCP используется для сетевого интерфейса eth0 (соответствующего первой сетевой карте).

Использование клиента DHCP является отличной практикой в случае настройки клиентских машин, но в случае настройки серверов чаще всего требуется использовать фиксированные IP-адреса .

Фиксированный IP-адрес

В примере ниже показано содержимое файла /etc/network/interfaces в случае использования фиксированного IP-адреса .

В примере также показано, что в файле конфигурации помимо единственного IP-адреса могут использоваться дополнительные параметры. Обратитесь к странице руководства interfaces(5) для ознакомления с принципами установки значений таких параметров, как gateway , netmask или каких-либо других.

22.2.2. Утилита /sbin/ifdown

Рекомендуется деактивировать сетевой интерфейс перед изменением его конфигурации (хотя это и не обязательно). Данная операция может быть осуществлена с помощью утилиты ifdown .

Сетевой интерфейс, который был деактивирован, не может использоваться для соединения с сетью без повторной активации.

22.2.3. Утилита /sbin/ifup

Ниже приведен вывод утилиты ifup при активации сетевого интерфейса eth0 с использованием клиента DHCP. (Обратите внимание на то, что данный вывод был получен в дистрибутиве Ubuntu 10.10, при этом в дистрибутиве Ubuntu 11.04 утилита ifup не генерирует вывода по умолчанию).

Подробности использования программных компонентов для работы с протоколом DHCP освещены в отдельной главе курса "Администрирование серверов Linux" .

22.3. Настройка сетевых интерфейсов в дистрибутивах Red Hat/Fedora

22.3.1. Файл конфигурации /etc/sysconfig/network

Файл /etc/sysconfig/network является глобальным файлом конфигурации (для всех сетевых карт). Он позволяет установить, хотим ли мы использовать сетевое соединение (NETWORKING=yes|no), желаемое имя узла (HOSTNAME=), а также адрес шлюза (GATEWAY=).

Существуют и некоторые другие параметры, значения которых могут быть установлены в рамках данного файла, причем информация об этих параметрах приведена в текстовом файле /usr/share/doc/initscripts-*/sysconfig.txt .

22.3.2. Файлы конфигурации /etc/sysconfig/network-scripts/ifcfg-*

Каждая сетевая карта может быть индивидуально настроена в рамках файла конфигурации /etc/sysconfig/network-scripts/ifcfg-* . Если вы используете всего одну сетевую карту, для ее настройки, скорее всего, будет использоваться файл конфигурации /etc/sysconfig/network-scripts/ifcfg-eth0 .

Клиент DHCP

Ниже приведено содержимое файла конфигурации /etc/sysconfig/network-scripts/ifcfg-eth0 в случае использования клиента DHCP (BOOTPROTO="dhcp"). Также обратите внимание на параметр NM_CONTROLLED, который предназначен для запрета управления этой сетевой картой демоном Network Manager . Данный параметр, в отличие от многих других, не описан (и даже не упомянут) в текстовом файле /usr/share/doc/initscripts-*/sysconfig.txt .

В качестве значения переменной BOOTPROTO может использоваться либо строка dhcp , либо строка bootp , любые другие значения будут интерпретироваться как значение static , которое подразумевает отказ от специальных протоколов для установки параметров сетевого интерфейса при его активации.

Фиксированный IP-адрес

Ниже приведен пример содержимого файла конфигурации /etc/sysconfig/network-scripts/ifcfg-eth0 в случае использования фиксированного IP-адреса .

Параметр HWADDR предназначен для гарантированного использования заданных значений параметров для определенной сетевой карты при наличии нескольких сетевых карт в системе. Оно не может использоваться для присваивания произвольного MAC-адреса сетевой карте. Для этого вам придется установить значение переменной MACADDR. Не используйте переменные HWADDR и MACADDR в рамках одного файла конфигурации ifcfg-ethx .

Параметры BROADCAST= и NETWORK= из предыдущих версий дистрибутивов RHEL/Fedora являются устаревшими.

22.3.3. Утилиты /sbin/ifup и /sbin/ifdown

Утилиты ifup и ifdown позволяют активировать или деактивировать сетевой интерфейс с использованием описанных выше файлов конфигурации. Данные утилиты ведут себя аналогично соответствующим утилитам из состава дистрибутивов Debian и Ubuntu.

22.4. Утилита ifconfig

При использовании утилиты /sbin/ifconfig без аргументов будет выведен список всех активных сетевых интерфейсов, включая интерфейсы адаптеров беспроводных сетей и петлевой интерфейс. В примере ниже IP-адрес сетевого интерфейса eth0 не установлен.

Также вы можете использовать утилиту ifconfig для получения информации об одной сетевой карте.

В том случае, если для учетных записей обычных пользователей директория /sbin не включена в список директорий с исполняемыми файлами, передаваемый с помощью переменной окружения $PATH , вам придется использовать полный путь к утилите, как и в дистрибутиве Debian.

22.4.1. Активация и деактивация сетевых интерфейсов

Вы можете использовать утилиту ifconfig также для активации и деактивации сетевых интерфейсов. Главное отличие данной утилиты от утилиты ifup состоит в том, что в случае использования команды ifconfig eth0 up сетевой интерфейс будет повторно активирован с сохранением (текущей) конфигурации, в то время, как в случае использования утилиты ifup будет осуществляться чтение соответствующего файла конфигурации, который содержит (возможно обновленные) значения параметров конфигурации, с последующим использованием прочитанных значений параметров конфигурации в процессе активации сетевого интерфейса.

22.4.2. Установка IP-адреса

С помощью утилиты ifconfig вы также можете временно установить IP-адрес сетевого интерфейса. Этот IP-адрес будет использоваться до следующего цикла активации/деактивации сетевого интерфейса с помощью утилит ifup/ifdown или до следующей перезагрузки системы .

22.4.3. Установка MAC-адреса

Кроме того, вы также можете использовать утилиту ifconfig для установки MAC-адреса сетевого интерфейса, отличного от того, который был установлен при изготовлении вашей сетевой карты. В примере ниже показан процесс его установки.

22.4.4. Демон dhclient

Демон /sbin/dhclient обычно исполняется в домашних или клиентских системах, работающих под управлением Linux. Данный демон позволяет получать параметры подключения сетевого интерфейса от DHCP-сервера . В том случае, если в настройках вашего сетевого адаптера есть указание на использование протоколов DHCP или BOOTP , утилита /sbin/ifup будет автоматически осуществлять запуск демона dhclient .

При обновлении данных подключения демон dhclient будет заменять IP-адрес, установленный с помощью утилиты ifconfig !

22.5. Имя узла

Каждый узел получает имя, называемое именем узла (hostname) и обычно находящееся в пространстве имен DNS и формирующее полностью определенное имя домена (Fully Qualified Domain Name - FQDN).

В данном примере показана методика установки имени узла и его проверки с помощью утилиты hostname в случае работы с дистрибутивами Red Hat/Fedora.

Для установки имени узла в дистрибутивах Ubuntu/Debian используется файл /etc/hostname .

Во всех дистрибутивах Linux вы можете изменить имя узла с помощью команды hostname $новое_имя_узла . В этом случае имя узла будет изменяться не на постоянной основе.

В любой системе Linux вы также можете использовать утилиту sysctl для вывода и изменения имени узла.

22.6. Утилита arp

Поиск соответствий между IP- и MAC-адресами осуществляется с помощью протокола ARP второго уровня сетевой модели OSI . Содержимое таблиц ARP может выводиться с помощью одноименной утилиты arp . В примере ниже показан список имен и адресов компьютеров, с которыми не так давно обменивался данными рассматриваемый компьютер.

Узел с именем "anya" является межсетевым экраном Cisco, с именем "faith" - лазерным принтером, с именем "kiss" - медиа-плеером Kiss DP600, с именем "laika" - ноутбуком, а с именами "Agapi", "Shaka" и "Pasha" - серверами SPARC. С помощью символа знака вопроса обозначен сервер под управлением дистрибутива Red Hat Enterprise Linux, работающий в виртуальной машине.

Вы можете использовать команду arp -d для удаления элемента из таблицы ARP .

22.7. Утилита route

Вы можете ознакомиться с локальной таблицей маршрутизации компьютера, воспользовавшись утилитой /sbin/route (а также с помощью команды netstat -r ).

Оказывается, на данном компьютере не установлен адрес шлюза , поэтому мы можем воспользоваться командой route add default gw для непосредственной установки адреса шлюза, используемого по умолчанию .

Если вы не добавите адрес шлюза в один из описанных в начале данной главы файлов конфигурации сетевых интерфейсов из директории /etc/ , ваш компьютер будет забывать этот адрес после каждой перезагрузки.

22.8. Утилита ping

Если удаленный узел обнаруживается в сети с помощью утилиты ping , все необходимые для функционирования стека протоколов TCP/IP настройки были выполнены корректно.

22.9. Дополнительная информация: утилита ethtool

Для вывода и изменения значений рабочих параметров сетевой карты следует использовать утилиту ethtool . Результаты работы утилиты зависят от возможностей вашей сетевой карты. При рассмотрении представленного в примере вывода можно сделать вывод, что сетевая карта осуществляет автоматическое согласование пропускной способности.

А в данном примере показана методика использования утилиты ethtool с целью перевода сетевой карты с режима работы с пропускной способностью в 1000МБит к режиму работы с пропускной способностью в 100МБит и назад. Учтите, что для возврата сетевой карты в режим работы с пропускной способностью в 1000Мбит потребуется некоторое время.

22.10. Практическое задание: настройка сетевых интерфейсов

1. Проверьте, исполняется ли на вашем компьютере демон dhclient .

2. Выведите информацию о вашем текущем IP-адресе (или адресах).

3. Выведите содержимое файла конфигурации, в котором записан используемый IP-адрес .

4. Выполните действия, перечисленные в одном из разделов с описанием процесса н астройки сетевых интерфейсов , для перехода от использования клиента DHCP к использованию фиксированного IP-адреса . Используйте полученный ранее IP-адрес для того, чтобы избежать конфликтов!

5. Установили ли вы корректный адрес шлюза при выполнении предыдущего задания? Если нет, сделайте это сейчас.

6. Проверьте корректность установки адреса шлюза.

7. Проверьте возможность соединения с адресом шлюза, а также корректность работы шлюза.

8. Измените два последних символа в MAC-адресе вашей сетевой карты.

11. Выведите имя узла вашего компьютера.

12. Выведите список IP-адресов узлов, с которыми ваш компьютер недавно обменивался данными.

22.11. Корректная процедура выполнения практического задания: настройка сетевых интерфейсов

1. Проверьте, исполняется ли на вашем компьютере демон dhclient .

2. Выведите информацию о вашем текущем IP-адресе (или адресах).

3. Выведите содержимое файла конфигурации, в котором записан используемый IP-адрес .

В дистрибутивах Ubuntu/Debian: cat /etc/network/interfaces

В дистрибутивах RedHat/Fedora: cat /etc/sysconfig/network-scripts/ifcfg-eth*

4. Выполните действия, перечисленные в одном из разделов с описанием процесса н астройки сетевых интерфейсов , для перехода от использования клиента DHCP к использованию фиксированного IP-адреса . Используйте полученный ранее IP-адрес для того, чтобы избежать конфликтов!

В дистрибутивах Ubuntu/Debian:

В дистрибутивах RedHat/Fedora:

5. Установили ли вы корректный адрес шлюза при выполнении предыдущего задания? Если нет, сделайте это сейчас.

6. Проверьте корректность установки адреса шлюза.

7. Проверьте возможность соединения с адресом шлюза, а также корректность работы шлюза.

8. Измените два последних символа в MAC-адресе вашей сетевой карты.

Так как протокол TCP является надежным, а протокол UDP не является таковым.

11. Выведите имя узла вашего компьютера.

12. Выведите список IP-адресов узлов, с которыми ваш компьютер недавно обменивался данными.

Читайте также: