是否可以使用 iperf 在不同网络上的两台计算机之间检查带宽(即地理上分开)?我研究了很多,关于堆栈交换或任何其他网站教程的每个答案都只在使用私有 ip addr 的同一网络上讨论。
iperf.fr 有公共服务器,但我无法使用iperf -s
. 防火墙是否阻止服务器使用公共地址或 Internet 服务提供商不允许避免攻击?
对我来说,它不适用于任何操作系统,
在 linux 20.04 中,iperf -s
私有 ip 添加:192.xx.xx.xx
公共 ip 添加:223.xx.xx.xx 当我iperf -c <ip add>
从另一台 linux 机器调用时
如果公共 ip 添加:相同作为上层,
在不同的 ip add 上工作正常我收到
iperf3: error - unable to connect to server: Connection timed out
错误。
不同网络上两台计算机之间的 iperf
是的,这是可能的,只要...
- 两台涉及的计算机都运行 iperf,一台处于“服务器模式”,一台处于“客户端”模式。
- 可以在发起者->响应者的期望方向上建立“客户端”和“服务器”之间所需的 TCP(以及可选的 UDP)通信
对于 b),iPerf 1.7.x 和 2.0.x 默认使用端口 5001,iPerf3.xx 使用端口 5201。两个版本系列都允许使用-p
命令行参数修改/更改端口。
是的,当然,根据您的网络环境,某些端口可能会被防火墙阻止。您在“服务器”端设置的端口必须可以从“客户端”访问。
此外,您可能根本无法iperf3 -s -p <port>
在用作服务器的计算机上运行,因为在没有提升权限的情况下可能不允许在 LISTENING 模式下设置套接字 - 这需要询问您的系统管理员。
iPerf 和数据传输方向
根据测试场景(尤其是在测试 UDP 时),接收端会生成更有趣的输出。
由于“服务器”通常是接收器,因此通过 CLI 访问服务器端是有益的。--get-server-output
通过使用客户端的命令行选项,iPerf3 在这里提供了更多的舒适感。
请注意,与客户端/服务器环境中通常所做的相比,iPerf 的“服务器”和“客户端”概念有些颠倒:
- “客户端”通常是发送者并发起连接
- “服务器”通常是接收者并响应连接请求
但是:数据传输方向(即发送者和接收者角色)可以通过在客户端使用 -R 命令行开关来交换。
为什么常见问题解答中只有相同的子网?
我认为您在 Internet 上找到的大多数示例/指南都使用私有地址并发生在同一个子网中,因为这是新手 a)首先遇到的问题,b)大多数情况下只涉及发送者和接收者之间的网络组件的“切换”。如今,即使是简单的交换机也可以实现 1Gbps 的全线速,结果更有可能满足新手的期望。
一旦用户开始跨路由边界运行 iPerf,具有不同性能特征(转发速率、缓冲、负载共享)的一组完全不同的网络组件(路由器、防火墙、高延迟链路、有损链路)开始发挥作用,其中大部分这远远超出了 iPerf 新手用户自己的影响范围。出现的问题将更加复杂,找到答案将需要有关发送者和接收者之间使用的网络路径的知识,或者获取该知识的能力(扩展:询问网络管理员......)。
话虽如此,iPerf 可以成为衡量和基线网络功能和性能的绝佳工具,但要了解结果,您必须了解正在测试的网络拓扑。