> The netmask problem needs fixing before we can say that this approach > won't work, I think. Thanks for the hint. We fixed this now, but still did not manage to get the desired behavior (see log). It seems that dnsmasq only uses the most recently assigned ip address of an interface for context checking and ignores the other addresses. Beyond that, we need a means of routing packets for dedicated subnets to dedicated interfaces. When assigning both addresses to both interfaces, it turns out that routing is somewhat undefined. I feel like patching dnsmasq so that packets with client id are answered on each interface regardless of their context might be the easier way to go.
Christoph linux:/opt/dnsmasq # ./dnsmasq -C ./dnsmasq.conf -d dnsmasq: started, version 2.22 cachesize 180 dnsmasq: DHCP, static leases only on 10.128.150.10, lease time 45m dnsmasq: DHCP, static leases only on 10.0.150.10, lease time 45m dnsmasq: DHCP, static leases only on 10.64.150.10, lease time 45m dnsmasq: read /etc/hosts - 93 addresses dnsmasq: reading /opt/dnsmasq/resolv.conf dnsmasq: DHCPDISCOVER(eth0) 10.0.150.10 00:01:02:dd:4b:74 no address available dnsmasq: DHCPDISCOVER(eth1) 10.0.150.10 00:01:02:dd:4b:74 dnsmasq: DHCPOFFER(eth1) 10.0.150.32 00:01:02:dd:4b:74 dnsmasq: DHCPREQUEST(eth1) 10.0.150.32 00:01:02:dd:4b:74 dnsmasq: DHCPACK(eth1) 10.0.150.32 00:01:02:dd:4b:74 INT0_IOD_MB_BAS0_MAS dnsmasq: DHCPDISCOVER(eth0) 10.0.150.10 00:01:02:dd:4b:74 no address available dnsmasq: DHCPDISCOVER(eth1) 10.0.150.10 00:01:02:dd:4b:74 dnsmasq: DHCPOFFER(eth1) 10.0.150.33 00:01:02:dd:4b:74 dnsmasq: DHCPREQUEST(eth1) 10.0.150.33 00:01:02:dd:4b:74 dnsmasq: DHCPACK(eth1) 10.0.150.33 00:01:02:dd:4b:74 INT0_IOD_MB_BAS0_SLV dnsmasq: DHCPDISCOVER(eth0) 10.0.150.10 00:01:02:dd:4b:74 no address available dnsmasq: DHCPDISCOVER(eth1) 10.0.150.10 00:01:02:dd:4b:74 dnsmasq: DHCPOFFER(eth1) 10.0.150.34 00:01:02:dd:4b:74 dnsmasq: DHCPREQUEST(eth1) 10.0.150.34 00:01:02:dd:4b:74 dnsmasq: DHCPACK(eth1) 10.0.150.34 00:01:02:dd:4b:74 INT0_IOD_MB_EXT0_MAS dnsmasq: DHCPDISCOVER(eth0) 10.0.150.10 00:01:02:dd:4b:74 no address available dnsmasq: DHCPDISCOVER(eth1) 10.0.150.10 00:01:02:dd:4b:74 dnsmasq: DHCPOFFER(eth1) 10.0.150.35 00:01:02:dd:4b:74 dnsmasq: DHCPREQUEST(eth1) 10.0.150.35 00:01:02:dd:4b:74 dnsmasq: DHCPACK(eth1) 10.0.150.35 00:01:02:dd:4b:74 INT0_IOD_MB_EXT0_SLV dnsmasq: DHCPDISCOVER(eth0) 10.128.150.10 00:10:5a:5a:05:e2 dnsmasq: DHCPOFFER(eth0) 10.128.150.32 00:10:5a:5a:05:e2 dnsmasq: DHCPDISCOVER(eth1) 10.128.150.10 00:10:5a:5a:05:e2 no address available dnsmasq: DHCPREQUEST(eth0) 10.128.150.32 00:10:5a:5a:05:e2 dnsmasq: DHCPACK(eth0) 10.128.150.32 00:10:5a:5a:05:e2 INT1_IOD_MB_BAS0_MAS dnsmasq: DHCPDISCOVER(eth0) 10.128.150.10 00:10:5a:5a:05:e2 dnsmasq: DHCPOFFER(eth0) 10.128.150.33 00:10:5a:5a:05:e2 dnsmasq: DHCPDISCOVER(eth1) 10.128.150.10 00:10:5a:5a:05:e2 no address available dnsmasq: DHCPREQUEST(eth0) 10.128.150.33 00:10:5a:5a:05:e2 dnsmasq: DHCPACK(eth0) 10.128.150.33 00:10:5a:5a:05:e2 INT1_IOD_MB_BAS0_SLV dnsmasq: DHCPDISCOVER(eth0) 10.128.150.10 00:10:5a:5a:05:e2 dnsmasq: DHCPOFFER(eth0) 10.128.150.34 00:10:5a:5a:05:e2 dnsmasq: DHCPDISCOVER(eth1) 10.128.150.10 00:10:5a:5a:05:e2 no address available dnsmasq: DHCPREQUEST(eth0) 10.128.150.34 00:10:5a:5a:05:e2 dnsmasq: DHCPACK(eth0) 10.128.150.34 00:10:5a:5a:05:e2 INT1_IOD_MB_EXT0_MAS dnsmasq: DHCPDISCOVER(eth0) 10.128.150.10 00:10:5a:5a:05:e2 dnsmasq: DHCPOFFER(eth0) 10.128.150.35 00:10:5a:5a:05:e2 dnsmasq: DHCPDISCOVER(eth1) 10.128.150.10 00:10:5a:5a:05:e2 no address available dnsmasq: DHCPREQUEST(eth0) 10.128.150.35 00:10:5a:5a:05:e2 dnsmasq: DHCPACK(eth0) 10.128.150.35 00:10:5a:5a:05:e2 INT1_IOD_MB_EXT0_SLV linux:/opt/dnsmasq # ip addr show 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 brd 127.255.255.255 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:01:02:dd:84:bc brd ff:ff:ff:ff:ff:ff inet 10.0.150.111/15 brd 10.1.255.255 scope global eth0 inet 10.128.150.111/15 brd 10.129.255.255 scope global eth0 inet6 fe80::201:2ff:fedd:84bc/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:50:da:48:d1:fe brd ff:ff:ff:ff:ff:ff inet 10.128.150.111/15 brd 10.129.255.255 scope global eth1 inet 10.0.150.111/15 brd 10.1.255.255 scope global eth1 inet6 fe80::250:daff:fe48:d1fe/64 scope link valid_lft forever preferred_lft forever 4: sit0: <NOARP> mtu 1480 qdisc noqueue link/sit 0.0.0.0 brd 0.0.0.0 linux:/opt/dnsmasq # ip route show 169.254.0.0/16 dev eth0 scope link 10.0.0.0/15 dev eth0 proto kernel scope link src 10.0.150.111 10.0.0.0/15 dev eth1 proto kernel scope link src 10.0.150.111 10.128.0.0/15 dev eth1 proto kernel scope link src 10.128.150.111 10.128.0.0/15 dev eth0 proto kernel scope link src 10.128.150.111 127.0.0.0/8 dev lo scope link