PARPROUTED(8)
π PARPROUTED(8) β Proxy ARP Bridging Daemon π
okay bestie, sit down, hydrate, because today we're talking about parprouted β the proxy ARP IP bridging daemon β and she is honestly kind of iconic. π§β¨
β¨ SYNOPSIS β¨
parprouted [-d] [-p] interface [interface]
like. that's it. that's the whole summoning ritual. π
πΈ DESCRIPTION πΈ
So parprouted is a daemon for transparent IP (Layer 3) proxy ARP bridging. And the way that normal bridging could never β because unlike standard bridging, proxy ARP bridging actually lets you bridge Ethernet networks behind wireless nodes. π
Why does that matter, you ask? Because normal L2 bridging simply does not work between wireless nodes, since wireless has no idea about the MAC addresses used over in the wired Ethernet networks. It's giving "who is she, I've never met her." π Also, this daemon is super useful for making transparent firewalls, which is lowkey a slay.
Here's the vibe: the daemon listens for incoming ARP requests, and if the location of the requested IP address is unknown, it forwards them to the other interfaces, and updates the kernel ARP table with the replies it gets back. When it needs to, the daemon will generate an ARP reply itself, which makes the stations send their traffic to the host that the daemon is running on. π
And then β this is the part that eats β by automatically adding the appropriate /32 routes to the Linux kernel IP routing table for the hosts it learned about via ARP, the daemon makes sure the Linux kernel can route packets to the destination host when it receives them, with zero need for routing or subnetting by hand. no cap. π«Ά
All routes entered by the daemon have a metric of 50. remember that number, it's on the test. π
Unless you use the -p switch, all entries in the ARP table get refreshed β like, rechecked by sending ARP requests β every 50 seconds. That keeps them from getting expired by the kernel. β¨ (the kernel is a hater, we work around her.)
Normally it takes about 60 ms for a bridge to update all its tables and start sending packets to the destination. literally faster than me deciding what to wear. π
π REQUIREMENTS π
- This daemon can be used for unicast traffic only. I.e., DHCP is not supported. Use software such as
dhcrelayto "bridge" DHCP. π - You should have an IP address assigned on all of your interfaces that you do bridging on. There is no need for this address to be from the same networks as the bridged networks β any dummy address will do. fr fr.
- The system should have a correct default route.
parproutedrequires theipprogram from the iproute2 tools to be installed in/sbin. If it's installed somewhere else, please replace the"/sbin/ip"occurrences in the source with the correct path. π§- As well, you should have the proc filesystem mounted in
/proc, because the daemon uses/proc/net/arp. π parproutedis designed for and tested only with Linux 2.4.x kernels. yeah. she's vintage. vintage is a vibe, ok. π¦
π OPTIONS π
The list of interfaces to do bridging on should be given via the command line. (yes, that's your job, not hers.)
The daemon accepts the following switches:
-dβ stands for debugging. If you run it in debugging mode, the daemon will not go to background, and it will print additional debugging information tostdout/stderr. main character energy, she wants to be seen. π-pβ makes all ARP entries permanent. This will also result in the ARP tables not being refreshed by ARP pings. set it and forget it, bestie. π
π EXAMPLE π
To bridge between wlan0 and eth0:
parprouted eth0 wlan0
boom. bridged. ate. π₯
β AUTHOR β
(C) 2004, Vladimir Ivaschenko <vi@maks.net>
http://www.hazard.maks.net
β οΈ ok so quick vibe check before you go: this is a Layer 3 situation, so keep your unicast-only, DHCP-not-supported,/sbin/ip-having,/proc-mounted, Linux 2.4.x energy intact. don't come crying to me if you skipped the requirements. π
and that's the whole page, bestie π β parprouted, January 2004, from section 8 of the manual (PARPROUTED(8)), signed off with love and also a metric of 50. mwah. πβ¨πΈ
π¦ where this page comes from
- debian bookworm: parprouted 0.70-4 Β· GPL-2.0-or-later
- debian trixie: parprouted 0.70-4 Β· GPL-2.0-or-later
- ubuntu jammy: parprouted 0.70-3 Β· GPL-2.0-or-later
- ubuntu noble: parprouted 0.70-4 Β· GPL-2.0-or-later
- ubuntu questing: parprouted 0.70-6
- ubuntu resolute: parprouted 0.70-6build1 Β· GPL-2.0-or-later
- ubuntu stonking: parprouted 0.70-6build1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms