Page MenuHomeVyOS Platform

service/dns/forwarding/dhcp not parsed
Open, NormalPublicBUG

Description

vyos@vyos# show system name-server 
 name-server eth0
[edit]
vyos@vyos# vyos-hostsd-client  --get-name-servers
{'dhcp-eth0': {'192.168.10.1': None}}
[edit]

# use dhcp eth0 and without system
vyos@vyos# show service dns forwarding 
 allow-from 0.0.0.0/0
 dhcp eth0
 listen-address 0.0.0.0
[edit]
vyos@vyos# cat /run/pdns-recursor/recursor.forward-zones.conf 
# Autogenerated by VyOS (vyos-hostsd)
# Do not edit, your changes will get overwritten

# dot zone (catch-all): '+' indicates recursion is desired
# (same as forward-zones-recurse)
# static: 


# zones added via 'service dns forwarding domain'
[edit]

# use system without dhcp 
vyos@vyos# delete service dns forwarding dhcp 
[edit]
vyos@vyos# set service dns forwarding dns
dns64-prefix  dnssec        
[edit]
vyos@vyos# set service dns forwarding system 
[edit]
vyos@vyos# commit
[edit]
vyos@vyos# cat /run/pdns-recursor/recursor.forward-zones.conf 
# Autogenerated by VyOS (vyos-hostsd)
# Do not edit, your changes will get overwritten

# dot zone (catch-all): '+' indicates recursion is desired
# (same as forward-zones-recurse)
# static: 
# system: 
# dhcp-eth0: 192.168.10.1
# dhcpv6-eth0: 

+.=192.168.10.1

# zones added via 'service dns forwarding domain'
[edit]

In service_dns_forwarding.py, there is some code similar to be related to the dns['dhcp'] entry

# add dhcp nameserver tags for configured interfaces
if 'system_name_server' in dns:
    for interface in dns['system_name_server']:
        # system_name_server key contains both IP addresses and interface
        # names (DHCP) to use DNS servers. We need to check if the
        # value is an interface name - only if this is the case, add the
        # interface based DNS forwarder.
        if interface_exists(interface):
            hc.add_name_server_tags_recursor(['dhcp-' + interface,
                                              'dhcpv6-' + interface ])

These code is handling dns interface from

if 'system' in dns:
    base_nameservers = ['system', 'name-server']
    if conf.exists(base_nameservers):
        dns.update({'system_name_server': conf.return_values(base_nameservers)})

I copied as

# add dhcp interfaces
if 'dhcp' in dns:
    for interface in dns['dhcp']:
        if interface_exists(interface):
            hc.add_name_server_tags_recursor(['dhcp-' + interface,
                                              'dhcpv6-' + interface ])

result:

vyos@vyos# delete service dns forwarding system 
[edit]
vyos@vyos# set service dns forwarding dhcp eth0
[edit]
vyos@vyos# commit
[edit]
vyos@vyos# cat /run/pdns-recursor/recursor.forward-zones.conf 
# Autogenerated by VyOS (vyos-hostsd)
# Do not edit, your changes will get overwritten

# dot zone (catch-all): '+' indicates recursion is desired
# (same as forward-zones-recurse)
# static: 
# dhcp-eth0: 192.168.10.1
# dhcpv6-eth0: 

+.=192.168.10.1

# zones added via 'service dns forwarding domain'
[edit]

Details

Version
2025.03.22-0017-rolling
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Bug (incorrect behavior)