指定 rsync 源端口

指定 rsync 源端口

我意识到 rsync 使用端口 22 作为其目标端口(因为我使用 -e SSH 加密我的通道),但正如我所料,源端口似乎是一个远高于 1000 的随机编号端口。我不想使用标志对其进行速率限制,--bwlimit=LIMIT而是指定连接建立的本地传输端口。然后使用我的路由器,自动降低具有该 SRC 端口的所有数据包的传输优先级。希望在传输过程中不会减慢我在其他端口上的正常网络活动。

我已经知道如何在路由器上设置 QoS,我只需要知道如何强制 Rsync 的源端口。我已经知道该--port=PORT选项,但它设置的是 DST 端口,而不是数据包上的 SRC 端口……我想真正的问题是:有没有办法只为 rsync 指定源端口,而不是为所有 ssh 连接指定源端口。有人有什么想法吗?

答案1

您不能直接这样做,但是...

可能的解决方案和替代想法:

  • QoSDSCP 类或 IPv4服务类型. 最新版本的远程控制客户端有一个选项IPQoS。您可以专门为同步或对所有非交互式会话全局启用该功能。(旧版远程控制版本将其硬编码为“低延迟”(交互式)和“吞吐量”(非交互式)。)

  • 远程控制 ProxyCommand选项,使用netcatsocat创建 TCP 连接。例如,的代理命令socat tcp:%h:%p,bind=192.168.0.1:4242 stdio将始终从指定的地址:端口对进行连接。这是对您的问题(“指定 rsync 源端口”)最接近的答案,但可能不是 QoS 的最佳解决方案。

  • 通过 IP 地址实现 QoS。您可以为计算机分配第二个 IP 地址,并告诉同步使用它进行转账(远程控制选项BindAddress)。虽然这是一个混乱的黑客攻击,但可以应用于所有程序。


全部远程控制可以指定上面列出的选项:

  • 通过同步-e "ssh -oIPQoS=cs2"

  • 通过中定义的别名~/.ssh/config

    Host myserver-qos
        Hostname myserver
        IPQoS cs2
    
    $ rsync /path myserver-qos:/path
    

相关内容