On Thu, 2018-05-31 at 21:18 +0000, Matthew Starr wrote:
-----Original Message----- From: Thomas Haller [mailto:thaller redhat com] Sent: Thursday, May 31, 2018 3:35 PM On Thu, 2018-05-31 at 19:02 +0000, Matthew Starr wrote:I am building NetworkManager 1.8.0 using buildroot with SysV init on an ARM embedded device. Buildroot has the /etc/resolv.conf file as a symlink that points to /tmp/resolv.conf. When I use NetworkManager with this resolv.conf symlink configuration, DNS lookups do no work because NetworkManger is not writing to the resolv.conf file or the file pointed to by the symlink. I tried updating the NetworkManager.conf file to include "rc- manager=file" since the man page states that NetworkManager will then follow the symlink and write the contents of the resolv.conf there. Unfortunately this does not work when the destination file the symlink points to does not exist. In this situation the symlink points to a file in /tmp which is a tmpfs file system (RAM based) and wiped clean on each boot to help support a read-only root file system or doing minimal writes to the root file system. Is there a specific reason NetworkManager doesn't create the file the /etc/resolv.conf symlink points to if it doesn't exist? If there isn't a reason, could NetworkManager be updated to create the file pointed to by the /etc/resolv.conf symlink?
Hi, What you say, makes sense. I also thought it should be like that, and the man page explains it that way (well, I was involved writing the manual page with this understanding). https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/src/dns/nm-dns-manager.c?id=nm-1-8#n737 Seems `realpath` only returns the destination file, if the path actually exists... I think this behavior is a bug, maybe it should be fixed, but it's a bit problematic to change at this point... I will follow up. In the meantime, can you not just symlink /etc/resolv.conf to /var/run/NetworkManager/resolv.conf ? That anyway seems the better solution to me. best, Thomas
Hi, with "file" mode, NetworkManager should follow the symlink and write the file (if it doesn't exist). It wouldn't create the necessary parent directories, but since you have /tmp/resolv.conf, this shouldn't apply. Odd, if that doesn't work. Would need some investigation. Does the logfile say anything with level=TRACE? You could also have /etc/resolv.conf as symlink to /var/run/NetworkManager/resolv.conf and leave "symlink" setting.I actually had that wrong in the original email. What I was seeing where it wouldn't write the /etc/resolv.conf file was with the "symlink" setting. I see that this is the expected action when /etc/resolv.conf is a symlink. The issue I am seeing with the "file" setting is that instead of following the broken symlink at /etc/resolv.conf and writing the file at where the symlink is pointing (/tmp/resolv.conf), Network Manager is deleting the symlink and writing a new /etc/resolv.conf regular file. Wouldn't it make more sense. Based on what the man page states, I was expecting NetworkManager to follow the symlink and make a new file there. The man page says "NetworkManager will write /etc/resolv.conf as file. If it finds a symlink, it will follow the symlink and update the target instead." In case it helps, here are some of the dns trace messages when NetworkManager was updating the DNS: daemon.debug NetworkManager[311]: <debug> [1527801019.9945] dns-mgr: update-dns: updating resolv.conf daemon.debug NetworkManager[311]: <trace> [1527801019.9948] dns-mgr: config: 100 best v4 mlan0 : 208.67.222.222 208.67.222.220 4.2.2.2 daemon.debug NetworkManager[311]: <trace> [1527801020.0115] dns-mgr: update-resolv-conf: write to /etc/resolv.conf succeeded (rc- manager=file) daemon.debug NetworkManager[311]: <trace> [1527801020.0126] dns-mgr: update-resolv-conf: write internal file /etc/resolv.conf succeeded (rc-manager=file) daemon.debug NetworkManager[311]: <trace> [1527801020.0135] dns-mgr: current configuration: [{'nameservers': <['208.67.222.222', '208.67.222.220', '4.2.2.2']>, 'interface': <'mlan0'>, 'priority': <100>, 'vpn': <false>}] daemon.debug NetworkManager[311]: <debug> [1527801020.0632] dns-mgr: (device_ip4_config_changed): queueing DNS updates (1) Best regards, Matthew Starr
Attachment:
signature.asc
Description: This is a digitally signed message part