如何验证远程服务器上的 rsync 守护进程是否正在接受连接

如何验证远程服务器上的 rsync 守护进程是否正在接受连接

我在 Android 手机上运行了一个 rsync 守护进程。我只想对手机上的 rsync 端口(配置为 1873)进行 netcat,以验证守护进程是否已启动并正在监听该端口,但奇怪的是 netcat 尝试被拒绝了。

Rsync 运行良好,它在手机和 Ubuntu 盒子之间同步文件,因此没有防火墙或任何其他网络问题阻碍流量。

Rsync 守护进程正在监听端口:

cepheus:/ $ netstat -ltnp 2> /dev/null | grep 1873
tcp        0      0 127.0.0.1:1873          0.0.0.0:*               LISTEN      2992/rsync

那么为什么连接被拒绝呢?

$ nc -zv 192.168.1.100 1873
nc: connect to 192.168.1.100 port 1873 (tcp) failed: Connection refused

下面的内容只是补充背景信息,希望不会混淆视听。我的预期是,如果 TCP 端口处于“监听”模式,则在没有防火墙/网络问题的情况下,netcat -zv 应该会成功。

rsync 守护进程通过 adb 启动,如下所示:

adb -s 192.168.1.100:5555 shell -t '/data/local/tmp/rsync --daemon --no-detach --config=/data/local/tmp/rsyncd.conf --log-file=/proc/self/fd/2'

并且我的 ubuntu 盒子上的本地端口 6010 在手机上被端口转发到 1873。

$ adb forward --list
192.168.1.100:5555 tcp:6010 tcp:1873

例如,对 adb 端口的检查工作正常。

$ nc -zv 192.168.1.100 5555
Connection to 192.168.1.100 5555 port [tcp/*] succeeded!

~
更新

$ nc -zv localhost 6010
nc: connect to localhost port 6010 (tcp) failed: Connection refused
Connection to localhost 6010 port [tcp/*] succeeded!

当将目标 IP 设置为 localhost 时,连接尝试确实成功,如守护进程日志中所述。问题是,当守护进程关闭且端口关闭时,nc 输出完全相同的两行。

尽管汤姆的回答确实有效,但我宁愿不让守护进程监听0.0.0.0

我尝试将源端口设置为本地 rsync 端口,但在使用 127.0.0.1 时只会导致绑定错误,或者在将其设置为 Ubuntu 框的内部 ip 地址时会导致连接被拒绝:

$ nc -zv 192.168.1.100 1873 -s 127.0.0.1 -p 6010
nc: bind failed: Address already in use

答案1

看起来它127.0.0.1只是在监听。您可能需要指定192.168.1.100(或0.0.0.0) 作为地址(在rsyncd.conf或使用命令行选项)。

相关内容