4

Are there any Linux DHCP servers that will listen to what Cisco calls an "unnumbered" interface, or what others might call a "NBMA" (non-broadcast) interface.

I have a Linux system that connects to a number of others using GRE tunnels. The machines on the other end send DHCP requests to this machine, I can see them with tcpdump. However, ISC DHCP 3.0.3 refuses to listen to the interface because it is non-broadcast.

The interface I'd like DHCP to listen to is:

tap2      Link encap:Ethernet  HWaddr removed-for-privacy  
          inet6 addr: removed-for-privacy/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:518 errors:0 dropped:0 overruns:0 frame:0
          TX packets:510 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:196242 (191.6 KiB)  TX bytes:52425 (51.1 KiB)
TomOnTime
  • 7,567
  • 6
  • 28
  • 51

3 Answers3

2

This is an old question, but:

You need to compile dhcpd with USE_SOCKETS. If you don't, it uses some pcap code to receive packets, and that pcap code has hard-coded assumptions that the link layer is Ethernet, so doesn't work on tunnel interfaces.

user53814
  • 376
  • 1
  • 9
1

Uhh, ok, but why? Your DHCP server refuses to listen on a non-broadcast interface because it's whole point is to reply to those requests on the interface it listens on. That's what the DHCP protocol is... A way to locally get IP configuration information on a subnet. You wouldn't want to listen on one subnet and broadcast on another because the requesting host wouldn't be there...

Zak
  • 1,032
  • 2
  • 15
  • 25
  • I should be more clear. The issue isn't that the interface is non-broadcast (it still receives the dhcp broadcast packet due to other trickery) the problem is that the interface is unnumbered. I have found that dnsmasq lets you specify "if a packet arrives on an unnumbered NIC, pretend it came from nic XYZ instead." That helps, but hasn't solved the problem yet. – TomOnTime Nov 20 '09 at 21:06
0

Can you run a DHCP relay on that interface and the actual server somewhere else?

Andrew McGregor
  • 1,152
  • 7
  • 4