Невозможно передать данные из одной конкретной системы (проблема MTU?)

Невозможно передать данные из одной конкретной системы (проблема MTU?)

Краткое содержание

Значение MTU по умолчанию предотвращает передачу данных для одной системы. Уменьшение его вручную снова включает передачу данных, но эта ручная настройка не нужна для смежной системы.

Фон

У меня есть Backups Server. У меня есть две системы Raspberry Pi в удаленных местах: одна в Великобритании и одна в Албании. Рядом с албанским Pi находится QNAP (файловый сервер на базе Linux). У меня есть IPSec VPN из Албании в сеть Backups Server и еще один IPSec VPN из Великобритании в сеть Backups Server. Все использует IPv4. Эта схема может помочь:

                                           |--Albania Pi
                    |<--IPSec-->|--Router--|--Albania QNAP
Central  |          |                      |--Other systems
Backups--|--Router--|
Server   |          |                      |
                    |<--IPSec-->|--Router--|--UK Pi
                                           |--Other systems

И Pi-системы, и сервер резервного копирования имеют таблицы nftables без каких-либо правил и с политикой по умолчанию ACCEPT.

Как и ожидалось, обе системы RPi, QNAP и сервер резервного копирования имеют стандартный размер MTU для проводного Ethernet, равный 1500.

WAN-side MTU маршрутизатора для Албании составляет 1442, а для Великобритании — 1500. Согласно опции Path MTU Discovery маршрутизатора, эти значения верны. Для брандмауэра, управляющего сетью, содержащей Backups Server, это значение равно 1500, и оно также верно.

Проблема

  • Если я переношу блок данных с Pi в Великобритании на сервер резервного копирования, все работает нормально.
  • Если я переношу блок данных с QNAP в Албании на сервер резервного копирования, то все работает нормально.
  • Если я попытаюсь перенести блок данных с Pi в Албании на сервер резервного копирования, произойдет сбой
  • Если я уменьшу MTU Pi до 1374, передача пройдет успешно.

Больше информации

Вот пример того, что работает/не работает.

# On the Albanian Pi
dd bs=1M count=100 if=/dev/urandom >100M.dat

# On the Backups Server
ssh albanian_pi cat 100M.dat | pv >100M.dat

# MTU adjustments on Albanian Pi
ifconfig eth0 mtu 1500    # Default before I started fiddling
ifconfig eth0 mtu 1374    # Highest value that permits data flow

Раньше перенос работал, но это было до обновления со Stretch на Buster. Я не вижу проблем с большинством других систем Pi, которые у меня есть, и в частности с UK Pi, о котором я упоминал в начале, на котором теперь также работает Buster.

Никто в албанском офисе не жалуется на проблемы с сетью.

Я сознательно не установил бит "Do Not Fragment" для пакетов между албанским Pi и сервером резервного копирования. Я сознательно не установил ничего, что блокировало бы обнаружение PMTU.

Обобщить:

  • Албанский QNAP -> Резервный сервер: все хорошо
  • Албанский Pi -> Резервный сервер: сбой без уменьшения MTU
  • UK Pi -> Резервный сервер: все хорошо

У меня есть обходной путь, но мне не придется уменьшать MTU на отдельных системах.

Вопрос

Что на самом деле не так и как я могу более подробно диагностировать и устранить причину проблемы?

Предложения с благодарностью приняты. Спасибо

решение1

Это выглядит какПуть обнаружения MTUнарушена связь между системами "Albania Pi" и "Central Backups Server". Это часто является результатом ошибочной блокировки пакетов ICMP в маршрутизаторах, брандмауэрах или iptablesнастройках задействованных систем.

В вашем случае, поскольку система "Albania QNAP" работает нормально, главным подозреваемым является система "Albania Pi". Проверьте конфигурацию этой системы, в частности любые iptablesнастройки и настройки сети, связанные с ICMP и PMTUD.

Связанный контент