Вопрос или проблема
у меня свежая установка сервера Ubuntu 24.04 с 5 сетевыми картами
первый работает по DHCP и в действительности не используется, остальные 4 будут использоваться в качестве интерфейсов Pihole
попробовал следующую конфигурацию, могу получить доступ через SSH к этим IP, но не могу выйти в интернет после назначения статических IP.
# Этот файл сгенерирован из информации, предоставленной источником данных. Изменения
# в нем не сохранятся после перезагрузки экземпляра. Чтобы отключить
# возможности настройки сети cloud-init, создайте файл
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg со следующим содержимым:
# network: {config: disabled}
#network:
# ethernets:
# eno1:
# dhcp4: true
# version: 2
network:
ethernets:
eno1:
dhcp4: true
enp4s0:
dhcp4: false
addresses: [10.3.142.3/23]
routes:
- to: 10.3.142.0/23
via: 10.3.142.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
enp5s0:
dhcp4: false
addresses: [172.1.0.2/24]
routes:
- to: 172.1.0.0/24
via: 172.1.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
enp6s0:
dhcp4: false
addresses: [10.2.142.2/24]
routes:
- to: 10.2.142.0/24
via: 10.2.142.254
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
enp7s0:
dhcp4: false
addresses: [172.1.0.3/24]
routes:
- to: 172.1.0.0/24
via: 172.1.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
version: 2
Чего-то не хватает в моей конфигурации? Нужно ли настроить что-то еще, чтобы это работало?
eno1
в данный момент не подключен ни к какой сети. ip route
показывает следующее:
10.2.142.0/24 dev enp6s0 proto kernel scope link src
10.2.142.2 10.2.142.0/24 через 10.2.142.254 dev enp6s0 proto static
10.3.142.0/23 dev enp4s0 proto kernel scope link src
10.3.142.3 10.3.142.0/23 через 10.3.142.1 dev enp4s0 proto static
172.1.0.0/24 dev enp5s0 proto kernel scope link src
172.1.0.2 172.1.0.0/24 через 172.1.0.1 dev enp5s0 proto static
Все интерфейсы подключены к разным маршрутизаторам, которые имеют различных интернет-провайдеров и доступ в интернет.
В текущей конфигурации у вас нет заданного шлюза по умолчанию для любого из интерфейсов. Это означает, что хотя вы можете общаться внутри подсетей, определенных вашими статическими маршрутами, ваш сервер не знает, как направлять трафик во внешние сети (т.е. в интернет).
Чтобы задать маршрут по умолчанию, как сказали другие, вам следует изменить сегмент маршрутов в вашей конфигурации следующим образом:
routes:
- to: default
via: 172.1.0.1
Таким образом, ваша новая конфигурация будет:
network:
ethernets:
eno1:
dhcp4: true
enp4s0:
dhcp4: false
addresses: [10.3.142.3/23]
routes:
- to: default
via: 10.3.142.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
enp5s0:
dhcp4: false
addresses: [172.1.0.2/24]
routes:
- to: default
via: 172.1.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
enp6s0:
dhcp4: false
addresses: [10.2.142.2/24]
routes:
- to: default
via: 10.2.142.254
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
enp7s0:
dhcp4: false
addresses: [172.1.0.3/24]
routes:
- to: default
via: 172.1.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
Затем примените эти изменения:
sudo netplan apply
Примечание: Убедитесь, что ваши маршрутизаторы имеют доступ в интернет
Вам нужно задать маршрут по умолчанию, чтобы иметь доступ в интернет. Если вы хотите ограничить интернет для определенного интерфейса, просто добавьте маршрут по умолчанию только для этого интерфейса. Если вы хотите, чтобы другие интерфейсы использовались как запасной вариант для доступа в интернет, если основной не удается, то вам нужно будет определить значение метрики для каждого.
Отредактируйте ваш YAML файл Netplan следующим образом, чтобы добавить маршрут по умолчанию на только один интерфейс. В этом примере я добавил его для enp4s0
. Измените на другой интерфейс, чтобы соответствовать вашим потребностям.
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: true
enp4s0:
dhcp4: false
addresses: [10.3.142.3/23]
routes:
- to: 10.3.142.0/23
via: 10.3.142.1
- to: default
via: 10.3.142.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
enp5s0:
dhcp4: false
addresses: [172.1.0.2/24]
routes:
- to: 172.1.0.0/24
via: 172.1.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
enp6s0:
dhcp4: false
addresses: [10.2.142.2/24]
routes:
- to: 10.2.142.0/24
via: 10.2.142.254
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
enp7s0:
dhcp4: false
addresses: [172.1.0.3/24]
routes:
- to: 172.1.0.0/24
via: 172.1.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
Чтобы задать маршруты по умолчанию для каждого интерфейса, но установить приоритет для одного, добавьте значение метрики для каждого следующим образом. Меньшее значение метрики имеет приоритет. Измените соответственно для соответствия вашим потребностям.
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: true
enp4s0:
dhcp4: false
addresses: [10.3.142.3/23]
routes:
- to: 10.3.142.0/23
via: 10.3.142.1
- to: default
via: 10.3.142.1
metric: 100
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8]
enp5s0:
dhcp4: false
addresses: [172.1.0.2/24]
routes:
- to: 172.1.0.0/24
via: 172.1.0.1
- to: default
via: 10.3.142.1
metric: 200
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8]
enp6s0:
dhcp4: false
addresses: [10.2.142.2/24]
routes:
- to: 10.2.142.0/24
via: 10.2.142.254
- to: default
via: 10.2.142.254
metric: 300
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8]
enp7s0:
dhcp4: false
addresses: [172.1.0.3/24]
routes:
- to: 172.1.0.0/24
via: 172.1.0.1
- to: default
via: 172.1.0.1
metric: 400
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8]
Цитата из Документации Netplan:
metric (scalar) Относительный приоритет маршрута. Должен быть положительным целым числом.
После редактирования конфигурационных файлов запустите sudo netplan apply
.
В качестве примечания, я удалил четвертый DNS сервер для каждого интерфейса. Разрешено использовать только три сервера имен. Любое значение выше этого будет проигнорировано, о чем сообщается при чтении вывода resolvectl status
.
Ответ или решение
В любой профессиональной области, включая информационные технологии, четкая и точная настройка сетей является ключевой задачей, особенно когда затрагиваются такие сложные элементы, как использование нескольких сетевых интерфейсов и статических IP-адресов. Рассмотрим ситуацию с сетевой конфигурацией на свежей установке Ubuntu Server версии 24.04, где есть потребность в управлении пятью сетевыми интерфейсами.
Теория (Theory):
Одной из распространенных задач при управлении несколькими сетевыми интерфейсами является проблема маршрутизации. Каждый интерфейс может быть связан с различными подсетями и иметь свои собственные настройки маршрута. Когда дело доходит до настройки статических IP-адресов, особенно если эти интерфейсы подключены к разным ISP (Интернет-провайдерам), необходимо правильно настроить маршруты, особенно маршруты по умолчанию, которые определяют, какой интерфейс будет использоваться для исходящего интернет-трафика.
Основные элементы, которые требуют внимания при такой конфигурации:
- Маршрут по умолчанию: Необходимо определить, через какой шлюз будет проходить трафик, если другие более специфичные маршруты не применяются.
- Метрика маршрута: Позволяет определить приоритет использования одного маршрута по сравнению с другим. Более низкие значения метрики имеют более высокий приоритет.
- Nameservers для DNS: Конфигурации сетевых интерфейсов должны включать надлежащие настройки DNS для разрешения имен.
Пример (Example):
В рассмотренном случае у сервера Ubuntu имеется пять сетевых интерфейсов. Один интерфейс (eno1
) настроен для получения адреса через DHCP и в текущей конфигурации не используется. Остальные четыре интерфейса используются для подключения к различным маршрутизаторам:
network:
version: 2
ethernets:
eno1:
dhcp4: true
enp4s0:
dhcp4: false
addresses: [10.3.142.3/23]
routes:
- to: default
via: 10.3.142.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8]
enp5s0:
dhcp4: false
addresses: [172.1.0.2/24]
routes:
- to: default
via: 172.1.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8]
enp6s0:
dhcp4: false
addresses: [10.2.142.2/24]
routes:
- to: default
via: 10.2.142.254
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8]
enp7s0:
dhcp4: false
addresses: [172.1.0.3/24]
routes:
- to: default
via: 172.1.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8]
Важно обратить внимание на настройку маршрута по умолчанию и принятие решения о том, какой интерфейс должен обрабатывать интернет-трафик. В большинстве случаев все интерфейсы нельзя назначать как маршруты по умолчанию, так как это может вызвать конфликт. Однако возможно настроить одну из них как основной маршрут, а остальные в качестве резервных с использованием метрик маршруту.
Применение (Application):
Используя приведенные примеры и теоретические аспекты, вы можете приступить к настройке сетевых конфигураций на вашем сервере Ubuntu с учетом следующих рекомендаций:
-
Установление единственного маршрута по умолчанию: Это гарантирует, что трафик к интернету будет проходить через один заданный интерфейс. Рекомендуется выбрать наиболее стабильное соединение, если это возможно.
-
Настройка метрик маршрутов для резервирования: Если вы используете несколько интернет-подключений с целью обеспечения отказоустойчивости, задайте метрики, чтобы указать приоритетные и резервные маршруты.
-
Проверка имен серверов DNS: Убедитесь, что все сетевые интерфейсы имеют корректно настроенные DNS-серверы, чтобы избежать проблем с разрешением имен.
-
Применение и тестирование конфигурации: После внесения всех изменений необходимо применить их командой
sudo netplan apply
. Тестирование можно провести, проверив возможность пинга как внутренних, так и внешних адресов (например, 8.8.8.8).
Следуя этим указаниям и примерам, вы сможете успешно настроить ваш сервер Ubuntu для работы с несколькими сетевыми интерфейсами и обеспечить стабильный доступ к интернету через статические IP-адреса.