更新日期 2018/04/21

更新日期 2018/04/21

几天来,我一直在尝试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.localdomainlocalhost

我将非常感谢您的帮助,提前谢谢!


更新日期 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上。

相关内容