我有一台服务器、一台笔记本电脑、一台台式机和一台连接到千兆交换机的家用级路由器。我的问题是服务器到网络的带宽有限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 服务器给出了相同的结果。这告诉我带宽的限制是对称。
我使用 IPv4 在笔记本电脑和台式机之间运行了 iperf,没有任何问题。这排除了交换机、链路或设备出现故障的可能性。
一切都指向服务器。我不记得在服务器上配置过任何流量整形。
服务器运行 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
我不认为这样一个简单的规则会导致如此糟糕的性能。我尝试禁用防火墙:
# systemctl stop firewalld
没有运气。我认为这排除了该问题是由 iptables 引起的可能性。
netstat -i
没有什么值得担忧的事情,物理链接很好。
我运行 libvirt,我知道它有能力控制 iptables。有一些虚拟网段,例如 192.168.122.0/24,由 libvirtd 进行 natted/routed/dhcp 服务/dnsmasq。我相信这些无关紧要,因为服务器的路由表是正确的。我还尝试过停止 libvirt 中的所有虚拟机和相关网络。但没成功。
我运行# iptables -L
这个程序,生成了一个包含 197 行的列表,规则是正确的。要到达“home”区域,传入数据包必须与 12 条规则进行比较。然后,将数据包与区域中定义的规则进行比较,“home”区域中有 6 条规则。没有过滤 OUTPUT 链的规则。我已经排除了 iptables。
我完全不知道下一步该尝试什么?
答案1
我现在已经解决了这个问题。
我删除了 NetworkManager 中的 eth0 连接:
# nmcli connection delete id eth0
然后创建了一个等效的替代品,现在一切都按预期工作。