I've created a network namespace in Linux.

I thought there was a resolv.conf file for each namespaces created but it's not the case on my system. I don't have the following path /etc/netns/namespace_name/resolv.conf.. The folder netns doesn't exist.

There is only one resolv.conf (/etc/resolv.conf and another one mirrored in /run/resolv.conf). Any changes in this file affect all network interfaces. Is there a way I can use different DNS for both the host and the namespace?

1 Answer 1


You must create directory /etc/netns/_namespace_name_ yourself , and place different version resolv.conf there.

  • 1
    Would /etc/netns/namespace-name/resolv.conf be used automatically? Sep 3, 2015 at 16:00
  • And can this be used for iptables too? Sep 3, 2015 at 16:08
  • 2
    It will be used automatically because the full path above is bind-mounted by ip netns to /etc/resolv.conf, as explained in the man page of ip netns man7.org/linux/man-pages/man8/ip-netns.8.html. So from within a given network namespace, /etc/resolv.conf is the per-namespace resolv.conf file if and only if /etc/netns/namespace-name/resolv.conf has been created. Otherwise, an application will see the resolv.conf of the host machine, which might not be the desired behaviour. Apr 4, 2017 at 14:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.