NetworkConfiguration / dhcpcd

DHCP / IPv4LL / IPv6RA / DHCPv6 client.
https://roy.marples.name/projects/dhcpcd
BSD 2-Clause "Simplified" License
337 stars 109 forks source link

resolv.conf is still overwritten although nohook resolv.conf is given #257

Closed octavsly closed 9 months ago

octavsly commented 11 months ago

# no nohook since we do not want the dns to be touched nohook resolv.conf

interface ppp0 debug ia_pd 2 breeurope/0 # resolv.conf is still overidden. Try hard-coding DNS servers static domain_name_servers=192.168.1.1 xxxx:xxxx:xxxx::53

With the above nohook option, the /etc/resolv.conf is unexplainably written. Furthermore the defined static DNS server is not appearing in /etc/resolv.conf !

Gentoo net-misc/dhcpcd-10.0.3

rsmarples commented 11 months ago

I'm not sure what your expectation is here.

With this config, new_domain_name_servers will be set to your value for the hooks to use but nohook resolv.conf will stop it from being written.

octavsly commented 11 months ago

My expectation is that /etc/resolv.conf is not touched.

Since I could not stop dhcpcd to overwrite the resolv.conf I tried to force the DNS. This did not work either.

/etc/resolv.conf is always written with the information from the DHCPv6 server...

rsmarples commented 11 months ago

Maybe some other hook is being called or some other program is doing it? I just tested and with nohook resolv.conf the dhcpcd supplied resolv.conf script does nothing.

Do you see at the top of the modifed resolv.conf file # Generated by dhcpcd ? Do you have resolvconf installed? If so, what is the output of resolvconf -l ?

octavsly commented 11 months ago

# Generated by dhcpcd from ppp0.dhcp6 # /etc/resolv.conf.head can replace this line nameserver 2a02:a47f:e000::53 nameserver 2a02:a47f:e000::54 # /etc/resolv.conf.tail can replace this line


resolvconf -l -bash: resolvconf: command not found


The call is dhcpcd -6 ppp0

rsmarples commented 10 months ago

Can you apply this patch to dhcpcd-run-hooks.in please and let me know the results?

--- a/hooks/dhcpcd-run-hooks.in
+++ b/hooks/dhcpcd-run-hooks.in
@@ -341,6 +341,7 @@ do
        case "$hook" in
                */*~)   continue;;
        esac
+       echo "Testing hook $hook with skips $skip_hooks"
        for skip in $skip_hooks; do
                case "$hook" in
                        */"$skip")                      continue 2;;
@@ -349,6 +350,7 @@ do
                esac
        done
        if [ -f "$hook" ]; then
+               echo "Running hook $hook"
                . "$hook"
        fi
 done

I get this sample output:

Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /libexec/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /libexec/dhcpcd-hooks/01-test
Testing hook /libexec/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /libexec/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /libexec/dhcpcd-hooks/30-hostname
Testing hook /libexec/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /libexec/dhcpcd-hooks/50-ntp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
Running hook /etc/dhcpcd.exit-hook

You can see that the 20-resolv.conf hook script is not run

octavsly commented 10 months ago

Interesting result, it looks like the skip is missing for some steps... :

dhcpcd-10.0.3 starting
DUID 00:01:00:01:10:4a:d3:b5:00:00:b4:9c:94:a3
Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
ppp0: IAID 70:70:70:30
ppp0: IA type 25 IAID 00:00:00:02
ppp0: rebinding prior DHCPv6 lease
breeurope: activating for delegation
Testing hook /etc/dhcpcd.enter-hook with skips 
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips 
Testing hook /etc/dhcpcd.enter-hook with skips 
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips 
breeurope: IAID c5:ad:99:22
ppp0: REPLY6 received from fe80::9217:3fff:feb7:70a1
ppp0: renew in 86400, rebind in 138240, expire in 259200 seconds
lo: adding reject route to 2a02:a46e:c4a8::/48
ppp0: delegated prefix 2a02:a46e:c4a8::/48
breeurope: adding address 2a02:a46e:c4a8::1/64
Testing hook /etc/dhcpcd.enter-hook with skips 
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips 
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips 
breeurope: adding route to 2a02:a46e:c4a8::/64
Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
forked to background, child pid 15237
rsmarples commented 10 months ago

Interesting. Can you please attach your full dhcpcd.conf or email it to me at roy@marples.name please?

octavsly commented 10 months ago

dhcpcd.conf.txt

rsmarples commented 10 months ago

I think I know what's going on now. Are you running dhcpcd specifically on the ppp0 interface? Can you add this to /etc/dhcpcd.enter-hook please?

echo "reason $reason interface $interface"

octavsly commented 10 months ago

The call is : $> dhcpcd -6 ppp0

I will add the line and come back with the results.

rsmarples commented 9 months ago

@octavsly really sorry for the delay, finding the time for this has been problematic.

Anway, I think I have the problem fixed. Can you test the above patch please?

octavsly commented 9 months ago

No problem. Everybody is busy with a lot of things. I applied the patch on gentoo 10.0.5-r1 version. It seems to work. After putting back the echo's I get :

dhcpcd-10.0.5 starting
spawned manager process on PID 27838
DUID 00:01:00:01:10:4a:d3:b5:00:00:b4:9c:94:a3
ppp0: executing: /lib/dhcpcd/dhcpcd-run-hooks PREINIT
Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
ppp0: executing: /lib/dhcpcd/dhcpcd-run-hooks CARRIER
Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
ppp0: IAID 70:70:70:30
ppp0: IA type 25 IAID 00:00:00:02
ppp0: reading lease: /var/lib/dhcpcd/ppp0.lease6
ppp0: rebinding prior DHCPv6 lease
ppp0: delaying REBIND6 (xid 0x0c4b0e), next in 2.1 seconds
breeurope: activating for delegation
breeurope: executing: /lib/dhcpcd/dhcpcd-run-hooks PREINIT
Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
breeurope: executing: /lib/dhcpcd/dhcpcd-run-hooks CARRIER
Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
breeurope: IAID c5:ad:99:22
ppp0: multicasting REBIND6 (xid 0x0c4b0e), next in 1.0 seconds
ppp0: REPLY6 received from fe80::9217:3fff:feb7:70a1
ppp0: renew in 86400, rebind in 138240, expire in 259200 seconds
lo: adding reject route to 2a02:a46e:c4a8::/48
ppp0: writing lease: /var/lib/dhcpcd/ppp0.lease6
ppp0: delegated prefix 2a02:a46e:c4a8::/48
breeurope: adding address 2a02:a46e:c4a8::1/64
breeurope: pltime 172800 seconds, vltime 259200 seconds
breeurope: executing: /lib/dhcpcd/dhcpcd-run-hooks DELEGATED6
Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
breeurope: adding route to 2a02:a46e:c4a8::/64
ppp0: executing: /lib/dhcpcd/dhcpcd-run-hooks REBIND6
Testing hook /etc/dhcpcd.enter-hook with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/01-test with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/01-test
Testing hook /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf with skips resolv.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/30-hostname with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/30-hostname
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
Testing hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf with skips resolv.conf
Running hook /lib/dhcpcd/dhcpcd-hooks/50-yp.conf
Testing hook /etc/dhcpcd.exit-hook with skips resolv.conf
forked to background