几天来,我一直在尝试taskd
在我的计算机(Arch Linux)上安装一个服务器。我现在面临的问题是taskd
配置文档(https://taskwarrior.org/docs/taskserver/troubleshooting-sync.html) 表示我必须使用 的输出hostname -f
作为地址(我不知道“CN”缩写是什么)。我也尝试使用以 开头的本地 IP 地址,192.168
但这给了我握手错误,您可以在我链接的故障排除指南中找到。
我开始进行一些调查,因为我无法从其他机器访问我的任务服务器。我发现了这一点:
当我监听我使用的端口时,让它为54000
,使用nc -l -p 54000
,我可以看到这是的输出ss -lntu | grep 54000
:
tcp LISTEN 0 10 0.0.0.0:54000 0.0.0.0:*
而当我启动taskd
侦听同一端口的程序时,它ss
给出的信息为:
tcp LISTEN 0 4 127.0.0.1:54000 0.0.0.0:*
现在,我尝试在另一台机器上检查端口,同时使用nc -vv 192.168.x.y 54000
(服务器的 IP 地址)进行监听,我发现当本地地址为 时0.0.0.0
,端口显示为打开。否则,端口显示为关闭。我认为这是因为127.0.0.1
本质上是localhost
,而我从我的网络中看不到这一点?
taskd
还有一个带有服务器选项的配置文件,我按照文档的指示输入了 的输出hostname -f
,即。我想这就是翻译成 的意思,对吧?watermelon.localdomain
localhost
我将非常感谢您的帮助,提前谢谢!
更新日期 2018/04/21
server
我设法通过将配置中的变量设置为 来解决问题0.0.0.0:54000
,这样我就可以taskd
监听端口 上的任何地址54000
。现在一切都运行良好。我猜的文档taskd
对这个主题有点模糊。
答案1
套接字配置为侦听特定 IP 和端口。通常,套接字有两种主要配置,第三种配置不太常见,但很有用。
1)仅允许运行该服务的计算机进行通信
当您看到 时,就表示配置完成了127.0.0.1:54000
。仅有的主机可以访问此服务。您可以使用反向代理之类的东西来允许外部访问,但网络上的任何内容都不允许连接到它。
2)到服务器可访问的任何网络上的所有计算机
当您看到 时,即表示配置完成0.0.0.0:54000
。只要数据包能够到达,任何东西都可以与此服务对话。
3)服务器仅加入特定网络
当你看到 (或任何 IP)时,就配置好了192.168.0.2:54000
。这意味着仅有的这子网允许访问该网络。
如果你想允许网络上的其他机器连接你的服务,它需要绑定在0.0.0.0
本地IP上。