Как заставить несколько портов Ethernet (NIC) работать одновременно на устройстве Linux

Я новичок в маршрутизации и работе в сети, поэтому надеюсь, что некоторые из вас помогут мне разобраться в проблеме и способах ее решения.

Текущая ситуация:

У меня Linux сервер (raspbian / ubuntu). Этот сервер имеет два порта Ethernet (каждый из них имеет свой MAC-адрес и фиксированный IP-адрес). Пожалуйста, обратитесь к изображению ниже, чтобы просмотреть предполагаемые подключения, назначенные IP-адреса и т. Д. (Нажмите ссылку ниже).

-> Щелкните, чтобы увидеть текущую настройку.

К этому серверу linux микроконтроллер (µC) с фиксированным IP-адресом подключен к одному порту Ethernet. Этот микроконтроллер отправляет данные на сервер, которые затем сохраняются в базе данных на сервере Linux. Второй порт Ethernet сервера Linux подключен к маршрутизатору. Этот роутер имеет доступ к Интернету. Мой компьютер (IP назначается динамически) также подключен к этому маршрутизатору.

Проблема:

Когда оба порта Ethernet на сервере Linux подключены, они не работают должным образом. Микроконтроллер может отправлять данные на сервер Linux, и я могу подключаться к Интернету с сервера Linux. Однако, если я хочу подключиться к серверу Linux со своего компьютера (filezilla, ftp, ssh и т. Д.), Я всегда получаю тайм-аут. Невозможно подключиться к серверу, если оба порта Ethernet активны. Как только я отключу один порт Ethernet (sudo ip link отключит eth0 или просто отключу от него кабель Enthernet), мне не составит труда подключиться к серверу linux с моего компьютера.

Я уже много чего перепробовал. (добавление пользовательских таблиц маршрутизации, правил и т. д.), но я пока не смог заставить его работать так, как я хотел. Но в то же время я думаю, что я слишком много думаю об этом, поскольку действительно кажется, что не нужно слишком много усилий, чтобы заставить эту настройку работать.

Большинство решений, которые я пробовал до сих пор, идут в этом направлении: https://kindlund.wordpress.com/2007/11/19/configuring-multiple-default-routes-in-linux/

Надеюсь, некоторые из вас расскажут мне очевидные вещи, которых я сейчас не знаю видя. Я ценю каждый намек и каждую попытку помочь, большое спасибо.

-1
задан 2 April 2019 в 13:43
1 ответ

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

В идеале у вас будет, например, 192.168.1.0/24 в сети микроконтроллера и 192.168.2.0/24 в другом подключении. У вас может быть только одно подключение к данной сети. Если у вас есть веская причина поместить микроконтроллер в тот же диапазон IP-адресов, что и другая сеть, почему бы просто не подключить микроконтроллер к этой другой сети и забыть о втором интерфейсе?

Другим решением может быть размещение двух интерфейсов в мост, так что они фактически находятся в одной сети. Если микроконтроллер не генерирует огромные объемы данных (эффективно насыщая сетевой интерфейс), это не имеет реального преимущества перед простым использованием одного интерфейса.

2
ответ дан 5 December 2019 в 19:21

Теги

Похожие вопросы