11

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?

jayce153
  • 113
  • 1
  • 1
  • 4

1 Answers1

17

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

Nik
  • 409
  • 3
  • 4
  • 1
    Would `/etc/netns/namespace-name/resolv.conf` be used automatically? – CMCDragonkai Sep 03 '15 at 16:00
  • And can this be used for iptables too? – CMCDragonkai Sep 03 '15 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 http://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. – Ricky Robinson Apr 04 '17 at 14:17