Вопрос или проблема
наш IT-специалист настроил сеть для нашего сервера Ubuntu 22.04 с:
- enp1so: карта, которая используется для внешнего мира.
- она имеет свой статический IP (147.100.157.194 маска подсети 255.255.255.248 /29) и GTW (147.100.157.193)
- она также должна обрабатывать исходящий трафик (например, для обновлений apt)
- enp69s0: карта для “управления” сервером (SSH, ограничено VPN)
- она имеет свой IP (147.100.157.202 маска подсети 255.255.255.248 /29) и GTW (147.100.157.201)
- используется только для подключения к серверу
Проблема в том, что наш IT-специалист не говорит на языке Linux, а я не говорю на языке сетей.
Я много пытался понять “маршруты”, “таблицы”, “политику маршрутизации”, “от” и “до”.. но это выходит за рамки моего понимания…
Я только понял, что мне нужно настроить yaml файл в /etc/netplan
, но все мои усилия привели к некоторым проблемам (если не к потере сервера).
Как мне настроить минимальный yaml файл, который служит вышеуказанным целям?
Будет ли это работать или снова нарушит подключение моего сервера?
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
# PROD карта/IP (только https и NFS)
dhcp4: no
addresses:
- 147.100.157.194/29
routes:
- to: default
via: 147.100.157.193
nameservers:
search: [inra.local]
addresses: [147.100.157.242, 147.100.166.31]
enp69s0:
# MGM карта/IP (только SSH из VPN)
dhcp4: no
addresses:
- 147.100.157.202/29
В настоящее время у нас есть следующая неисправная конфигурация. “Неисправная” потому, что сервер доступен, но не может установить соединение с внешним миром (например, для обновлений apt):
Неисправная конфигурация:
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
# PROD карта/IP (только https)
dhcp4: no
addresses:
- 147.100.157.194/29
# gateway4: 147.100.157.193
routes:
- to: 0.0.0.0/0
# - to: 147.100.157.192/29
via: 147.100.157.193
table: 100
- to: 147.100.157.224/29
via: 147.100.157.193
table: 100
- to: default
via: 147.100.157.193
table: 100
routing-policy:
- from: 147.100.157.194/29
table: 100
nameservers:
search: [inra.local]
addresses: [147.100.157.242, 147.100.166.31]
enp69s0:
# MGM карта/IP (только SSH из VPN)
# activation-mode: off
dhcp4: no
addresses:
- 147.100.157.202/29
# gateway4: 147.100.157.201
routes:
# - to: 147.100.157.200/29
- to: 0.0.0.0/0
via: 147.100.157.201
table: 200
routing-policy:
- from: 147.100.157.202/29
table: 200
nameservers:
search: [inra.local]
addresses: [147.100.157.242, 147.100.166.31]
[EDIT]
Или возможно этот другой вариант (из этой страницы, где написано “Это позволяет клиентам из любой сети подключаться к другой и позволяет ответу поступать с правильного интерфейса.” что меня немного пугает) :
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
# PROD карта/IP (только https)
dhcp4: no
addresses:
- 147.100.157.194/29
routes:
- to: default
via: 147.100.157.193
- to: 147.100.157.0/29
via: 147.100.157.193
table: 100
routing-policy:
- from: 147.100.157.0/29
table: 100
nameservers:
search: [inra.local]
addresses: [147.100.157.242, 147.100.166.31]
enp69s0:
# MGM карта/IP (только SSH из VPN)
dhcp4: no
addresses:
- 147.100.157.202/29
routes:
- to: 147.100.157.0/29
via: 147.100.157.201
table: 200
routing-policy:
- from: 147.100.157.0/29
table: 200
Ответ или решение
Настройка сети на сервере Ubuntu с помощью Netplan может показаться сложной, особенно когда необходимо корректно управлять несколькими сетевыми интерфейсами с разными статическими IP-адресами и шлюзами. Рассмотрим детально, как настроить Netplan для вашего случая, используя две сетевые карты: enp1s0 для внешнего подключения и enp69s0 для управления сервером через VPN.
Понимание проблемы
Вы хотите задать два сетевых интерфейса на вашем сервере Ubuntu 22.04:
-
enp1s0: Используется для взаимодействия с внешним миром, имеет статический IP и будет обслуживать исходящий трафик.
- IP: 147.100.157.194/29
- Шлюз: 147.100.157.193
-
enp69s0: Используется для управления сервером через VPN, имеет статический IP, но не должен использоваться для исходящего трафика.
- IP: 147.100.157.202/29
- Шлюз: 147.100.157.201
Настройка файла Netplan
Для правильной настройки сети, вам необходимо создать или отредактировать YAML файл в /etc/netplan/
, чаще всего это 01-netcfg.yaml
, с содержанием, соответствующим вашему сетевому оборудованию и требованиям.
Пример файла конфигурации:
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: no
addresses:
- 147.100.157.194/29
gateway4: 147.100.157.193
nameservers:
search: [inra.local]
addresses: [147.100.157.242, 147.100.166.31]
enp69s0:
dhcp4: no
addresses:
- 147.100.157.202/29
# ВАЖНО: Общая маршрутизация и политики маршрутизации
routing:
policy:
- from: 147.100.157.202/29
table: 200
table:
200:
- to: 0.0.0.0/0
via: 147.100.157.201
Объяснение конфигурации
-
Сетевая карта enp1s0:
- Устанавливается статический IP-адрес и основной шлюз для маршрутизации всего исходящего трафика.
- Указаны DNS-сервера для разрешения имен.
-
Сетевая карта enp69s0:
- Она имеет статический IP, но не задан общий шлюз, чтобы избежать использования этого интерфейса для исходящего трафика по умолчанию.
-
Политики маршрутизации:
- Созданы политики маршрутизации, которые определяют, что трафик исходящий из сети enp69s0 должен использовать таблицу маршрутизации 200, со своим шлюзом, если требуется.
Применение настроек
После редактирования файла конфигурации Netplan, примените настройки командой:
sudo netplan apply
Убедитесь в том, что внесённые изменения работают как ожидается, проверив сетевые подключения сервером:
- Выполните команду
ip a
для проверки применённых IP-адресов. - Используйте
ip route
для проверки настроек маршрутизации.
Завершение
Понимание настроек маршрутизации и корректная их реализация с помощью Netplan поможет вам достичь нужных результатов. Это решение изолирует серверные операции управления и взаимодействие с внешним миром, что улучшает безопасность и управляемость.
В случае дальнейших вопросов или сложностей рекомендуется привлечь специалиста по сетям, чтобы минимизировать риски потери связи с сервером при экспериментах с конфигурациями.