[Dnsmasq-discuss] Is there any way found this "Cannot assign requested address"?
Petr Menšík
pemensik at redhat.com
Thu Feb 24 14:01:29 UTC 2022
There are two ways.
1) change bind-interfaces to bind-dynamic. It is able to wait until
requested address/interface becomes available.
2) change systemd unit, add After=network-online.target to dnsmasq
[Unit]. Starts dnsmasq after network interfaces are configured.
Cheers,
Petr
On 2/13/22 18:20, Chris Green wrote:
> I want to configure a system to listen on an address that it doesn't
> actually have until I add the address to the network interface.
>
> It works OK on Raspberry Pi systems but apparently not on a pretty
> standard ubuntu Linux system.
>
> When I try to start dnsmasq I get this error:-
>
> root at esprimo# systemctl status dnsmasq.service
> × dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
> Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
> Active: failed (Result: exit-code) since Sun 2022-02-13 16:56:27 GMT; 1min 46s ago
> Process: 3839 ExecStartPre=/etc/init.d/dnsmasq checkconfig (code=exited, status=0/SUCCESS)
> Process: 3847 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=2)
> CPU: 19ms
>
> Feb 13 16:56:27 esprimo systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
> Feb 13 16:56:27 esprimo dnsmasq[3847]: dnsmasq: failed to create listening socket for 192.168.1.2: Cannot assign requested address
> Feb 13 16:56:27 esprimo dnsmasq[3847]: failed to create listening socket for 192.168.1.2: Cannot assign requested address
> Feb 13 16:56:27 esprimo dnsmasq[3847]: FAILED to start up
> Feb 13 16:56:27 esprimo systemd[1]: dnsmasq.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
> Feb 13 16:56:27 esprimo systemd[1]: dnsmasq.service: Failed with result 'exit-code'.
> Feb 13 16:56:27 esprimo systemd[1]: Failed to start dnsmasq - A lightweight DHCP and caching DNS server.
>
>
> In the dnsmasq man page it has:-
>
> -z, --bind-interfaces
> On systems which support it, dnsmasq binds the wildcard address, even when it
> is listening on only some interfaces. It then discards requests that it
> shouldn't reply to. This has the advantage of working even when interfaces come
> and go and change address. This option forces dnsmasq to really bind only the
> interfaces it is listening on. About the only time when this is useful is when
> running another nameserver (or another instance of dnsmasq) on the same ma‐
> chine. Setting this option also enables multiple instances of dnsmasq which
> provide DHCP service to run in the same machine.
>
> I thought this would mean I could do what I want which is to have:-
>
> listen-address=192.168.1.2,127.0.0.1
>
> ... and only actually create the IP 192.168.1.2 on the network interface
> when I want this system to be the DHCP/DNS server.
>
> Does the error mean that Ubuntu Linux isn't among "systems which support it"?
>
> Is there any other way to get the result I want? That is dnsmasq running but not
> actually being visible as a server on the LAN until I do something to "switch it
> on"?
>
--
Petr Menšík
Software Engineer
Red Hat, http://www.redhat.com/
email: pemensik at redhat.com
PGP: DFCF908DB7C87E8E529925BC4931CA5B6C9FC5CB
More information about the Dnsmasq-discuss
mailing list