[sisyphus] резолвер

Michael A. Kangin mak на complife.ru
Ср Апр 10 17:50:55 MSK 2019


On 04/09/2019 02:47 PM, Sergey wrote:

> Я так понимаю, что вопрос из-за того, что какой-то resolv.conf
> лежит в /var/resolv/etc/, а изменения в /etc/resolv.conf не
> во всех случаях становятся актуальными без запуска update_chrooted
> (или изменения /var/resolv/etc/resolv.conf другим способом каким-
> нибудь). Хотя вопрос, каков сейчас список приложений, которые
> используют /var/resolv/ тем или иным образом.



"каков сейчас список приложений" - а это разве не на общесистемном 
уровне применяется?

По крайней мере, ping работает с файлами именно из /var/resolv/etc/



У меня такая проблема - на хосте работает свой резолвер, он прописан в 
/etc/net/ifaces/{iface}/resolv.conf как 127.0.0.1.
При старте системы всё это прописывается в /etc/resolv.conf, 
/var/resolv/etc/resolv.conf, всё хорошо и благостно.

Теперь создаём netns, у которого свой собственный lo со своим 
собственным 127.0.0.1, и обнаруживаем, что резолвинг в этом неймспейсе 
не работает.

Ок, в man ip-netns сказано:
===================
For applications that are aware of network namespaces, the convention is 
to look for global network configuration files first in /etc/netns/NAME/ 
then in /etc/.  For example, if you want a different version of
/etc/resolv.conf for a network namespace used to isolate your vpn you 
would name it /etc/netns/myvpn/resolv.conf.

ip netns exec automates handling of this configuration, file convention 
for network namespace unaware applications, by creating a mount 
namespace and bind mounting all of the per network namespace configure 
files into their traditional location in /etc.
==================

Делаем директорию /etc/netns/myns, кладём туда исправленный экземпляр 
resolv.conf
Заходим снова в неймспейс, смотрим, что изнутри него /etc/resolv.conf 
виден как исправленно-правильный, однако резолвинг по-прежнему не 
работает, потому что /var/resolv/etc/resolv.conf остался старый, 
немодифицированный.
Если теперь изнутри неймспейса сказать update_chrooted, то резолвинг 
чинится для неймспейса, но тут же (ожидаемо) ломается для остальной 
хост-системы.


В общем, для меня тот факт, что resolv.conf и hosts используются из 
чрута /var/resolv/, создаёт дикое количество затруднений и проблем, и я 
был бы очень рад, если бы нашёлся путь использовать версии файлов 
непосредственно из /etc (как это в RHEL например работает).



Подробная информация о списке рассылки Sisyphus