У меня есть сервер, ноутбук, настольный компьютер и домашний маршрутизатор, подключенный к гигабитному коммутатору. Моя проблема в том, что сервер имеет ограниченную пропускную способность для сети 192.168.1.0/24
. Эта проблема отсутствует при использовании локальных IPv6-адресов или когда клиент - например, ноутбук или настольный компьютер - подключается к серверу из Интернета.
Я исключил возможность того, что проблема была вызвана клиентом, поскольку все клиенты демонстрируют одинаковое поведение.
Моя настройка;
- имеет два сегмента сети,
192.168.1.0/24
и интернет - все мои устройства напрямую подключены к одному коммутатору
- все мои устройства имеют IP в диапазоне
192.168.1.0/24
- Интернет может быть достигнут через шлюз - маршрутизатор на
192.168.1.1
, NAT явно присутствует - нет IPv6, кроме локальных ссылок, которые автоматически настраиваются
- нет других устройств, таких как брандмауэр
Здесь я продемонстрирую свою проблему, запустив iperf на сервере в режиме клиента, используя флаг -c
.
[user@srv ~]$ iperf3 -c 192.168.1.115
Connecting to host 192.168.1.115, port 5201
[ 4] local 192.168.1.40 port 47062 connected to 192.168.1.115 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 853 KBytes 6.98 Mbits/sec 0 59.4 KBytes # Only 6,98 Mbits/sec!
...
[user@srv ~]$ iperf3 -c fe80::[redacted]%eth0
Connecting to host fe80::[redacted]%eth0, port 5201
[ 4] local fe80::[redacted] port 36236 connected to fe80::[redacted] port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 111 MBytes 929 Mbits/sec 0 225 KBytes
...
[user@srv ~]$
Пожалуйста, обратите внимание;
- как соединение с клиентом (в данном случае с сервером iperf) в сети
192.168.1.0/24
очень низкую пропускную способность. - как использование локальных адресов IPv6 не демонстрирует эту проблему.
- как ни один клиент IPv4, подключающийся из Интернета, не сталкивается с этой проблемой.
Сервер iperf, дает мне эквивалентные результаты. Это говорит мне о том, что ограничение пропускной способности, является симметричным.
Я запустил iperf между ноутбуком и рабочим столом, используя IPv4, без проблем. Это исключает вероятность ошибки коммутатора, каналов или устройств.
Все указывает на сервер. Я не могу вспомнить настройку какого-либо формирования трафика на нем.
На сервере работает CentOS 7, настольный компьютер Windows 10 и ноутбук Fedora 26.
Что примечательно в сети 192.168.1.0/24
это то, что брандмауэр серверов настроен так:
# firewall-cmd --zone=public --add-interface=eth0
# firewall-cmd --zone=home --add-source=192.168.1.0/24
Я не думаю, что такое простое правило может привести к таким ужасным результатам. Я попытался отключить firewalld:
# systemctl stop firewalld
Без удачи. Я думаю, что это исключает возможность того, что проблема вызвана iptables.
netstat -i
ничего не показывает, физические ссылки в порядке.
Я запускаю libvirt, я знаю, что он имеет возможность контролировать iptables. Существуют сегменты виртуальной сети, такие как 192.168.122.0/24, которые получают natted/routed/dhcp Обслуживается /dnsmasq'ed libvirtd. Я считаю, что это не имеет значения, так как таблица маршрутизации сервера верна. Я также попытался остановить все виртуальные машины и связанные с ними сети в libvirt. Без удачи.
Я запустил # iptables -L
создал список из 197 строк, правила были правильными. Чтобы достичь «домашней» зоны, входящий пакет должен сравниваться по 12 правилам. Затем пакет будет сопоставлен с правилами, определенными в зоне, в «домашней» зоне 6 правил. Нет правил, фильтрующих цепочку OUTPUT. Я исключил iptables.
Я понятия не имею, что мне делать дальше?