Включение удаленного доступа к докеру через tcp с помощью 127.0.0.1:2375 не удается, но работает при использовании 0.0.0.0:2375

#docker #ubuntu #networking #docker-daemon

Вопрос:

В настоящее время я запускаю Ubuntu 20.04 и пытаюсь предоставить удаленный доступ к докеру через tcp с systemd помощью подхода, указанного в официальном руководстве по докерам.

 # config in docker.service.d
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
 

Однако я заметил, что это работает только тогда, когда IP-адрес указан как 0.0.0.0 вместо 127.0.0.1 .

Могу ли я узнать, что могло привести к тому, что он работал только с 0.0.0.0:2375 и есть ли какая-либо существенная разница в использовании любого адреса обратной связи?

Комментарии:

1. Использование 0.0.0.0 позволит любому, кто может подключиться к системе, тривиально запустить весь хост . 127.0.0.1 позволит любому процессу, запущенному локально в системе, использовать Docker для повышения привилегий. Незашифрованное сетевое окно настройки является критической проблемой безопасности , и вам следует подумать о том, нужно ли переустановить эту систему с отключенной опцией и обновить все пароли, которые могли быть на ней.

Ответ №1:

Документация предписывает вам изменять строки в соответствии с вашими потребностями. При использовании 127.0.0.1 демон будет прослушивать интерфейс обратной связи и, следовательно, не будет доступен из сети. Интерфейс обратной связи предназначен только для доступа на одном и том же хосте.

Когда вы используете 0.0.0.0 (не петлю, а специальный адрес, означающий любой интерфейс, таким образом, включая любой интерфейс(ы), который вы подключили к сети), сетевые запросы, поступающие на ваш хост по порту 2375, будут перенаправляться вашему демону.

Обновление: вы можете думать об этом так. Указанный вами IP -H <IPv4>:2375 -адрес определяет интерфейс, который будет прослушиваться демоном. Это IP-адрес назначения запросов из сети и IP-адрес источника ответов от демона. 127.0.0.1 соответствует интерфейсу обратной связи, и вы можете использовать, например, 192.168.1.54, если это будет один из ваших IP-адресов. 0.0.0.0-это специальный адрес, означающий «прослушивание всех моих интерфейсов».

Комментарии:

1. пытаюсь понять -H, --host флаг для dockerd, когда он указан как dockerd -H tcp://[IPv4]:2375 . Является ли часть IP-адреса списком исходного IP-адреса?

2. @Dric, я попытался ответить на этот вопрос в обновлении.