<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/dhcp-relaying-on-a-linux-host-ipspace-net-blog-9aksax4gq" -->

---
title: DHCP Relaying on a Linux Host « ipSpace.net blog | daily.dev
description: When running isc-dhcp-relay on a Linux router with IP forwarding enabled, DHCP lease renewal requests get duplicated: the kernel forwards the unicast packet to...
canonical: https://daily.dev/posts/dhcp-relaying-on-a-linux-host-ipspace-net-blog-9aksax4gq
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: DHCP Relaying on a Linux Host « ipSpace.net blog | daily.dev
og:description: When running isc-dhcp-relay on a Linux router with IP forwarding enabled, DHCP lease renewal requests get duplicated: the kernel forwards the unicast packet to...
og:url: https://daily.dev/posts/dhcp-relaying-on-a-linux-host-ipspace-net-blog-9aksax4gq
og:image: https://api.daily.dev/og/posts/9aksax4gq.png
og:image:alt: DHCP Relaying on a Linux Host « ipSpace.net blog
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# DHCP Relaying on a Linux Host « ipSpace.net blog

**[ipSpace.net Blog](https://daily.dev/sources/ipspace)** · 9 min read · 0 upvotes · 0 comments

## Summary

When running isc-dhcp-relay on a Linux router with IP forwarding enabled, DHCP lease renewal requests get duplicated: the kernel forwards the unicast packet to the DHCP server while dhcrelay simultaneously captures and relays the same packet via a raw socket on the downstream interface. This results in two requests reaching the server and two replies returning to the client. The root cause is that dhcrelay uses a raw socket on the downstream side and captures all port-67 traffic regardless of destination IP, violating RFC 2131 which states unicast DHCP renewal packets should bypass relay agents. The behavior affects VyOS, Cumulus Linux 4.x/5.x, and other Linux-based routers using isc-dhcp-relay. ISC DHCP support ended in 2022; dnsmasq is suggested as a maintained alternative for relay functionality.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.ipspace.net/2024/02/dhcp-relaying-linux-host>

## Questions this post answers

### Why does isc-dhcp-relay send duplicate DHCP requests to the server when running on a Linux router?

When IP forwarding is enabled on the Linux relay host, the kernel routes the unicast DHCP renewal packet directly to the server, while dhcrelay simultaneously captures the same packet via a raw socket on the downstream interface and relays it separately. This produces two requests at the server and two replies to the client. Disabling IP forwarding eliminates the duplicates but breaks normal unicast DHCP operation.

_Network engineers debugging DHCP relay issues on Linux routers track findings like these on daily.dev._

### Is isc-dhcp-relay still maintained and should I use it for new projects?

ISC ceased support for the ISC DHCP Client and Relay by the end of Q2 2022, and ended public support for the Server at the end of 2022. It should not be used for new projects. The still-maintained dnsmasq is a commonly cited alternative for DHCP relay functionality on Linux.

_Teams choosing a DHCP relay solution for Linux infrastructure find up-to-date comparisons and community experience on daily.dev._

### Does the isc-dhcp-relay duplicate packet problem affect Cumulus Linux 5.x?

Yes, the duplicate packet behavior is confirmed present in Cumulus Linux 5.9. On ASIC-based Mellanox/Cumulus switches, the ASIC copies all UDP datagrams on ports 67/68 to the control plane, and when multiple switches in the forwarding path are configured for DHCP relay, the duplication compounds — resulting in 100 or more DHCP Discovers arriving at the server.

_Engineers running Cumulus Linux in production follow issues like this as they evolve on daily.dev._

## Similar posts on daily.dev

- [So long, and thanks for all the fish: how to escape the Linux networking stack](https://daily.dev/posts/so-long-and-thanks-for-all-the-fish-how-to-escape-the-linux-networking-stack-jwvm9hpw7) · Cloudflare · 29 upvotes · 1 comments
- [Using Tailscale's Peer Relays to fix a homelab connection from across the globe](https://daily.dev/posts/using-tailscale-s-peer-relays-to-fix-a-homelab-connection-from-across-the-globe-cnl8nn7bx) · Tailscale · 0 upvotes · 0 comments
- [Managing DNS and DHCP on Linux](https://daily.dev/posts/managing-dns-and-dhcp-on-linux-lgqmlmse3) · Medium · 0 upvotes · 0 comments
- [A Survey of the 7 Configuration Changes That Turn a Multi-homed Linux Host into a Switch/Router – blog](https://daily.dev/posts/a-survey-of-the-7-configuration-changes-that-turn-a-multi-homed-linux-host-into-a-switch-router-bl-lcmrlvhci) · Hacker News · 0 upvotes · 0 comments
- [Linux 7.2-rc5 Fixing Longstanding Bug In IPv4 Networking Over Firewire](https://daily.dev/posts/linux-7-2-rc5-fixing-longstanding-bug-in-ipv4-networking-over-firewire-g4smssplp) · Phoronix · 0 upvotes · 0 comments

---

[View this post on daily.dev](https://daily.dev/posts/dhcp-relaying-on-a-linux-host-ipspace-net-blog-9aksax4gq)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"DHCP Relaying on a Linux Host « ipSpace.net blog","url":"https://daily.dev/posts/dhcp-relaying-on-a-linux-host-ipspace-net-blog-9aksax4gq","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/dhcp-relaying-on-a-linux-host-ipspace-net-blog-9aksax4gq"},"datePublished":"2026-08-11T08:55:21.912Z","dateModified":"2026-08-11T09:34:15.517Z","description":"When running isc-dhcp-relay on a Linux router with IP forwarding enabled, DHCP lease renewal requests get duplicated: the kernel forwards the unicast packet to...","image":"https://media.daily.dev/image/upload/s--OHB84bZF--/f_auto/v1722860399/public/Placeholder%2010","thumbnailUrl":"https://media.daily.dev/image/upload/s--OHB84bZF--/f_auto/v1722860399/public/Placeholder%2010","isAccessibleForFree":true,"articleSection":"ipSpace.net Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ipSpace.net Blog","logo":"https://media.daily.dev/image/upload/s--xS7E82MT--/f_auto,q_auto/v1786438303/logos/ipspace?_a=BAMAMicg0","url":"https://daily.dev/sources/ipspace"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/dhcp-relaying-on-a-linux-host-ipspace-net-blog-9aksax4gq","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ipSpace.net Blog","item":"https://daily.dev/sources/ipspace"},{"@type":"ListItem","position":3,"name":"DHCP Relaying on a Linux Host « ipSpace.net blog"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/dhcp-relaying-on-a-linux-host-ipspace-net-blog-9aksax4gq#faq","mainEntity":[{"@type":"Question","name":"Why does isc-dhcp-relay send duplicate DHCP requests to the server when running on a Linux router?","acceptedAnswer":{"@type":"Answer","text":"When IP forwarding is enabled on the Linux relay host, the kernel routes the unicast DHCP renewal packet directly to the server, while dhcrelay simultaneously captures the same packet via a raw socket on the downstream interface and relays it separately. This produces two requests at the server and two replies to the client. Disabling IP forwarding eliminates the duplicates but breaks normal unicast DHCP operation. Network engineers debugging DHCP relay issues on Linux routers track findings like these on daily.dev."}},{"@type":"Question","name":"Is isc-dhcp-relay still maintained and should I use it for new projects?","acceptedAnswer":{"@type":"Answer","text":"ISC ceased support for the ISC DHCP Client and Relay by the end of Q2 2022, and ended public support for the Server at the end of 2022. It should not be used for new projects. The still-maintained dnsmasq is a commonly cited alternative for DHCP relay functionality on Linux. Teams choosing a DHCP relay solution for Linux infrastructure find up-to-date comparisons and community experience on daily.dev."}},{"@type":"Question","name":"Does the isc-dhcp-relay duplicate packet problem affect Cumulus Linux 5.x?","acceptedAnswer":{"@type":"Answer","text":"Yes, the duplicate packet behavior is confirmed present in Cumulus Linux 5.9. On ASIC-based Mellanox/Cumulus switches, the ASIC copies all UDP datagrams on ports 67/68 to the control plane, and when multiple switches in the forwarding path are configured for DHCP relay, the duplication compounds — resulting in 100 or more DHCP Discovers arriving at the server. Engineers running Cumulus Linux in production follow issues like this as they evolve on daily.dev."}}]}
```

