- Вопрос или проблема
- Настройка двух сетевых карт для разных сетей на одной машине
- Вопрос
- Обновление 1
- Обновление #2
- Проблема
- Целевая конфигурация
- Схема оборудования
- Конфигурация Netplan YAML
- Тестирование
- Попробуйте выполнить ping с сервера
- Проверьте таблицу маршрутизации
- Тест сети MGMT
- Тест сети Lab
- Ответ или решение
- Конфигурация двух сетевых интерфейсов (NIC) с различными IP-адресами в Netplan на Ubuntu 22.04
- Введение
- Описание проблемы
- Конфигурация Netplan
- Структура маршрутизации
- Тестирование конфигурации
- Заключение
Вопрос или проблема
Настройка двух сетевых карт для разных сетей на одной машине
Вопрос
Как правильно настроить две сетевые карты в разных сетях? Цель состоит в том, чтобы весь трафик возвращался с интерфейса, на котором он был получен. Если кто-то может предоставить пример того, как должна выглядеть таблица маршрутизации, я смогу создать конфигурацию Netplan на этой основе.
Обновление 1
- Добавлена схема оборудования
- Упрощена config.yaml, что решило проблему с
ping
из eno2 - По-прежнему не возвращает трафик корректно с использованием
iperf
Обновление #2
- Небольшое уточнение в цели (две сетевые карты, две подсети)
- Запрос примера вывода
ip r s
в качестве целевого.
Проблема
Обе сетевые карты доступны, однако возвращающий трафик маршрутизируется только через одну из них. Попытка указать таблицы в netplan не сработала, но, вероятно, я ошибаюсь в политике маршрутизации в конфигурации YAML.
Целевая конфигурация
Я хотел бы, чтобы весь трафик был разделен между сетевыми картами. Они не должны быть изолированными, но если трафик идет по сети LAB, он должен оставаться на объединенной сетевой карте, а если по сети MGMT, то оставаться на устройстве eno2.
┌─────────────────┐ ┌──────────────────────┐
│ y.y.y.0/24 │ │ x.x.x.0/24 │
│ mgmt network │ │ lab network │
└─┬───────────────┘ └─┬──┬─────────┬──┬────┘
│ │┼┼│ │┼┼│
│ │┼┼│ │┼┼│
│ │┼┼│ ┌─=┴==┴=─────┐
│ │┼┼│ | file server|
│ │┼┼│ └────────────┘
┌─=───────────────────────=┴==┴=─────────────────┐
│ y.y.y.105 x.x.x.71 │
│ │
│ GPU Server │
└────────────────────────────────────────────────┘
Схема оборудования
Это топология соответствующего оборудования в стеке.
Конфигурация Netplan YAML
#50-netplan-config.yaml
network:
version: 2
ethernets:
# сеть управления y.y.y.0/24
eno2:
dhcp4: no
dhcp6: no
addresses: [y.y.y.105/24]
routes:
- to: default
via: y.y.y.1
nameservers:
addresses: [y.y.y.1, 1.1.1.1, 1.0.0.1]
search: [local, lab]
bridges:
# сеть lab x.x.x.0/24
br0:
dhcp4: no
dhcp6: no
interfaces: [bond0]
addresses: [x.x.x.71/24]
nameservers:
addresses: [x.x.x.1, 1.1.1.1, 1.0.0.1]
search: [local, lab]
bonds:
bond0:
interfaces: [enp129s0f0, enp129s0f1, enp129s0f2, enp129s0f3]
parameters:
lacp-rate: fast
mode: 802.3ad
transmit-hash-policy: layer3+4
mii-monitor-interval: 100
ad-select: bandwidth
# интерфейсы для bond0
enp129s0f0:
dhcp4: no
dhcp6: no
enp129s0f1:
dhcp4: no
dhcp6: no
enp129s0f2:
dhcp4: no
dhcp6: no
enp129s0f3:
dhcp4: no
dhcp6: no
Тестирование
Попробуйте выполнить ping с сервера
Работает на eno2
PING 1.1.1.1 (1.1.1.1) from y.y.y.105 eno2: 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=52 time=10.3 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=52 time=10.4 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=52 time=10.3 ms
--- 1.1.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 10.309/10.324/10.353/0.020 ms
Работает на br0
$ ping -c 3 -I br0 1.1.1.1
PING 1.1.1.1 (1.1.1.1) from x.x.x.71 br0: 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=52 time=10.1 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=52 time=10.3 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=52 time=10.6 ms
--- 1.1.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 10.102/10.339/10.573/0.192 ms
Проверьте таблицу маршрутизации
$ ip route show
default via y.y.y.1 dev eno2 proto static
blackhole 10.1.228.192/26 proto 80
x.x.x.0/24 dev br0 proto kernel scope link src x.x.x.71
y.y.y.0/24 dev eno2 proto kernel scope link src y.y.y.105
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
Тест сети MGMT
Тест интерфейса eno2
с iperf
и nload
. Результаты показывают, что трафик на сервер GPU принимается на правильном интерфейсе, но возвращающий трафик идет через bond0
(br0
).
❯ iperf -c y.y.y.105 -r -f G
------------------------------------------------------------
Client connecting to y.y.y.105, TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 1] local 172.30.30.229 port 60716 connected with y.y.y.105 port 5001 (icwnd/mss/irtt=14/1448/5000)
[ ID] Interval Transfer Bandwidth
[ 1] 0.00-10.31 sec 0.150 GBytes 0.015 GBytes/sec
[ 2] local 172.30.30.229 port 5001 connected with x.x.x.71 port 53436
[ ID] Interval Transfer Bandwidth
[ 2] 0.00-10.12 sec 0.171 GBytes 0.017 GBytes/sec
$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 1] local y.y.y.105 port 5001 connected with 172.30.30.229 port 58370
[ ID] Interval Transfer Bandwidth
[ 1] 0.0000-10.2382 sec 161 MBytes 132 Mbits/sec
------------------------------------------------------------
Client connecting to 172.30.30.229, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ *2] local x.x.x.71 port 36346 connected with 172.30.30.229 port 5001 (reverse)
[ ID] Interval Transfer Bandwidth
[ *2] 0.0000-10.2344 sec 151 MBytes 124 Mbits/sec
$ nload eno2
Device eno2 [y.y.y.105] (1/1):
=============================================================================================================
Incoming:
######################
######################
######################
###################### Curr: 1.49 kBit/s
###################### Avg: 20.73 MBit/s
###################### Min: 1.02 kBit/s
###################### Max: 190.57 MBit/s
###################### Ttl: 676.95 MByte
Outgoing:
Curr: 0.00 Bit/s
Avg: 0.00 Bit/s
Min: 0.00 Bit/s
Max: 0.00 Bit/s
Ttl: 9.99 MByte
замечание: nload br0
и nload bond0
открывают одно и то же устройство в окне nload
$ nload br0
Device bond0 (1/15):
==============================================================================================================
Incoming:
Curr: 3.84 kBit/s
Avg: 192.22 kBit/s
Min: 952.00 Bit/s
.|. Max: 1.81 MBit/s
.###################|. Ttl: 7.30 MByte
Outgoing:
######################
######################
######################
######################
######################
###################### Curr: 21.80 kBit/s
###################### Avg: 21.51 MBit/s
. ###################### Min: 4.16 kBit/s
|.|###||#####|.....###################### Max: 162.19 MBit/s
|######################################### Ttl: 694.43 MByte
Тест сети Lab
Тем временем сетевой трафик идет, как и ожидалось, на интерфейсе br0
.
❯ iperf -c x.x.x.71 -r -f G
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to x.x.x.71, TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 1] local 172.30.30.229 port 59950 connected with x.x.x.71 port 5001 (icwnd/mss/irtt=14/1448/3000)
[ ID] Interval Transfer Bandwidth
[ 1] 0.00-10.12 sec 0.159 GBytes 0.016 GBytes/sec
[ 2] local 172.30.30.229 port 5001 connected with x.x.x.71 port 33270
[ ID] Interval Transfer Bandwidth
[ 2] 0.00-10.20 sec 0.167 GBytes 0.016 GBytes/sec
$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 1] local x.x.x.71 port 5001 connected with 172.30.30.229 port 59950
[ ID] Interval Transfer Bandwidth
[ 1] 0.0000-10.1135 sec 163 MBytes 135 Mbits/sec
------------------------------------------------------------
Client connecting to 172.30.30.229, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ *2] local x.x.x.71 port 33270 connected with 172.30.30.229 port 5001 (reverse)
[ ID] Interval Transfer Bandwidth
[ *2] 0.0000-10.2124 sec 171 MBytes 140 Mbits/sec
$ nload br0
Device bond0 (1/12):
=============================================================================================================
Incoming:
######################
######################
######################
###################### Curr: 3.85 kBit/s
###################### Avg: 44.04 MBit/s
###################### Min: 3.85 kBit/s
###################### . Max: 174.40 MBit/s
######################.|#||##.|###|||||||. Ttl: 3.35 GByte
Outgoing:
######################
######################
######################
######################
###################### Curr: 13.89 kBit/s
###################### Avg: 47.11 MBit/s
. .... . .. ###################### Min: 4.16 kBit/s
.##########||####||######################. Max: 165.06 MBit/s
.########################################## Ttl: 2.86 GByte
Если я правильно прочитал вашу схему, GPU и файловый сервер находятся в одной L2 сети, поэтому маршрутизация на самом деле не требуется.
Политика LACP на коммутаторе должна быть настроена с учетом L4 для хеширования, чтобы различные потоки передачи нацеливались на различных участников объединения. Я предполагаю, что у вас есть несколько TCP/UDP сеансов, иначе нагрузка не будет вообще распределяться.
Ответ или решение
Конфигурация двух сетевых интерфейсов (NIC) с различными IP-адресами в Netplan на Ubuntu 22.04
Введение
Настройка двух сетевых интерфейсов на одном сервере является частой задачей для системных администраторов. В контексте вашего вопроса настроим два интерфейса для работы в разных сетях, обеспечив при этом возвращение всего входящего трафика через тот же интерфейс, через который он был получен. В данной статье будет представлен сценарий конфигурации и пример routing table (маршрутизационной таблицы), а также рассмотрение соответствующего файла конфигурации Netplan.
Описание проблемы
Ваша цель – настроить NIC eno2
для управления (MGMT) сетью с адресом y.y.y.105/24
, а также создать мост br0
для подключения к лабораторной сети с адресом x.x.x.71/24
. Каждое устройство должно обрабатывать трафик по своему интерфейсу, а не использовать общий. Это требует настройки правильных маршрутов и таблиц маршрутизации.
Конфигурация Netplan
Файл конфигурации Netplan должен находиться по пути /etc/netplan/50-netplan-config.yaml
. Вот как может выглядеть ваш файл:
network:
version: 2
ethernets:
# Управляющая сеть
eno2:
dhcp4: no
dhcp6: no
addresses: [y.y.y.105/24]
gateway4: y.y.y.1
nameservers:
addresses: [y.y.y.1, 1.1.1.1, 1.0.0.1]
search: [local, lab]
bridges:
br0:
dhcp4: no
dhcp6: no
interfaces: [bond0]
addresses: [x.x.x.71/24]
nameservers:
addresses: [x.x.x.1, 1.1.1.1, 1.0.0.1]
search: [local, lab]
bonds:
bond0:
interfaces: [enp129s0f0, enp129s0f1, enp129s0f2, enp129s0f3]
parameters:
mode: 802.3ad
mii-monitor-interval: 100
Структура маршрутизации
После настройки сетевых интерфейсов и перезагрузки службы Netplan, вы можете проверить маршрутизацию с помощью команды:
ip route show
Ожидаемый вывод должен быть следующим:
default via y.y.y.1 dev eno2 proto static
x.x.x.0/24 dev br0 proto kernel scope link src x.x.x.71
y.y.y.0/24 dev eno2 proto kernel scope link src y.y.y.105
default via y.y.y.1 dev eno2
— маршрут по умолчанию для трафика управления.x.x.x.0/24 dev br0
— локальный маршрут для лабораторной сети через мост.
Тестирование конфигурации
-
Пингование: Проверьте, что вы можете пинговать устройства в обеих сетях с помощью команды:
ping -c 3 -I eno2 1.1.1.1 # для управленческой сети ping -c 3 -I br0 1.1.1.1 # для лабораторной сети
-
Использование iperf: Проверьте скорость соединений, запустив сервер и клиент:
- На стороне сервера:
iperf -s
- На стороне клиента:
iperf -c y.y.y.105 -r
- На стороне сервера:
Это должно показать, что трафик обрабатывается через соответствующие интерфейсы.
Заключение
Настройка двух сетевых интерфейсов с различными IP-адресами в Ubuntu 22.04 требует точного определения конфигурации в файле Netplan и корректного маршрута. Следуя представленному примеру и инструкциям, вы сможете обеспечить правильное разделение трафика между двумя сетями, что позволит избежать возможных проблем с маршрутизацией.