Firewalld ограничивает максимальную скорость скачивания.

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

Я настроил маршрутизатор на Linux с процессором Celeron J1900, установил Arch Linux и firewalld. Подключение к провайдеру осуществляется через PPPoE.
Firewalld ограничивает максимальную скорость загрузки, в то время как скорость загрузки выглядит хорошо:

тест скорости с firewalld и без него

Когда я останавливаю firewalld с помощью systemctl и повторно провожу тест, все выглядит хорошо.
Даже для целей тестирования я не установил никаких зон и политик, поэтому конфигурация firewalld проста.

/etc/firewalld/firewalld.conf  

DefaultZone=drop  
CleanupOnExit=yes  
CleanupModulesOnExit=no  
IPv6_rpfilter=strict  
IndividualCalls=no
LogDenied=all
FirewallBackend=nftables
FlushAllOnReload=yes
ReloadPolicy=INPUT:DROP,FORWARD:DROP,OUTPUT:DROP
RFC3964_IPv4=yes
NftablesFlowtable=enp4s0 enp5s0 enp6s0
NftablesCounters=no
NftablesTableOwner=yes
/etc/firewalld/direct.xml  

<?xml version="1.0" encoding="utf-8"?>
<direct>
  <passthrough ipv="ipv4">-t mangle -I FORWARD -p tcp --syn -j TCPMSS --clamp-mss-to-pmtu</passthrough>
  <passthrough ipv="ipv6">-t mangle -I FORWARD -p tcp --syn -j TCPMSS --clamp-mss-to-pmtu</passthrough>
</direct>

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

/etc/systemd/network/enp4s0.network (LAN)  

[Match]
Name=enp4s0

[Network]
Address=192.168.1.1/28
Address=192.168.2.1/28
LinkLocalAddressing=ipv6
IPv6LinkLocalAddressGenerationMode=stable-privacy


/etc/systemd/network/enp6s0 (WAN)

[Match]
Name=enp6s0

[Network]
ConfigureWithoutCarrier=yes
VLAN=pppoe-vlan


/etc/systemd/network/pppoe-vlan.netdev

[NetDev]
Name=pppoe-vlan
Kind=vlan

[VLAN]
Id=6

И конфигурация ppp:

/etc/ppp/peers/kpn

linkname "pppoe"
updetach
plugin pppoe.so
nic-pppoe-vlan
noauth
defaultroute
defaultroute6
maxfail "5"
#usepeerdns
"persist"
+ipv6
user "*"
password "*"

Это очень простая настройка, поэтому у меня нет идей, почему firewalld вызывает эту проблему.
Буду признателен за любые предложения.

С уважением.

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

Введение

Вопрос о снижении максимальной скорости загрузки при использовании firewalld на вашем маршрутизаторе с Arch Linux и PPPoE-соединением является актуальной проблемой для многих администраторов. На первый взгляд, кажется, что конфигурация маршрутизатора достаточно проста, однако есть множество факторов, которые могут влиять на производительность соединения. Давайте разберем, что может вызывать данную проблему и какие шаги можно предпринять для её решения.

Анализ конфигурации

Ваш файл конфигурации firewalld стоит рассмотреть более детально. Вы указали, что DefaultZone настроен на drop, и это выставляет правила блокировки по умолчанию для всех пакетов. Также надо обратить внимание на следующее:

  1. Правила в direct.xml: Параметр TCPMSS --clamp-mss-to-pmtu может влиять на управление MTU (Maximum Transmission Unit) в вашем соединении. Ключевые моменты:

    • Отсутствие корректного управления MTU может привести к фрагментации пакетов, что, в свою очередь, может негативно повлиять на скорость загрузки.
    • Убедитесь, что параметр clamp-mss-to-pmtu правильно применим для вашего сетевого окружения.
  2. Конфигурация зон: Хотя вы не установили сложные правила, основное значение имеет выбор зоны по умолчанию. Рекомендуется установить зону на public или home, если это уместно для вашего окружения. Это может устранить ненужные блокировки.

Проверка MTU и MSS

При наличии проблемы с производительностью важно проверить следующие параметры:

  • MTU и MSS: Подберите оптимальное значение для MTU. В большинстве случаев для PPPoE стоит 1492, но может потребоваться корректировка. Также проверьте MSS, который не должен превышать MTU-40, чтобы избежать фрагментации.
ip a   # Проверка MTU

Логи и отладка

  • Включение логирования: Вы уже включили логирование отклоненных пакетов (LogDenied=all), что позволит вам увидеть, какие пакеты блокируются и где могут возникать проблемы.

  • Тестирование без firewalld: Как вы уже сделали, остановите firewalld и проверьте скорость. Это подтверждает, что проблема кроется именно в правилах firewalld.

Оптимизация и изменения

  1. Переключение на nftables: Если возможно, попробуйте изменить бэкенд на iptables, чтобы выяснить, улучшится ли ситуация с производительностью.

  2. Добавление исключений: Для протоколов, которые вы используете чаще всего, можно настроить исключения в правилах firewalld.

  3. Снижение сложности: Только настройте firewalld на базовые правила (разрешите необходимые порты). Убедитесь пройтись по более упрощенной конфигурации, чтобы увидеть, какие изменения могут помочь.

Заключение

Некоторое снижение производительности, как оно наблюдается при использовании firewalld, может быть решено путем пересмотра конфигурации MTU, оптимизации настроек зон и исключений и анализа логов. Если несмотря на все попытки проблема останется, рекомендуется рассмотреть использование альтернативных решений, таких как iptables, или детально проанализировать дополнительные факторы, влияющие на маршрутизацию. Обязательно тестируйте каждое изменение, чтобы идентифицировать, какое из них действительно помогает улучшить ситуацию.

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

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