Skip to content

0.24.0: per-VM /30 makes bootpd reject its config, so no vmnet guest on the host gets DHCP #212

Closed

Description

@icaevan

Summary: while any VM is running with softnet 0.24.0, macOS's bootpd rejects its whole subnet configuration. It then answers no ip addresses to every DHCP client on every vmnet shared network on the host, including guests not using softnet 0.24, such as a softnet 0.23.0 VM or another vmnet NAT guest.

Environment:

  • macOS 26.6.2 (25G83), Apple silicon
  • tart 2.37.0
  • softnet 0.24.0-b869e33 (Homebrew)

What happens:

  • With 0.24.0, each VM gets its own vmnet network with a /30. vmnet writes that subnet into /etc/bootpd.plist with a one-element net_range. A /30 has a single guest address, so the plist ends up with, for example, "10.56.43.161/30" and net_range => [ "10.56.43.162" ].
  • bootpd rejects it on every config reload while that VM exists:
    subnets: create failed, 'net_range' property must specify 2 values
    
  • It then fails every DHCP request on all vmnet shared networks:
    no ip addresses
    
  • In our logs the create failed line fired 3–12 times an hour while 0.24 VMs were running.

How to reproduce:

  1. Start one VM with softnet 0.24.0 (tart run --net-softnet ...).
  2. While it runs, start a second guest on a vmnet shared network (for example a VM using softnet 0.23.0, or plain vmnet NAT). It never gets a DHCP lease: its MAC never appears in /var/db/dhcpd_leases.
  3. log show --predicate 'process == "bootpd"' shows the two lines above.

Stop the 0.24 VM, and once the /30 is gone from /etc/bootpd.plist, the other guests get leases again.

Suggestion: allocate a /29 (two or more guest addresses) so net_range has two values, or use a reservation that doesn't go through bootpd's Subnets array.

Related to the 0.24.0 change "Serve DHCP directly from Softnet and use predictable vmnet reservations" (#209).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions