Goofy MAC addresses for IX peering LANs: real vendor OUIs, random tail
  • PHP 64.8%
  • CSS 24.7%
  • JavaScript 10.5%
Find a file
nhendriks 7a994f11fd
All checks were successful
Deploy / deploy (push) Successful in 11s
Add 73 vendors, two categories, and punnier jokes
2026-11-11 23:37:14 +01:00
.forgejo/workflows Initial commit 2026-11-11 23:15:21 +01:00
lib Add 73 vendors, two categories, and punnier jokes 2026-11-11 23:37:14 +01:00
public Initial commit 2026-11-11 23:15:21 +01:00
tools Initial commit 2026-11-11 23:15:21 +01:00
LICENSE Initial commit 2026-11-11 23:15:21 +01:00
README.md Add 73 vendors, two categories, and punnier jokes 2026-11-11 23:37:14 +01:00
vendors.yaml Add 73 vendors, two categories, and punnier jokes 2026-11-11 23:37:14 +01:00

goofymacs.net

Goofy MAC addresses for IX peering LANs: a real IEEE-registered OUI of a vendor you would never expect on a peering LAN (vending machines, washing machines, desk phones, a BBQ), plus three random bytes. Your router then shows up in ARP tables and IX portals as something it is not.

Live at https://goofymacs.net/.

Use

$ curl goofymacs.net
00:22:16:a3:5f:09
SHIBAURA VENDING MACHINE CORPORATION  (vending)
Your AMS-IX router is now a vending machine. Exact change only.
  • The MAC is always the first line: curl -s goofymacs.net | head -1.
  • /json returns the same fields as JSON.
  • ?category=<name> limits the pick, e.g. curl goofymacs.net?category=toys. An unknown name returns the list.
  • curl, wget, HTTPie and similar get plain text, recognised by User-Agent; browsers get the page.
Category What
vending Vending machines and drinks
cash Cash handling and payment terminals
voip Desk phones
printers Printers and copiers
tv TVs, speakers, hi-fi and streaming
gadgets Phones, watches, mice and other gadgets
appliances Kitchen and laundry
home Around the house: vacuums, heating, bathroom, lighting, locks, pets
toys Toys, consoles and retro computers
gambling Slot machines
heavy Heavy machinery, cranes, lifts, power tools and one particle accelerator
vehicles Cars, trains, planes, rockets and traffic lights
farm Farm and garden
music Instruments, microphones and headsets
cameras Cameras, drones and cinema
fitness Fitness gear and sports watches

Register the MAC with your IX before you use it. Most exchanges lock a port to the MAC they know, and frames from anything else are dropped.

How a MAC is made

  • The first three bytes are an MA-L (24-bit) OUI from vendors.yaml, registered at the IEEE to exactly the vendor name shown. Every OUI there has the multicast bit off, so the MAC is unicast.
  • The last three bytes come from PHP's random_bytes(), a fresh pick per request.
  • Medical vendors are left out on purpose.

The vendor list

vendors.yaml holds one entry per OUI: oui, vendor (exactly as in the IEEE registry), category and joke. The categories are defined in lib/goofy.php.

tools/verify.php checks the whole list against the IEEE registry: every OUI is MA-L, registered under exactly that name, unicast, not duplicated, and in a known category.

curl -s https://standards-oui.ieee.org/oui/oui.csv | php tools/verify.php -

It needs PHP with the yaml extension (php-yaml on Debian and Ubuntu).

Layout

vendors.yaml              the vendor list
lib/goofy.php             categories, picking a vendor and making the MAC
public/index.php          the page, the plain-text answer and /json
public/app.js, style.css  "Another one" and the copy button
tools/verify.php          the vendor check
.forgejo/workflows/       deploy on push to main

Deploy

A push to main deploys to boromir.ams1 through the Forgejo runner there: lint, the vendor check against a fresh copy of the IEEE registry, then git reset --hard to the pushed commit in /var/www/domains/goofymacs.net and a check that /, /json and the page answer. Apache serves public/ behind Nginx Proxy Manager, which handles TLS.

Licence

MIT, see LICENSE.