При прослушивании порта (сервера задач) локальный адрес должен быть `localhost` или`0.0.0.0`?

Я пытался сделать 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 и порту. Обычно есть две основные конфигурации, которые вы бы использовали для Socket, и третья, которая не столь распространена, но удобна.

1) Разрешить связь только с машины, на которой запущена служба

Это настраивается, когда вы видите 127.0.0.1:54000, Только хост-машина может получить доступ к этой услуге. Вы можете использовать что-то вроде обратного прокси, чтобы разрешить внешний доступ, но ничто в сети не сможет подключиться к нему.

2) На все машины в любой сети, доступные с сервера

Это настраивается, когда вы видите 0.0.0.0:54000, Это позволяет любому разговаривать с этой службой, пока пакеты могут добраться до нее.

3) Только к определенной сети, к которой подключен сервер

Это настраивается, когда вы видите 192.168.0.2:54000 (или любой другой IP). Это означает, что доступ разрешен ТОЛЬКО к этой подсети этой сети.

Если вы хотите разрешить подключение вашей службы к другим компьютерам в сети, ее необходимо 0.0.0.0 или локальный IP.

Другие вопросы по тегам