UDP Broadcasting And The Brave New World Of IPv6

After recently working our way through UDP broadcasting and network subnetting all in the comfort zone of IPv4, it’s time to address the elephant in the room, the one wearing a bright neon ‘IPv6’ sign. Although it’s still very much a rumor at this point, supposedly IPv6 is slated to replace the venerable IPv4 protocol. Rather than just being IPv4-but-with-more-addresses, its designers took the opportunity to basically completely redesign the protocol for the futuristic world of the late 90s and the early 2000s.

Joking aside, IPv6 having been introduced in 1995 and still struggling to meaningfully displace IPv4 does invite some worries about just how easy it is to switch between these two fundamental internet protocols. Say if we wanted to join the future of the 2000s and adapt our software to speak IPv6 instead of IPv4, what would change about the aforementioned aspects of IPv4 UDP broadcasting and IPv4 subnetting?

Speaking as an ignorant developer who mostly knows IPv6 from those weird and hard to remember network addresses, as well as many broken router implementations, I’m not entirely convinced that I’m going to like what I’ll see.

Continue reading “UDP Broadcasting And The Brave New World Of IPv6” →

DIY Router On X86 E-Waste: OpenWrt And OPNsense

In previous installments of this series we looked at how creating a DIY router using an e-waste-level PC has changed over the years, before attempting to boot OpenWrt for x86 on it. After an initial SD card booting failure on one system, another system with a newer mainboard – an Intel Board D2500CC – was used which happily booted OpenWrt from an SD card inserted into a USB card reader.

Unfortunately, OpenWrt didn’t see any usable Ethernet interfaces despite having no less than four Intel Ethernet controllers and two hooked up to active networks. After recently getting back to the project, I found out why both onboard Intel 82574L Ethernet controllers didn’t show up in OpenWrt: the drivers for the Intel 82574L controllers are in the e1000e driver package, while only the e1000 package is present in the provided x86 image. This issue persists in the ‘generic’ image profile to this day.

Yet rather than diving head-first into building my own image that includes the kmod-e1000e package, I decided to give OPNsense a shake first.

Continue reading “DIY Router On X86 E-Waste: OpenWrt And OPNsense” →

Fixing A Ubiquiti 16-Port PoE Switch With An Extra Hole

After saving a £300, 16-port Ubiquiti network switch from getting tossed into the trash, [Buy It Fix It] got the honor of trying to repair it. With four ports and their associated PoE function having some major issues it looked like it might take some debugging, but after taking the lid off, the cause seemed rather obvious.

One of the Broadcom BCM5911 controller chips had a rather suspicious chip of the plastic packaging missing, with additional probing of connected components showing that numerous MOSFETs and a diode having had their proverbial guts blown out and were shorted as well. Whatever happened to some connected Ethernet device would appear to have left a serious trail of damage that nearly wrecked the entire switch.

The biggest challenge here was probably to find a replacement for the Broadcom IC, as this isn’t an IC that stores like Digikey or Mouser stock any more. Fortunately it was still available for sale over at AliExpress for £1.84, with the usual caveat that it could be salvage, fake, a factory reject, etc. In this case it appears that it was a legit Broadcom IC, with the four affected ports springing back to life including powering a PoE camera.

With a total cost of about £5 plus the time invested it wasn’t a bad deal to save a pretty nice PoE switch with 16 Ethernet and 2 SFP ports.

Continue reading “Fixing A Ubiquiti 16-Port PoE Switch With An Extra Hole” →

Native SMB3 Client Brings Modern NAS Access To 20-Year-Old PowerPC Macs

As software updates cease for operating systems, they eventually begin to lose access to parts of the LAN and internet due to out of date encryption features, as well as the inability to handle file sharing protocols like SBM3, which is somewhat of a necessity if you have e.g. a NAS on the LAN. Such too was the case with [watermark_hd]’s 20-year old PowerPC Macs and their installations of OS X Tiger and Leopard.

Cue Aqualink, a native SMB3 client for these older OS X versions that uses [Ronnie Sahlberg]’s libsmb2 server/client library for SMB2 and SBM3. The source code can be found over on GitHub, along with a Japanese translation. By using a local WebDAV server Tiger’s built-in mount_webdav feature can be used to mount these remote volumes.

While you can often still use SMB1 even on modern Windows and Linux/BSD via Samba, allowing even retro systems like these PowerMacs to speak SMB3 is at least a great boost for network security, even if the aforementioned encryption shortcomings mean that you cannot quite run encrypted file shares yet.

Although OS X eventually began to adopt modern SMB versions, some of us may remember how incredibly buggy they were, to the point that us OS X users often had to fall back to CIFS (SMB 1.0), so this is another potential use for this Aqualink application.

Snooping Flume Water Monitor Data On The Wire

[Stephen] had an interesting piece of hardware at home—namely, a Flume water monitor. It’s a smart device which reports usage data to Flume’s servers, and the water utility in turn. He’d previously determined how the device worked mechanically to monitor water flow, but he had a greater goal—figuring out how to sniff the reported data as it passed through his network on its way to Flume servers.

The Flume rig has a sensor installed in the water line, which communicates to a bridge device that then hooks up to the Internet. [Stephen] had an early win, figuring out how to trick the bridge unit of the Flume water sensor into sending data in plaintext. This was as simple as corrupting the public key in the device’s flash. However, this wasn’t a perfect solution—as the corrupt key stopped the device from authenticating with Flume’s servers. Further diving into the LibHydrogen encryption implementation, however, revealed that the device was apparently authenticating without using session keys, relying only on a static device secret key which can be harvested from the onboard flash. This allowed [Stephen] to build a tool to sit in between the bridge and the Flume servers, forwarding traffic seamlessly while decrypting and saving it locally at the same time.

With this setup, [Stephen] was able to locally log water flow and status data from the sensor. It does come with a caveat, that the man-in-the-middle setup could block the hardware from receiving firmware updates in future. It’s also worth checking out [Stephen’s] earlier work on demystifying the Flume hardware, too. The relay tool is available on GitHub for the curious.

We love seeing hackers figure out how to interface utility meters and similar devices, in legal and appropriate manners, of course. If you’re tinkering in this realm yourself, feel free to let us know on the tipsline!

Linux Fu: Heads Or Tails For VPN

If you’ve done much networking, you surely know the frustration of trying to connect to something, say a Raspberry Pi, that lives behind your consumer router. There are a number of solutions for this, ranging from opening ports on your router along with dynamic DNS. Or, you can operate a VPN server on your network. Modern Linux has a facility called Wireguard that lets you create secure network tunnels very easily, but it is a little difficult to set up. But there are tools like Tailscale that can do most of the work for you. There’s only one problem: Tailscale is sorta-kinda free, but not really. But it turns out, you can build your own Tailscale network, and it is easier than you might imagine.

In all fairness, Tailscale’s free tier is good and recently got even more generous, allowing unlimited nodes and up to six users. That’s plenty for most hackers. However, as we’ve seen before, what they can give they can also take away. Besides, there are some extra services you still have to pay for if you want them, but overall, the free tier is more than enough for most people.

On the other hand, no matter how great the free tier may be, some people don’t want to run things on other people’s hardware. Or you need that 7th user. Or you need paywalled features. No worries. Headscale is a self-hosted service that can do nearly everything the cloud portion of Tailscale does, and if you have a place to host it, you can be your own Tailscale server.

For the client side? That’s the best part. Headscale works seamlessly with the existing Tailscale clients. You simply have to point them to your server instead of the defaults.

Continue reading “Linux Fu: Heads Or Tails For VPN” →

The Need For Speed: Internet Speed Measurement (or DIY?)

Car enthusiasts want to know how quickly they can make a quarter mile. Weightlifters are forever trying to add one more plate to the bar. Internet denizens have their own favorite number to brag about: the result from a speed test.

The ritual is familiar. Close a few browser tabs, click the big “Go” button, and watch the needle climb. Perhaps you pay for gigabit service and see 940 megabits per second, which produces a satisfied nod. Perhaps you see 299 megabits and begin obsessing over network hardware. But before you get too excited either way, try another test. There is a fair chance it will give you a different answer.

That does not necessarily mean one test is lying. “Internet speed” is not a single physical quantity waiting to be measured. A speed test measures the performance of a particular device, over a particular local connection, through a particular ISP route, to a particular server, at a particular time using a particular test method. Change any of those things and the answer can change too. Continue reading “The Need For Speed: Internet Speed Measurement (or DIY?)” →