Настройте два Ethernet-интерфейса на Ubuntu.

Вопрос или проблема

Я пытаюсь настроить два Ethernet-соединения на одном компьютере с Ubuntu, но все попытки, которые я предпринял, не позволяют мне включить оба Ethernet-соединения одновременно, и я не понимаю, почему. Чтобы лучше понять, что я хочу сделать, вот описание трех вовлеченных компьютеров, представленных на следующем изображении:

1

  • Компьютер A: мой личный компьютер (на Windows), который подключен к интернету
  • Компьютер B: компьютер на Ubuntu 22.04, подключенный через Ethernet к интернету и к компьютеру C
  • Компьютер C: сервер Ubuntu 22.04, который подключен только к компьютеру B через Ethernet

Я хочу получить доступ к компьютеру C с компьютера A по SSH.
Я уже настроил статические IP-адреса на компьютерах B и C:

  • На компьютере B: xx.yy.zz.101 для Ethernet-порта, связанного с Ethernet-портом компьютера C
  • На компьютере B: xx.yy.zz.100 для Ethernet-порта, подключенного к интернету
  • На компьютере C: xx.yy.zz.102 для Ethernet-порта, связанного с Ethernet-портом компьютера B

Таким образом, я должен иметь возможность сначала подключиться с компьютера A к компьютеру B с помощью команды:

ssh xx.yy.zz.100

а затем с компьютера B к C с помощью команды:

ssh xx.yy.zz.102

Тем не менее, я могу установить только одно из двух подключений (в зависимости от того, какое активно). Файл конфигурации netplan компьютера B выглядит так:

---
network:
  version: 2
  ethernets:
    enp35s0: # Соединение с компьютером C
      dhcp4: false
      addresses: [xx.yy.zz.101/24] # Необходима настройка статического IP
      gateway4: xx.yy.zz.1
    enp42s0: # Соединение с интернетом
      dhcp4: false
      addresses: [xx.yy.zz.100/24] # Необходима настройка статического IP
      gateway4: xx.yy.zz.1
      nameservers:
      - addresses: [a.b.c.d, e.f.g.h]

и команда “ip a” показывает:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group    default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp35s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:13:3b:0f:8f:36 brd ff:ff:ff:ff:ff:ff
    inet 10.102.100.101/24 brd 10.102.100.255 scope global enp35s0
       valid_lft forever preferred_lft forever
    inet6 fe80::213:3bff:fe0f:8f36/64 scope link 
       valid_lft forever preferred_lft forever
3: enp36s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:13:3b:0f:8f:37 brd ff:ff:ff:ff:ff:ff
4: enp42s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 2c:f0:5d:9a:e0:2c brd ff:ff:ff:ff:ff:ff
    inet 10.102.100.100/24 brd 10.102.100.255 scope global enp42s0
       valid_lft forever preferred_lft forever
    inet6 fe80::2ef0:5dff:fe9a:e02c/64 scope link 
       valid_lft forever preferred_lft forever

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

Я делаю это все время, и это прекрасно работает.

Ваша проблема в gateway4. У одного компьютера может быть не более одного шлюза для нормальной работы. В противном случае он не будет знать, куда отправлять трафик с “другими IP-адресами” (кроме прямой доступной локальной сети).

Так что закомментируйте или удалите второй gateway4. Оставьте только тот, который идет в интернет.

network:
  version: 2
  ethernets:
    enp35s0: # Соединение с компьютером C
      dhcp4: false
      addresses: [xx.yy.zz.101/24] # Необходима настройка статического IP
      #gateway4: xx.yy.zz.1 -- УДАЛИТЕ ЭТО
    enp42s0: # Соединение с интернетом
      dhcp4: false
      addresses: [xx.yy.zz.100/24] # Необходима настройка статического IP
      gateway4: xx.yy.zz.1
      nameservers:
      - addresses: [a.b.c.d, e.f.g.h]

Обратите внимание, что у вас будет настроен gateway4 на компьютере C. Вам просто не нужен он на компьютере B, потому что отправка трафика в C с B, когда он предназначен для интернета, не сработает.

Итак, вывод команды ip a показывает интерфейсы enp35s0 и enp36s0. Вы пытаетесь настроить enp35s0 и enp42s0. Дублирование использования gateway4 — это следующая проблема. Используйте gateway4 только один раз и используйте выделенные маршруты.

Спасибо за ваш ответ! Удаление шлюза для первого интерфейса И добавление строки “renderer: NetworkManager” на том же уровне отступа, что и “version: 2”, решает мою проблему.
Конфигурационный файл теперь выглядит так:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp35s0: # Соединение с компьютером C
      dhcp4: false
      addresses: [xx.yy.100.101/24] # Необходима настройка статического IP
    enp42s0: # Соединение с интернетом
      dhcp4: false
      addresses: [xx.yy.100.100/24] # Необходима настройка статического IP
      gateway4: xx.yy.100.1
      nameservers:
      - addresses: [a.b.c.d, e.f.g.h]

Теперь я могу подключаться с компьютера A к C через B. Тем не менее, очень странно, что теперь я могу получить доступ к B только по Wi-Fi, а не по Ethernet (время подключения истекло). Также я не могу пинговать компьютер B с A, если использую Ethernet-соединение.

Когда я сбрасываю сетевую конфигурацию компьютера B, я могу получить доступ как по Wi-Fi, так и по Ethernet, так что это связано с текущей конфигурацией netplan. Я пытался найти ответ, но у меня по-прежнему эта проблема. У вас есть идея?

IP-конфигурация моего ноутбука (компьютера A) выглядит так:

Беспроводная сеть Wi-Fi:

   Собственный DNS-суффикс соединения. . . : -------------
   Адрес IPv6 локальной связи. . . . .: -------------
   Адрес IPv4. . . . . . . . . . . . . .: xx.yy.80.204
   Маска подсети. . . . . . . . . . . . : 255.255.248.0
   Шлюз по умолчанию. . . . . . . . . : xx.yy.80.1

Ethernet-кабель Ethernet:

   Собственный DNS-суффикс соединения. . . : -------------
   Адрес IPv6 локальной связи. . . . .: -------------
   Адрес IPv4. . . . . . . . . . . . . .: xx.yy.100.27
   Маска подсети. . . . . . . . . . . . : 255.255.255.0
   Шлюз по умолчанию. . . . . . . . . : xx.yy.100.1

Ответ или решение

Чтобы настроить два Ethernet-интерфейса на Ubuntu 22.04 и обеспечить правильность их конфигурации, следуйте приведённым ниже шагам. Это позволит вам одновременно использовать оба соединения, одно из которых подключено к интернету, а другое – к другому компьютеру в локальной сети.

Шаг 1. Проверка конфигурации сетевых интерфейсов

Прежде чем вносить изменения, проверьте текущее состояние сетевых интерфейсов с помощью команды:

ip a

Убедитесь, что оба интерфейса (enp35s0 и enp42s0) отображаются корректно. Например:

  • enp35s0 – подключение к компьютеру C
  • enp42s0 – подключение к интернету

Шаг 2. Настройка файла netplan

Откройте файл конфигурации netplan, который обычно находится в /etc/netplan/. Для редактирования воспользуйтесь текстовым редактором, например:

sudo nano /etc/netplan/01-netcfg.yaml

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

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp35s0: # Подключение к компьютеру C
      dhcp4: false
      addresses: [xx.yy.zz.101/24]
    enp42s0: # Подключение к интернету
      dhcp4: false
      addresses: [xx.yy.zz.100/24]
      gateway4: xx.yy.zz.1
      nameservers:
        addresses: [a.b.c.d, e.f.g.h]

Объяснение конфигурации:

  1. renderer: NetworkManager: Добавление этой строки позволяет NetworkManager управлять сетевыми интерфейсами.
  2. **`,
    
    `gateway4`**: Указывайте только один шлюз на интерфейсе, который подключается к интернету. Другой интерфейс не должен иметь настроенный шлюз, чтобы избежать конфликтов.
  3. addresses: Убедитесь, что статические IP-адреса настроены корректно и соответствуют вашей схеме сети.

Шаг 3. Применение конфигурации

Сохраните изменения в файле и выйдите из редактора. Примените новую конфигурацию с помощью следующей команды:

sudo netplan apply

Шаг 4. Проверка соединений

Проверьте заново состояние сетевых интерфейсов:

ip a

Теперь оба интерфейса должны быть активны и не иметь конфликтов. Для проверки, сможете ли вы соединиться с компьютером C через SSH, выполните:

ssh xx.yy.zz.102

Шаг 5. Устранение проблем с подключениями

Если у вас возникают проблемы с подключением к интернету или другим компьютерам, проверьте следующее:

  1. Файрвол: Убедитесь, что настройки файрвола на компьютере B не блокируют входящие подключения. Используйте команды для управления ufw:

    sudo ufw allow from xx.yy.zz.204 to any port 22
  2. Настройка маршрутизации: Убедитесь, что маршруты настроены правильно. Выполните команду:

    ip route

    Должен выглядеть примерно так:

    default via xx.yy.zz.1 dev enp42s0
    xx.yy.zz.0/24 dev enp42s0 proto kernel scope link src xx.yy.zz.100
    xx.yy.zz.0/24 dev enp35s0 proto kernel scope link src xx.yy.zz.101
  3. Тестирование соединений: Проверьте, можете ли вы пинговать интерфейсы:

    ping -c 4 xx.yy.zz.100  # Пинг до интерфейса к интернету
    ping -c 4 xx.yy.zz.102  # Пинг до компьютера C

Заключение

Следуя данным инструкциям, вы сможете правильно настроить два Ethernet-интерфейса на Ubuntu 22.04 и обеспечить доступ к компьютеру C из сети. В случае возникновения дополнительных проблем, проверьте настройки интерфейсов и маршрутизации, а также убедитесь, что все подключения не блокируются сетевыми фильтрами.

Оцените материал
Добавить комментарий

Капча загружается...