summaryrefslogtreecommitdiff
path: root/src/etc/ppp/ip-up.d
diff options
context:
space:
mode:
authorYuxiang Zhu <vfreex@gmail.com>2022-11-14 10:23:46 +0800
committerYuxiang Zhu <vfreex@gmail.com>2022-11-14 11:04:05 +0800
commit00ec496877453cc37ceec0633821a47f128d9f4f (patch)
tree4fb0e69e87e37cca30451af6c06a83944486c2ad /src/etc/ppp/ip-up.d
parent61574eaf2d703e8084c8272e6976fd44abaea482 (diff)
downloadvyos-1x-00ec496877453cc37ceec0633821a47f128d9f4f.tar.gz
vyos-1x-00ec496877453cc37ceec0633821a47f128d9f4f.zip
T4815: Fix various name server config issues
1. When a PPPoE session is connected, `pppd` will update `/etc/resolv.conf` regardless of `system name-server` option unless `no-peer-dns` is set. This is because `pppd` vendors scripts `/etc/ppp/ip-up.d/0000usepeerdns` and `/etc/ppp/ip-down.d/0000usepeerdns`, which updates `/etc/resolv.conf` on PPPoE connection and reverts the change on disconnection. This PR removes those scripts and adds custom scripts to update name server entries through `vyos-hostsd` instead. 2. There is a typo in `/etc/dhcp/dhclient-enter-hooks.d/04-vyos-resolvconf, which misspells variable name `new_dhcp6_name_servers` as `new_dhcpv6_name_servers`. This causes IPv6 name server entries in `vyos-hostsd` not updated when dhclient receives nameservers from DHCPv6. 3. Regular expressions in scripts under `/etc/dhcp/dhclient-enter-hooks.d` and `/etc/dhcp/dhclient-exit-hooks.d/` are not enclosed in `^$`, so those IPv4 related branches (like `BOUND`) could be mistakenly executed when an IPv6 reason (like `BOUND6`) is given.
Diffstat (limited to 'src/etc/ppp/ip-up.d')
-rw-r--r--src/etc/ppp/ip-up.d/98-vyos-pppoe-setup-nameservers24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/etc/ppp/ip-up.d/98-vyos-pppoe-setup-nameservers b/src/etc/ppp/ip-up.d/98-vyos-pppoe-setup-nameservers
new file mode 100644
index 000000000..0fcedbedc
--- /dev/null
+++ b/src/etc/ppp/ip-up.d/98-vyos-pppoe-setup-nameservers
@@ -0,0 +1,24 @@
+#!/bin/bash
+### Autogenerated by interfaces-pppoe.py ###
+
+interface=$6
+if [ -z "$interface" ]; then
+ exit
+fi
+
+if ! /usr/bin/systemctl -q is-active vyos-hostsd; then
+ exit # vyos-hostsd is not running
+fi
+
+hostsd_client="/usr/bin/vyos-hostsd-client"
+
+$hostsd_client --delete-name-servers --tag "dhcp-$interface"
+
+if [ "$USEPEERDNS" ] && [ -n "$DNS1" ]; then
+$hostsd_client --add-name-servers "$DNS1" --tag "dhcp-$interface"
+fi
+if [ "$USEPEERDNS" ] && [ -n "$DNS2" ]; then
+$hostsd_client --add-name-servers "$DNS2" --tag "dhcp-$interface"
+fi
+
+$hostsd_client --apply