Как настроить таблицу маршрутизации iproute2 для 2 сетевых интерфейсов на Ubuntu 22.04

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

Я хочу использовать два сетевых интерфейса (enp7s0 и enp8s0) одновременно на Ubuntu 22.04. У каждого из них есть отдельное подключение к интернету. Мой основной интерфейс – enp8s0, в который я сначала подключил LAN-кабель. Я думаю, что мне нужно установить маршрутизирующую таблицу для этого.

Итак, я отредактировал

/etc/iproute2/rt_tables

следующим образом

1 rt2

ip route add 192.168.0.0/24 dev enp7s0 src 192.168.0.101 table rt2
ip route add default via 192.168.0.1 dev enp7s0 table rt2
ip rule add from 192.168.0.101/32 table rt2
ip rule add to 192.168.0.101/32 table rt2

вот мой ifconfig

enp7s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.101  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::9c8b:3fe5:795e:bd32  prefixlen 64  scopeid 0x20<link>
        ether d8:5e:d3:01:84:ed  txqueuelen 1000  (Ethernet)
        RX packets 19214  bytes 18384493 (18.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11885  bytes 1705118 (1.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xfc700000-fc71ffff  

enp8s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.16  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2403:6200:89a6:96ee:7aba:94ac:f7e5:421c  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::a09b:20eb:6e61:72b8  prefixlen 64  scopeid 0x20<link>
        inet6 2403:6200:89a6:96ee:33b5:37f2:4af1:bcbb  prefixlen 64  scopeid 0x0<global>
        ether d8:5e:d3:01:84:ee  txqueuelen 1000  (Ethernet)
        RX packets 4578155424  bytes 397941134593 (397.9 GB)
        RX errors 0  dropped 25613  overruns 0  frame 0
        TX packets 9865356056  bytes 14456549029829 (14.4 TB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

но когда я делаю

ip rule show

я получаю эту ошибку

База данных /etc/iproute2/rt_tables повреждена на ip route add 192.168.0.0/24 dev enp7s0 src 192.168.0.101 table rt2

0:  from all lookup local
32766:  from all lookup main
32767:  from all lookup default

Как я могу это исправить?

Может быть, я не настроил

/etc/network/interfaces

Согласно тому, что я нашел в гугле, я должен добавить эти строки

auto lo
iface lo inet loopback

allow-hotplug enp7s0
iface enp7s0 inet static
    address 192.168.0.101
    netmask 255.255.255.0
    gateway 192.168.0.1

allow-hotplug enp8s0
iface enp8s0 inet static
    address 192.168.1.16
    netmask 255.255.255.0

Но этого больше не существует на Ubuntu 22.04, я слышал, что они перешли на

/etc/netplan

но единственный файл, который я там нашел, это

01-network-manager-all.yaml

внутри которого только

# Позволить NetworkManager управлять всеми устройствами в этой системе
network:
  version: 2
  renderer: NetworkManager

Решено с помощью

sudo ip route add 192.168.0.0/24 dev enp7s0 src 192.168.0.101 table rt2
sudo ip route add default via 192.168.0.1 dev enp7s0 table rt2
sudo ip rule add from 192.168.0.101/32 table rt2
sudo ip rule add to 192.168.0.101/32 table rt2

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

Для настройки маршрутизации с помощью iproute2 для двух сетевых интерфейсов в Ubuntu 22.04, необходимо выполнить несколько шагов. Этот процесс включает в себя конфигурацию маршрутов и правил маршрутизации для каждого интерфейса, чтобы они могли эффективно работать одновременно. Рассмотрим все необходимые шаги для решения данной задачи.

1. Понимание конфигурации сети

У вас имеются два сетевых интерфейса: enp7s0 и enp8s0, каждый из которых подключен к своей сети с отдельными интернет-соединениями. Ваша цель — настроить интерфейс enp8s0 в качестве основного, а enp7s0 — как дополнительный, для маршрутизации трафика.

2. Настройка таблиц маршрутизации

Первым шагом является редактирование файла /etc/iproute2/rt_tables, чтобы добавить новую таблицу маршрутизации. В вашем случае вы уже добавили строку:

1 rt2

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

3. Настройка маршрутов

Для назначения маршрутов в вашу новую таблицу необходимо выполнить следующие команды:

sudo ip route add 192.168.0.0/24 dev enp7s0 src 192.168.0.101 table rt2
sudo ip route add default via 192.168.0.1 dev enp7s0 table rt2

Эти команды обозначают:

  • В первую очередь, мы определяем диапазон адресов, который будет использоваться на enp7s0.
  • Далее задается умолчательный маршрут для выхода в интернет через шлюз 192.168.0.1.

4. Настройка правил маршрутизации

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

sudo ip rule add from 192.168.0.101/32 table rt2
sudo ip rule add to 192.168.0.101/32 table rt2

Эти команды обеспечивают, что пакеты, отправляемые с IP-адреса 192.168.0.101 (интерфейс enp7s0), будут маршрутизироваться через таблицу rt2.

5. Проверка конфигурации

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

ip route show table rt2
ip rule show

Убедитесь, что вывод показывает добавленные вами маршруты и правила.

6. Настройка сетевых интерфейсов

С учетом того, что вы используете Ubuntu 22.04, рекомендуется использовать netplan для управления сетевыми интерфейсами. Если файл /etc/netplan/01-network-manager-all.yaml уже существует, добавьте конфигурацию для вашего сетевого интерфейса в этот файл. Он может выглядеть, например, следующим образом:

network:
  version: 2
  ethernets:
    enp7s0:
      dhcp4: no
      addresses: [192.168.0.101/24]
      gateway4: 192.168.0.1
    enp8s0:
      dhcp4: no
      addresses: [192.168.1.16/24]

После внесения изменений примените конфигурацию:

sudo netplan apply

7. Заключительные шаги

Важно убедиться, что маршрутизация работает так, как задумано. Проверьте соединение с Интернетом через оба интерфейса, а также удостоверьтесь, что в вашем случае не возникает конфликтов с маршрутами. Используйте команды ping и traceroute для тестирования соединений.

Заключение

Настройка маршрутизации с использованием iproute2 на Ubuntu 22.04 является гибким и мощным решением для работы с несколькими сетевыми интерфейсами. Убедитесь, что каждый шаг был выполнен корректно, чтобы избежать проблем с маршрутизацией. Если вы столкнетесь с какими-либо ошибками, используйте команду ip rule show для диагностики и исправления конфигурации.

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

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