Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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)
share|improve this question

3 Answers 3

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...

share|improve this answer
    
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

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

share|improve this answer

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.