3

Я пытался заставить работать сервер taskd на моем компьютере (Arch Linux) в течение нескольких дней. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что в документации по конфигурации taskd (https://taskwarrior.org/docs/taskserver/trou 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 ответ1

4

Сокеты настроены на прослушивание по конкретному 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-адресом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .