Вчера мне пришлось вернуться к недавнему снимку моей виртуальной машины. Эта виртуальная машина работала безупречно в то время, когда я ее использовал.
Но теперь я больше не могу разрешать URL-адреса этого хоста. Все команды git pull, все запросы curl, поиск узлов и т. Д. Не работают. Например:
host www.google.com ; время соединения истекло; никакие серверы недоступны
Тем не менее, этот хост доступен из внешнего мира, так как я могу подключиться к нему по ssh, а входящие http-запросы обслуживаются.
Что я забыл?
вам не нужно вручную добавлять записи в /etc/resolv.conf, вы можете просто запустить следующую команду, чтобы обновить файл. Была такая же проблема и решил ее, сделав это.
systemd-resolve --status
Оказывается, файл /etc/resolv. conf был автоматически заполнен примерно через 18 часов после вращения экземпляра.
Не очень удобно, но рад, что проблема решена.
Если бы я тогда знал, думаю, я бы смог решить проблему, добавив это в /etc/resolve.conf:
domain c.[Project ID].internal
search c.[Project ID].internal.google.internal.
nameserver 169.254.169.254
Действительно, вам нужно, чтобы оба /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
Будучи сказанным, неважно, как ваш разрешает. conf
изменяется третьими инстанциями, вы должны уметь правильно разрешать хосты, объявленные в файле /etc/hosts
.
Для получения дополнительной информации о внутренней DNS и файле resolv.conf
, посмотрите на эту ссылку.