如何通过特定接口发送命令生成的所有流量?或者,对特定接口进行速度测试?

如何通过特定接口发送命令生成的所有流量?或者,对特定接口进行速度测试?

我正在编写一个脚本,它基本上使用 openvpn 客户端扫描 OpenVPN 服务器。我所说的扫描是指通过尝试连接、ping 时间和互联网速度来检查服务器是否接受连接。

默认情况下,当您连接到 OpenVPN 服务器时,所有流量都会发送到该服务器,除非您更改配置文件中的设置。由于扫描速度很慢,为了避免干扰用户的浏览等,我可以更改配置文件中的设置并使用“ping -I ”代替常规 ping。

但是测试网速是个问题。如果我不更改配置文件中的设置,并且所有流量都通过 VPN,我可以成功使用 speedtest-cli 命令来获取下载和上传速度。

但是,speedtest-cli 没有任何指定接口的选项。

是否有任何命令可以让我指定进行速度测试的接口?

此外,该脚本是用 python 编写的,所以我正在寻找 python 命令或终端命令来完成此操作。

另外,请注意,我正在寻找的是下载和上传速度,而不是 NIC 速度。

答案1

但是,speedtest-cli 没有任何指定接口的选项。

是的,使用--source指令

--source SOURCE 要绑定的源 IP 地址

speedtest-cli --source 10.1.1.3

应该可以解决问题。

答案2

对于最新的 CLI 版本,您需要使用以下-i标志:

speedtest -i 10.1.1.3

您还可以执行以下操作:

speedtest -I wlan0
speedtest -I wlan1
speedtest -I eth0
...

当前可用的标志是(根据man):

Speedtest by Ookla is the official command line client for testing the speed and performance of your internet connection.

Version: speedtest 1.2.0.84

Usage: speedtest [<options>]
  -h, --help                        Print usage information
  -V, --version                     Print version number
  -L, --servers                     List nearest servers
  -s, --server-id=#                 Specify a server from the server list using its id
  -I, --interface=ARG               Attempt to bind to the specified interface when connecting to servers
  -i, --ip=ARG                      Attempt to bind to the specified IP address when connecting to servers
  -o, --host=ARG                    Specify a server, from the server list, using its host's fully qualified domain name
  -p, --progress=yes|no             Enable or disable progress bar (Note: only available for 'human-readable'
                                    or 'json' and defaults to yes when interactive)
  -P, --precision=#                 Number of decimals to use (0-8, default=2)
  -f, --format=ARG                  Output format (see below for valid formats)
      --progress-update-interval=#  Progress update interval (100-1000 milliseconds)
  -u, --unit[=ARG]                  Output unit for displaying speeds (Note: this is only applicable
                                    for ‘human-readable’ output format and the default unit is Mbps)
  -a                                Shortcut for [-u auto-decimal-bits]
  -A                                Shortcut for [-u auto-decimal-bytes]
  -b                                Shortcut for [-u auto-binary-bits]
  -B                                Shortcut for [-u auto-binary-bytes]
      --selection-details           Show server selection details
      --ca-certificate=ARG          CA Certificate bundle path
  -v                                Logging verbosity. Specify multiple times for higher verbosity
      --output-header               Show output header for CSV and TSV formats

 Valid output formats: human-readable (default), csv, tsv, json, jsonl, json-pretty

 Machine readable formats (csv, tsv, json, jsonl, json-pretty) use bytes as the unit of measure with max precision

 Valid units for [-u] flag:
   Decimal prefix, bits per second:  bps, kbps, Mbps, Gbps
   Decimal prefix, bytes per second: B/s, kB/s, MB/s, GB/s
   Binary prefix, bits per second:   kibps, Mibps, Gibps
   Binary prefix, bytes per second:  kiB/s, MiB/s, GiB/s
   Auto-scaled prefix: auto-binary-bits, auto-binary-bytes, auto-decimal-bits, auto-decimal-bytes

相关内容