Вопрос или проблема
Я настроил маршрутизатор на Linux с процессором Celeron J1900, установил Arch Linux и firewalld. Подключение к провайдеру осуществляется через PPPoE.
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
, и это выставляет правила блокировки по умолчанию для всех пакетов. Также надо обратить внимание на следующее:
-
Правила в
direct.xml
: ПараметрTCPMSS --clamp-mss-to-pmtu
может влиять на управление MTU (Maximum Transmission Unit) в вашем соединении. Ключевые моменты:- Отсутствие корректного управления MTU может привести к фрагментации пакетов, что, в свою очередь, может негативно повлиять на скорость загрузки.
- Убедитесь, что параметр
clamp-mss-to-pmtu
правильно применим для вашего сетевого окружения.
-
Конфигурация зон: Хотя вы не установили сложные правила, основное значение имеет выбор зоны по умолчанию. Рекомендуется установить зону на
public
илиhome
, если это уместно для вашего окружения. Это может устранить ненужные блокировки.
Проверка MTU и MSS
При наличии проблемы с производительностью важно проверить следующие параметры:
- MTU и MSS: Подберите оптимальное значение для MTU. В большинстве случаев для PPPoE стоит 1492, но может потребоваться корректировка. Также проверьте MSS, который не должен превышать MTU-40, чтобы избежать фрагментации.
ip a # Проверка MTU
Логи и отладка
-
Включение логирования: Вы уже включили логирование отклоненных пакетов (
LogDenied=all
), что позволит вам увидеть, какие пакеты блокируются и где могут возникать проблемы. -
Тестирование без
firewalld
: Как вы уже сделали, остановитеfirewalld
и проверьте скорость. Это подтверждает, что проблема кроется именно в правилахfirewalld
.
Оптимизация и изменения
-
Переключение на
nftables
: Если возможно, попробуйте изменить бэкенд наiptables
, чтобы выяснить, улучшится ли ситуация с производительностью. -
Добавление исключений: Для протоколов, которые вы используете чаще всего, можно настроить исключения в правилах
firewalld
. -
Снижение сложности: Только настройте
firewalld
на базовые правила (разрешите необходимые порты). Убедитесь пройтись по более упрощенной конфигурации, чтобы увидеть, какие изменения могут помочь.
Заключение
Некоторое снижение производительности, как оно наблюдается при использовании firewalld
, может быть решено путем пересмотра конфигурации MTU, оптимизации настроек зон и исключений и анализа логов. Если несмотря на все попытки проблема останется, рекомендуется рассмотреть использование альтернативных решений, таких как iptables
, или детально проанализировать дополнительные факторы, влияющие на маршрутизацию. Обязательно тестируйте каждое изменение, чтобы идентифицировать, какое из них действительно помогает улучшить ситуацию.