Okay so what needs to be done to fix this issue is to order the subnets in the generated configuration where the ones without gateways come first and the ones with gateways follow. This causes isc-dhcp to work correctly. This might be an issue with shared-network because the order of the subnets can only go so far before the order of shared-network breaks it. That is to say if there are 2 shared networks each with 2 subnets and one of each have a gateway defined then one of the 4 will have an issue as the order in that case cannot be enforced.
Note for next-server: You also need to set next-server on each subnet to make sure that it can communicate back to the rack controller on that subnet. If not the PXE client will select the IP from where it recieved the DHCP response which can be a different subnet. I think it might be best to say you can only provide DHCP to subnets that a rack controller has an IP address in. Without it the machines will fail to PXE boot. Or we don't enforce it which is legal and might be a network configuration that the administrator wants, but might be surprising to other users of MAAS. -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to isc-dhcp in Ubuntu. https://bugs.launchpad.net/bugs/1521618 Title: wrong subnet in DHCP answer when multiple networks are present Status in MAAS: Triaged Status in isc-dhcp package in Ubuntu: Confirmed Bug description: So I have 3 interfaces with 3, non-overlapping subnets defined in my maas cluster controller. The idea would be that there is a provisioning network (10.6.0.0/16) to do the actual provisioning and once the node gets deployed it is using a different network (because the provisioning network is only 1x1Gbit while the production network is bonded (LACP) 10Gbit). However, when I boot up a fresh, new node to add to MAAS, it gets the following DHCP reply: ip=10.6.239.3:10.6.250.250:9.4.113.254:255.255.255.0 So instead of picking up the /16 subnet correctly for the 10.6.239.3 IP, it picks up the /24 from the network where it gets it's default gateway from. Is this a bug or my understanding of how MAAS should behave when there are multiple networks flawed? Here is my /var/lib/maas/dhcpd.conf: subnet 9.4.113.0 netmask 255.255.255.0 { if option arch = 00:0E { filename "pxelinux.0"; option path-prefix "ppc64el/"; } elsif option arch = 00:07 { filename "bootx64.efi"; } elsif option arch = 00:0B { filename "grubaa64.efi"; } elsif option arch = 00:0C { filename "bootppc64.bin"; } else { filename "pxelinux.0"; } interface "eth0"; ignore-client-uids true; option subnet-mask 255.255.255.0; option broadcast-address 9.4.113.255; option domain-name-servers 9.4.113.251; option domain-name "i.zc2.ibm.com"; option routers 9.4.113.254; option ntp-servers ntp.ubuntu.com; range dynamic-bootp 9.4.113.150 9.4.113.190; class "PXE" { match if substring (option vendor-class-identifier, 0, 3) = "PXE"; default-lease-time 30; max-lease-time 30; } } subnet 10.6.0.0 netmask 255.255.0.0 { if option arch = 00:0E { filename "pxelinux.0"; option path-prefix "ppc64el/"; } elsif option arch = 00:07 { filename "bootx64.efi"; } elsif option arch = 00:0B { filename "grubaa64.efi"; } elsif option arch = 00:0C { filename "bootppc64.bin"; } else { filename "pxelinux.0"; } interface "eth1"; ignore-client-uids true; option subnet-mask 255.255.0.0; option broadcast-address 10.6.255.255; option domain-name-servers 9.4.113.251; option domain-name "i.zc2.ibm.com"; option ntp-servers ntp.ubuntu.com; range dynamic-bootp 10.6.239.0 10.6.239.239; class "PXE" { match if substring (option vendor-class-identifier, 0, 3) = "PXE"; default-lease-time 30; max-lease-time 30; } } Here is "subnets read": [ { "dns_servers": [], "name": "9.4.113.0/24", "space": "space-0", "vlan": { "name": "untagged", "resource_uri": "/MAAS/api/1.0/vlans/0/", "fabric": "fabric-0", "vid": 0, "id": 0 }, "gateway_ip": "9.4.113.254", "cidr": "9.4.113.0/24", "id": 1, "resource_uri": "/MAAS/api/1.0/subnets/1/" }, { "dns_servers": [], "name": "10.7.0.0/16", "space": "space-0", "vlan": { "name": "untagged", "resource_uri": "/MAAS/api/1.0/vlans/5001/", "fabric": "fabric-1", "vid": 0, "id": 5001 }, "gateway_ip": null, "cidr": "10.7.0.0/16", "id": 2, "resource_uri": "/MAAS/api/1.0/subnets/2/" }, { "dns_servers": [], "name": "10.6.0.0/16", "space": "space-0", "vlan": { "name": "untagged", "resource_uri": "/MAAS/api/1.0/vlans/5002/", "fabric": "fabric-2", "vid": 0, "id": 5002 }, "gateway_ip": null, "cidr": "10.6.0.0/16", "id": 3, "resource_uri": "/MAAS/api/1.0/subnets/3/" } ] Running 1.9.0~rc2+bzr4509-0ubuntu1~trusty1. To manage notifications about this bug go to: https://bugs.launchpad.net/maas/+bug/1521618/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp