MongoDB: проблема с DNS для resolv.conf, подключающегося к MongoDB - PullRequest
0 голосов
/ 21 февраля 2020

Я хочу экспортировать некоторые данные из MongoDB Atlas.

Если я выполню приведенную ниже команду, она попытается подключиться localhost и экспортировать данные.

mongoexport --uri="mongodb+srv://<username>:<password>@name-of-project-x2lpw.mongodb.net/test" --collection users --out /tmp/testusers.json

Примечание: Если вы запустите эту команду из Windows CMD, она будет работать нормально

После исследования проблемы и с с помощью пользователя, все, кажется, указывает на проблему DNS и на связанный файл resolv.conf.

Ниже оригинального /etc/resolv.conf:

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0
search name.com

В начале, которое привело к сбой соединения, как показано ниже:

wrong

Но если бы я изменил этот адрес на следующий общедоступный c доступный адрес в соответствии с рекомендациями этого сообщения до 1.1.1.1 соединение установлено, см. ниже:

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 1.1.1.1
options edns0
search name.com

, что привело к успешному соединению, как показано ниже:

correct

ОДНАКО проблема в том, что вместо явного подключения к имени кластера MongoDB он будет подключаться к localhost, что очень странно, поскольку я успешно экспортировал искомые файлы из реального соединения. Что означает , что машина правильно подключалась к базе данных, но через localhost.

Кажется, что все идет вперед, также согласно этому источнику , а также здесь к проблеме DNS при подключении к MongoDB через терминал для экспорта коллекций. Теперь из этого последнего поста не рекомендуется вручную изменять этот адрес по нескольким причинам, поэтому сразу после успешного экспорта данных с помощью DNS 1.1.1.1 я изменил его обратно на исходный DNS 127.0.0.53. Однако я не думаю, что это должно быть правильным поведением, поскольку каждый раз, когда мне нужно экспортировать данные, мне придется постоянно и вручную менять этот адрес.

В чем может быть причина этого странного поведения? И поэтому, что может быть долгосрочным решением без ручного переключения между DNS-адресами?

Спасибо за указание правильного направления для решения этой проблемы.

...