Я сам изучил этот вопрос.
Что происходит, что при создании сети имен, вы видите /etc/resolv.conf
принимающей машины, если вы не создавать явно /etc/netns/<namespace_name>/resolv.conf
, который будет связывать гору автоматически /etc/resolv.conf
когда посмотрел внутри сеть пространства имен. Поэтому, просто создав этот путь, resolv.conf
хоста больше не будет виден в пространстве имен сетей, у которого будет свой собственный resolv.conf
.
manual page из ip netns
объясняет это:
Для приложений, которые знают о сетевых пространств имен, конвенция является поиск глобальных файлов конфигурации сети первый в /и т.д./netns/NAME/затем в/и т.д/. Например, если вам нужна другая версия /etc/resolv.conf для для сетевого пространства имен, используемого для выделения вашего vpn, вы бы назвали его /etc/netns/myvpn/resolv.conf.
Ip netns Exec автоматизирует обработку этой конфигурации, файл соглашение для сети пространства имен не знают приложений, создавая монтирование имен и связать монтирование всех в сеть пространства имен конфигурационных файлов в их традиционное место в/и т.д..
Что касается обновления resolv.conf
, dhclient
не работает в сети пространств имен из коробки, когда /etc/netns/<namespace_name>/resolv.conf
существует (с другой стороны, если она не существует, он будет перезаписан resolv.conf
из хост-машине , так как это единственный доступный, но это не очень желательно). Как показывает ошибка в вышеприведенном вопросе, происходит то, что dhclient
готовит временный файл с новыми данными сервера имен в /etc/resolv.conf.dhclient-new.2740
, а затем пытается переименовать его как /etc/resolv.conf
. Он генерирует ошибку, потому что /etc/resolv.conf
уже привязан и, видимо, mv
не разрешается делать этот трюк.
Для того, чтобы сделать dhclient
работу в сетевых пространствах имен, /sbin/dhclient-script
следует изменить. я удалил это:
mv -f $new_resolv_conf /etc/resolv.conf
И заменить его:
cat $new_resolv_conf > /etc/resolv.conf
rm -f $new_resolv_conf
В противном случае, dhcpcd
кажется, чтобы сделать эту работу правильно.
Это крутой обходной путь. Обратите внимание, что есть два раздела, где вам нужно изменить mv на cat. Интересно, что делает mv. Удаляет ли файл сначала? – 0xAffe