Вчера мне пришлось вернуться к недавнему снимку моего vm. Эта виртуальная машина работала безупречно в то время, когда я ее взял.
Но теперь я больше не могу разрешать URL-адреса этого хоста. Все команды git pull, все запросы curl, поиск узлов и т. Д. Не работают. Например:
host www.google.com ; connection timed out; no servers could be reached
Тем не менее, этот хост доступен из внешнего мира, поскольку я могу подключиться к нему по ssh, и поступающие HTTP-запросы обслуживаются.
Что я забываю?
Действительно, вам нужно иметь оба /etc/resolv.conf
и /etc/hosts
файлы, сконфигурированные соответствующим образом, чтобы правильно разрешать DNS-запрос конкретным хостам; в противном случае ваш запрос будет перенаправлен непосредственно на ваши DNS-серверы по умолчанию, и вы не сможете достичь того хоста, который должен быть объявлен в вышеупомянутых файлах. Это пример конфигурации файла /etc/hosts
:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
В конце файла вы можете добавить следующую строку:
169.254.169.254 metadata.google.internal
Говорят, что, как бы вы ни resolv.conf
файл изменен третьими экземплярами, вы должны иметь возможность правильно разрешать хосты, объявленные в файле /etc/hosts
.
Для получения дополнительной информации о внутреннем DNS и файле resolv.conf
, взгляни на это ссылка на сайт.
Оказывается, файл /etc/resolv.conf был автоматически заполнен примерно через 18 часов после запуска экземпляра.
Не очень удобно, но рад, что решено.
Если бы я знал тогда, я бы смог решить проблему, добавив это в /etc/resolve.conf:
domain c.[Project ID].internal
search c.[Project ID].internal.google.internal.
nameserver 169.254.169.254