Резюме
Значение MTU по умолчанию запрещает передачу данных для одной системы. Уменьшение его вручную снова включает передачу данных, но эта ручная настройка не нужна в соседней системе.
Задний план
У меня есть резервный сервер. У меня есть две системы Raspberry Pi в удаленных местах: одна в Великобритании и одна в Албании. Наряду с албанским Pi есть QNAP (файловый сервер на основе Linux). У меня есть IPSec VPN из Албании в сеть Backups Server и еще одна IPSec VPN из Великобритании в сеть Backups Server. Все использует IPv4. Эта схема может помочь:
|--Албания Пи
|<--IPSec-->|--Маршрутизатор--|--Албания QNAP
Центральный | | |--Другие системы
Резервные копии--|--Роутер--|
Сервер | | |
|<--IPSec-->|--Маршрутизатор--|--UK Pi
|--Другие системы
И системы Pi, и сервер резервных копий имеют nftables без каких-либо правил и с политикой по умолчанию ACCEPT.
Две системы RPi, QNAP и Backups Server имеют MTU проводной сети Ethernet по умолчанию, равный 1500, как и следовало ожидать.
MTU маршрутизатора на стороне WAN для Албании составляет 1442, а для Великобритании — 1500. Согласно параметру Path MTU Discovery, эти значения верны. Для брандмауэра, управляющего сетью, содержащей Сервер резервных копий, это 1500, и это тоже верно.
Проблема
- Если я передам блок данных с Pi в Великобритании на сервер резервного копирования, он отлично работает.
- Если я переношу блок данных из QNAP в Албании на сервер резервного копирования, он работает нормально
- Если я попытаюсь передать блок данных с Pi в Албании на сервер резервного копирования, это не удастся
- Если я уменьшу MTU Pi до 1374, передача пройдет успешно.
Дополнительная информация
Вот пример того, что работает/не работает
# На албанском Пи
dd bs=1M count=100 if=/dev/urandom >100M.dat
# На сервере резервных копий
ssh albanian_pi cat 100M.dat | pv >100M.dat
# Настройки MTU на албанском Pi
ifconfig eth0 mtu 1500 # По умолчанию до того, как я начал возиться
ifconfig eth0 mtu 1374 # Максимальное значение, разрешающее поток данных
Раньше перенос работал, но это было до перехода с Stretch на Buster. Я не вижу проблем с большинством других систем Pi, которые у меня есть, и, в частности, не с британской Pi, о которой я упоминал в начале, на которой теперь также работает Buster.
Никто в албанском офисе не жалуется на проблемы с сетью.
Я намеренно не установил бит «Не фрагментировать» для пакетов между албанским Pi и сервером резервного копирования. Я не намеренно блокирую PMTU Discovery.
Обобщить:
- Албанский QNAP -> Сервер резервных копий: все хорошо
- Албанский Pi -> Сервер резервных копий: сбой без уменьшения MTU
- UK Pi -> Сервер резервных копий: все хорошо
У меня есть обходной путь, но мне не нужно уменьшать MTU на отдельных системах.
Вопрос
Что на самом деле не так, и как я могу дополнительно диагностировать и устранить причину проблемы?
Предложения с благодарностью приняты. Спасибо