Рейтинг:0

Не удается подключиться к открытому защищенному порту в Ubuntu

флаг tk

Я открыл порт 8443, на котором запускаю сервер Clickhouse. Я могу подключиться к SSH на 22-м порту, я также могу подключиться к 8443 через SSH-туннель, однако я не могу нормально подключиться к этому хосту. Я пытаюсь подключиться с компьютера с Windows, если это как-то связано. Я даже открыл исходящий порт (почти уверен, что он лишний).

Я попытался отключить брандмауэр, и тогда я смог подключиться. Что может быть не так?

user@myhost:~/d/clickhouse$ статус sudo ufw
К действию от
-- ------ ----
22/tcp РАЗРЕШИТЬ ВСЕГДА                  
9440/tcp РАЗРЕШИТЬ Везде                  
8443/tcp РАЗРЕШИТЬ Везде                  
8443 РАЗРЕШИТЬ ВСЕГДА                  
22/tcp (v6) РАЗРЕШИТЬ везде (v6)             
9440/tcp (v6) РАЗРЕШИТЬ везде (v6)             
8443 (v6) РАЗРЕШИТЬ ВСЕГДА (v6)             
8443/tcp (v6) РАЗРЕШИТЬ везде (v6)

user@myhost:~/d/clickhouse$ sudo lsof -iTCP -sTCP:LISTEN -P
КОМАНДА PID ПОЛЬЗОВАТЕЛЬ ТИП FD УСТРОЙСТВО РАЗМЕР/ВЫКЛ НАЗВАНИЕ УЗЛА
systemd-r 841 systemd-resolve 13u IPv4 26021 0t0 TCP localhost: 53 (СЛУШАТЬ)
vsftpd 901 root 3u IPv6 26299 0t0 TCP *:21 (СЛУШАТЬ)
sshd 1037 root 3u IPv4 29181 0t0 TCP *:22 (СЛУШАТЬ)
sshd 1037 root 4u IPv6 29183 0t0 TCP *:22 (СЛУШАТЬ)
docker-pr 86081 root 4u IPv6 520074 0t0 TCP *:8088 (СЛУШАТЬ)
docker-pr 287023 root 4u IPv6 1831110 0t0 TCP *:8086 (СЛУШАТЬ)
docker-pr 318522 root 4u IPv6 2109586 0t0 TCP *:9440 (СЛУШАТЬ)
docker-pr 318537 root 4u IPv6 2110806 0t0 TCP *:8443 (СЛУШАТЬ)
узел 354955 пользователь 18u IPv4 2274703 0t0 TCP localhost:34575 (СЛУШАТЬ)

user@myhost:~/d/clickhouse$ netstat -an | grep "СЛУШАТЬ"
TCP 0 0 127.0.0.53:53 0.0.0.0:* ПРОСЛУШИВАТЬ     
TCP 0 0 0.0.0.0:22 0.0.0.0:* ПРОСЛУШИВАТЬ     
TCP 0 0 127.0.0.1:34575 0.0.0.0:* ПРОСЛУШИВАТЬ     
tcp6 0 0 :::21 :::* ПРОСЛУШАТЬ     
tcp6 0 0 :::8086 :::* ПРОСЛУШАТЬ     
tcp6 0 0 :::22 :::* СЛУШАТЬ     
tcp6 0 0 :::8088 :::* ПРОСЛУШАТЬ     
tcp6 0 0 :::8443 :::* ПРОСЛУШАТЬ     
tcp6 0 0 :::9440 :::* ПРОСЛУШАТЬ 

ОБНОВИТЬ:

на сервере я запускал sudo tcpdump -ni eth0 порт 8443 а затем на клиентской машине я запустил нк-зв 192.168.1.58 8443:

user@myhost:~$ sudo tcpdump -ni eth0 порт 8443
tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивание на eth0, тип канала EN10MB (Ethernet), размер захвата 262144 байт
15:05:51.368952 IP 192.168.1.70.59364 > 192.168.1.58.8443: флаги [S], seq 2263747478, win 64240, параметры [mss 1460,sackOK,TS val 1434934937 ecr 0,nop,wscale 7], длина 0
15:05:52.380268 IP 192.168.1.70.59364 > 192.168.1.58.8443: флаги [S], seq 2263747478, win 64240, параметры [mss 1460,sackOK,TS val 1434935948 ecr 0,nop,wscale 7], длина 0
15:05:54.460280 IP 192.168.1.70.59364 > 192.168.1.58.8443: флаги [S], seq 2263747478, win 64240, параметры [mss 1460,sackOK,TS val 1434938028 ecr 0,nop,wscale 7], длина 0
15:05:58.540705 IP 192.168.1.70.59364 > 192.168.1.58.8443: флаги [S], seq 2263747478, win 64240, параметры [mss 1460,sackOK,TS val 1434942109 ecr 0,nop,wscale 7], длина 0
15:06:06.940802 IP 192.168.1.70.59364 > 192.168.1.58.8443: флаги [S], seq 2263747478, win 64240, параметры [mss 1460,sackOK,TS val 1434950509 ecr 0,nop,wscale 7], длина 0
15:06:23.581056 IP 192.168.1.70.59364 > 192.168.1.58.8443: флаги [S], seq 2263747478, win 64240, параметры [mss 1460,sackOK,TS val 1434967149 ecr 0,nop,wscale 7], длина 0
15:06:56.221198 IP 192.168.1.70.59364 > 192.168.1.58.8443: флаги [S], seq 2263747478, win 64240, параметры [mss 1460,sackOK,TS val 1434999788 ecr 0,nop,wscale 7], длина 0

и нк не удалось с сообщением nc: не удалось подключиться к порту 8443 192.168.1.58 (tcp): время ожидания подключения истекло

Результат подробный статус sudo ufw

user@myhost:~$ подробный статус sudo ufw
Статус: активен
Ведение журнала: включено (низкий уровень)
По умолчанию: запрещать (входящие), разрешать (исходящие), запрещать (маршрутизируемые)
Новые профили: пропустить

К действию от
-- ------ ----
22/tcp РАЗРЕШИТЬ ВХОД ВСЕГДА                  
9440/tcp РАЗРЕШИТЬ ВХОД В любом месте                  
8443/tcp РАЗРЕШИТЬ ВХОД В любом месте                  
8443 РАЗРЕШИТЬ ВХОД ВСЕГДА                  
22/tcp (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)             
9440/tcp (v6) РАЗРЕШИТЬ ВХОД В любом месте (v6)             
8443 (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)             
8443/tcp (v6) РАЗРЕШИТЬ ВХОД В любом месте (v6)  

Я могу подключиться к сервису, если брандмауэр отключен:

нк-зв 192.168.1.58 8443 
Подключение к порту 192.168.1.58 8443 [tcp/*] выполнено успешно!

Я могу подключиться к сервису с IPv4-адресом, если брандмауэр отключен: введите описание изображения здесь

Wayne Vosberg avatar
флаг bd
На первый взгляд кажется, что вы открыли 8443 (ufw) на IPv4, но он прослушивает только IPv6 (вывод lsof/netstat). Попробуйте `sudo ufw disable` и посмотрите, сработает ли это.
Wayne Vosberg avatar
флаг bd
просто для ясности, `ufw disabled` предназначен только для быстрого теста. Если это работает, выполните «sudo ufw enable» и откройте 8443 также на IPv6 (что-то вроде «sudo ufw allow from any to any port 8443»
Dmitrij Kultasev avatar
флаг tk
@WayneVosberg это работало с отключенным брандмауэром. После этого я выполнил вашу команду и до сих пор не могу подключиться. Я обновил вопрос новыми результатами для netstat/lsof
Dmitrij Kultasev avatar
флаг tk
Я также попытался запустить «sudo ufw allow proto tcp с любого на любой порт 8443». Также обновлена ​​часть `ufw status`
raj avatar
флаг cn
raj
Ваши выходные данные `netstat` показывают, что какая-то служба прослушивает порт 8443 **только на IPv6-адресе**. Ничего вообще не прослушивает порт 8443 по адресу IPv4. Это не имеет ничего общего с брандмауэром, а с самой конфигурацией службы. Почему-то служба привязывается только к IPv6-адресу. Вы должны проверить конфигурацию.
Dmitrij Kultasev avatar
флаг tk
@raj, тогда как я могу подключиться к нему, указав адрес IPv4, когда брандмауэр отключен? (добавлен скриншот)
raj avatar
флаг cn
raj
Я могу только догадываться - на вашем сервере настроено что-то, что перенаправляет соединения с IPv4 на IPv6? Я вижу, что ваша служба работает в контейнере Docker, тогда это «что-то» может находиться где-то на уровне Docker, между вашей хост-ОС и самой службой. И, возможно, брандмауэр мешает этому «чему-то». Думаю, будет лучше, если сервис будет слушать напрямую по IPv4.
Dmitrij Kultasev avatar
флаг tk
это странно, так как я вижу из `docker ps`, что порт переадресован на порт IPv4, а также из всех конфигураций я вижу одно и то же: `2229b0ce11e7 test/clickhouse "/entrypoint.sh" 2 дня назад Up 2 дня 8123/tcp, 9000/tcp, 0.0.0.0:8443->8443/tcp, 9009/tcp, 0.0.0.0:9440->9440/tcp clickhouse`
Рейтинг:1
флаг tk

Наконец, я исправил это, выполнив следующую команду: sudo ufw route разрешить протокол TCP с любого на любой порт 8443

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.