Что может вызвать то, что пакеты, покидающие интерфейс, имеют исходный IP-адрес другой сетевой карты в Ubuntu 24?

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

Допустим, у меня есть сервер с двумя сетевыми картами.

eno1: 192.168.1.100/24 
eno2: 169.254.2.1/16

Трафик на/с NIC 1 не вызывает проблем. Я могу получить доступ по SSH, отправить ping и т.д. … Проблем нет.

Однако после выполнения netplan generate && netplan apply на Ubuntu 24, или даже после выполнения ifconfig eno2 169.254.2.1 netmask 255.255.0.0 up, когда я запускаю tcpdump -i eno2, я вижу IP-адрес с eno1, выходящий через eno2, вместо адреса .2.1

До:

22:39:41.937488 aa:bb:cc:dd:ee:ff > 00:11:22:33:44:55, ethertype IPv4 (0x0800), length 98: 169.254.2.1 > 169.254.2.2: ICMP echo request, id 27057, seq 1, length 64
22:39:41.938469 00:11:22:33:44:55 > aa:bb:cc:dd:ee:ff, ethertype IPv4 (0x0800), length 98: 169.254.2.2 > 169.254.2.1: ICMP echo reply, id 27057, seq 1, length 64
22:39:42.937626 aa:bb:cc:dd:ee:ff > 00:11:22:33:44:55, ethertype IPv4 (0x0800), length 98: 169.254.2.1 > 169.254.2.2: ICMP echo request, id 27057, seq 2, length 64
22:39:42.938563 00:11:22:33:44:55 > aa:bb:cc:dd:ee:ff, ethertype IPv4 (0x0800), length 98: 169.254.2.2 > 169.254.2.1: ICMP echo reply, id 27057, seq 2, length 64
22:39:43.964645 aa:bb:cc:dd:ee:ff > 00:11:22:33:44:55, ethertype IPv4 (0x0800), length 98: 169.254.2.1 > 169.254.2.2: ICMP echo request, id 27057, seq 3, length 64
22:39:43.965546 aa:bb:cc:dd:ee:ff > 00:11:22:33:44:55, ethertype IPv4 (0x0800), length 98: 169.254.2.2 > 169.254.2.1: ICMP echo reply, id 27057, seq 3, length 64

После:

22:43:37.872518 aa:bb:cc:dd:ee:ff > 00:11:22:33:44:55, ethertype IPv4 (0x0800), length 98: 192.168.1.100 > 169.254.2.2: ICMP echo request, id 29192, seq 1, length 64
22:43:38.908604 aa:bb:cc:dd:ee:ff > 00:11:22:33:44:55, ethertype IPv4 (0x0800), length 98: 192.168.1.100 > 169.254.2.2: ICMP echo request, id 29192, seq 2, length 64
22:43:39.932634 aa:bb:cc:dd:ee:ff > 00:11:22:33:44:55, ethertype IPv4 (0x0800), length 98: 192.168.1.100 > 169.254.2.2: ICMP echo request, id 29192, seq 3, length 64

Существует небольшая вероятность, что после выполнения ifconfig down и ifconfig up это может вдруг заработать снова, но я не могу найти причину. Нет маршрутизатора, это чисто eno2, разговаривающее с другим устройством, непосредственно к нему подключенным, и это не связано с маршрутом по умолчанию, так как я вижу, что трафик выходит через eno2, а не eno1.

Статус netplan не показывает адрес 192.x на 2-й сетевой карте, и когда я соединяю 2 машины, одну с Ubuntu 24 и одну с Ubuntu 20, машина с Ubuntu 20 не имеет проблем с ping’ованием машины с Ubuntu 24, но машина с Ubuntu 24 показывает свой адрес eno1 в исходящих пакетах, вместо адреса eno2. Обе машины имеют отключенный UFW и сброшенные iptables.

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

Проблема: Исходящие пакеты с неправильным IP-адресом на Ubuntu 24

Итак, мы сталкиваемся с проблемой, когда исходящие пакеты из интерфейса eno2 сервера с двумя сетевыми карточками (NIC) имеют адрес источника, соответствующий интерфейсу eno1, а не ожидаемому адресу 169.254.2.1. Это поведение наблюдается после применения конфигураций с помощью netplan или ручной настройки с использованием команды ifconfig. Рассмотрим возможные причины возникновения этой проблемы.

1. Неправильная маршрутизация

При наличии нескольких сетевых интерфейсов важно понять, как работает маршрутизация. В Ubuntu для маршрутизации пакетов используется таблица маршрутизации. Если маршруты настроены неправильно, система может отправлять пакеты с использованием IP-адреса неправильного интерфейса. Для проверки маршрутов выполните команду:

ip route show

Убедитесь, что у вас корректно настроены маршруты на eno2. Пакеты для адреса в диапазоне 169.254.0.0/16 должны направляться через eno2.

2. Политики выбора интерфейса

Наиболее вероятной причиной может быть то, что система выбирает, какой интерфейс использовать на основе правил. В Linux это контролируется через policy routing, где можно настроить правила управления трафиком, позволяющие определять, какой интерфейс использовать в зависимости от источника или назначения трафика. Если есть установка политик, которые перенаправляют трафик, это может приводить к исходящим пакетам с неправильным IP-адресом. Проверьте существующие правила с помощью команды:

ip rule show

3. Настройки Netplan

Конфигурация в netplan может быть неправильно настроена. Обратите внимание на то, что Netplan создает конфигурации, которые могут переопределять настройки, если они конфликтуют. Убедитесь, что конфигурация для eno2 определена верно и не содержит пересекающихся параметров, особенно в отношении маршрутов и DHCP. Проверьте файл конфигурации в /etc/netplan/ и убедитесь, что он выглядит следующим образом для eno2:

network:
  version: 2
  ethernets:
    eno1:
      addresses:
        - 192.168.1.100/24
    eno2:
      addresses:
        - 169.254.2.1/16

После внесения изменений выполните netplan apply и проверьте результаты.

4. Программное обеспечение брандмауэра или приложение

Хотя вы указали, что UFW отключен и iptables сброшены, убедитесь, что в системе нет других механизмов фильтрации или контроля, включая nftables, которые могли бы влиять на маршрутизацию пакетов. Выполните следующие команды для проверки:

nft list ruleset

5. Перезапуск интерфейсов

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

sudo ifconfig eno2 down
sudo ifconfig eno2 up

или балайте следующее:

sudo ip link set eno2 down
sudo ip link set eno2 up

Заключение

Таким образом, чтобы диагностировать и устранить проблему с ненадлежащим источником IP-адреса в Ubuntu 24, нужно проверять маршрутизацию, настройки Netplan, возможные политики маршрутизации, правила брандмауэра и состояние сетевых интерфейсов. Эти шаги помогут выявить причину проблемы и избавиться от некорректного поведения, связанного с выходящими пакетами. Убедитесь в правильности каждой настройки, приводящей к ожидаемому исходящему IP-адресу для диагноза сетевой конфигурации.

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

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