vishvananda / netns

Simple network namespace handling for go.
Apache License 2.0
379 stars 133 forks source link

Is there a way to switch resolv.conf while switching namespace #37

Open shekharHPE opened 5 years ago

shekharHPE commented 5 years ago

We have a resolv.conf file for every namespaces. When switching from one namespace (say VRF_1) to another (say VRF_2), it seems that the resolv.conf file attached to VRF_1 is used to resolve the DNS instead of VRF_2. Is there any way as of today to ensure use of a different resolv.conf while switching the namespace.

ic2hrmk commented 4 years ago

Hi, I don't know is it still relevant. I tried two different ways:

The first one looks more natural, but I agree - both are workarounds

thediveo commented 4 years ago
  1. /etc/resolv.conf is an ordinary file, read by many DNS client libraries.
  2. As an ordinary file, /etc/resolv.conf is subject to mount namespaces, but not network namespaces.
  3. a process with a DNS client resolver library thus reads the /etc/resolv.conf from its currently active mount namespace, and if you don't change that to the one used by your boxed processes using separate different network and mount namespaces, your process uses the wrong /etc/resolv.conf.
  4. Switching a process into a different mount namespace is a point of no return and fails when your process is already multi-threaded.