All posts by Tor Håkon Haugen

Pay close attention to your network headers

Summary: BIG-IP from F5 does not seem to honor the “Expect: 100-Continue” header by default, and changes must be made on the F5 appliance.


Recently, an network application, which have worked since 2017, stopped working. The application is straigh forward enough. It checks if a service is working by doing (mainly) two things:

  1. Perform a “GET” using HTTP/1.1 to check for status 200
  2. Authenticate using Oauth 2.0 and receiving an access_token

After a change was made to the endpoint, switching to BIG-IP from F5, the second step failed. Running the program in Visual Studio produced the following error message:

The underlying connection was closed: An unexpected error occurred on a receive.

Searching for this error message will provide you with a lot of various suggestions, mostly related to the TLS protocol.

When I upgraded the project from .Net 4.8 to .Net 8.0, it started working. One difference I saw during the debugging was the headers sent by the application.

Header sent using .Net 4.8:

Content-Type: application/x-www-form-urlencoded
Host: example.com
Content-Length: 118
Expect: 100-continue
Connection: Keep-Alive

Header sent using .Net 8.0:

Content-Type: application/x-www-form-urlencoded
Content-Length: 118

A quick Google search on the phrase “Expect: 100-continue fails on F5” produced both an explanation and a fix. The short answer is that while the client is waiting for a “100 Continue” message, the F5 device is wating for more data.

References:

  • https://my.f5.com/manage/s/article/K94382824
  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100

My Year in Books

Another year is over, and it is time to look back and review my reading habit. Last year my goal was to read 40 books. Not because I was anywhere near to reach that number in 2022, but because I happen to turn forty (years) in 2023, and I thought it would be an interesting challenge.

Picture of 3 of the books I read in 2023: How to kill your family, Spare and The Book Theif.
3 of the books I read in 2023

Now, I’m going to be honest and upfront: I did not achieve the goal of 40 books. Not even close. I ended up reading just 25 books. Meaning 25 new books. Re-reading books, blogs, and articles are not counted.

According to Goodreads, I read 9,661 pages, although I would take that with a grain of salt, and that the average book length was 386 pages. Again, grain of salt.

Looking back at last year’s post I see that I had not finished Barack Obamas brick of a book, “A Promised Land”, and this still rings true. Maybe this year I will be able to pick it up and finish it.

Of the 25 books that I did manage to finish, I would like to mention the following five that I really enjoyed reading, in no particular order.

How to Kill Your Family – by Bella Mackie

A sharp and witty book about killing family members. It sounds bad, but it is not. It is funny, sharp and witty. Highly recommended.

The Book Thief – by Markus Zusak

This book is unusual in that it is narrated by death. It tells a captivating story about a young girl growing up in Nazi Germany and the following war. She also learns to read and steels a few books along the way.

Spare – by Prince Harry

Prince Harry tells his story about how it was like growing up in the royal family, sometimes referred to as “the firm”, and how ruthless the British media can be. He writes honest, as far as I can tell. In the end, as we know, he chose to leave the royal family to create and protect his own family.

Doom Guy: Life in First Person – by John Romero

Co-founder of Id Software, the company that created games such as Commander Keen, Wolfenstein 3D and most notably Doom and Quake, writes about his childhood years and how that formed him, and follows up with how work as affected his personal life, and how his personal life has affected his work.

Surely You’re Joking Mr. Feynman – by Richard P. Feynman

This is a book with anecdotes from Mr. Feynman life, the Nobel prize winning physicist. Reading these stories, you would never have guessed that this guy worked on the Manhattan Project (the atomic bomb) during the war. He is one witty person.

Running Fedora Linux

I’m impressed. Really, I am. After getting tired of Windows 11, which didn’t take long to be honest, I finally got the push I needed to install Linux as my daily operating system. I first installed Ubuntu, since I have years of experience with it on the server side.

Well, that did not last. Ubuntu has introduced something called ‘Snaps’, which I did not make any effort to understand — except that it keeps crashing on my machine.

I also tested SUSE at some point, but I’m pretty sure I ditched it because I could not get the external monitors to work on it. To be fair, getting DisplayLink drivers is not as easy as it should be. This is due to the docking station I use, I guess.

Finally, I found Fedora with support for the mentioned DisplayLink. I still have to compile ‘evdi’ each time I get a kernel upgrade, but it’s a trouble I’m willing to go through for a decent setup.

What really sold me was when I installed the KDE desktop environment. I don’t understand why this is not default. It is way ahead of Gnome, which seems to be default on both Ubuntu and Fedora. Way, way ahead. It’s insane!

So, yes. Finally, after many painful years with Windows (my old desktop machine has Windows 8.1, which is still better than Windows 10), I finally have a desktop environment that works with me, and not against me. With the one exception on compiling DisplayLink drivers, but I can’t blame that on Fedora. It’s the people making DisplayLinks fault.

DisplayLinks logo, promising more that it can keep.
Yeah, this is not entirely true

IPv6 on OpenWRT and Altibox

I spent too much time getting IPv6 to work on OpenWRT (version 22.03.5) and Altibox, my local ISP. The first issue was getting an IPv6 address in the first place, but that seems to just have fixed itself and I have no idea why. The second issue was to get OpenWRT to hand out IPv6 addresses to the clients on my network. I tried this guide from Nils Norman Haukås (in Norwegian), but that did not help in this case.

So below is just a ton of screenshots in case I need to do this again at some point in the future. Or maybe it will help you. At this point you should have a working IPv6 address on the wan6 interface.

DHCP Server for LAN (IPv6)

Go to “Network->Interfaces” and select “Edit” on the lan interface and verify the following under IPv6 Settings. When you set RA-Service to “server mode” a new tab will show up called IPv6 RA Settings.

Interface Settings for WAN6

Click on “Save & Apply” on the main interface tab (Network->Interfaces).

The Easter Detox

I’ve been doing my digital detox again this Easter. Although, truth be told, it is probably also a people detox. A noise detox. A get away-from-it-all detox. But it works. The solitude was…enriching.

Still, I kind of crave more of it. More away-from-it-all. To just disappear. Completely.

Maybe someday.

The activities this Easter was as follows: eating, sleeping, reading and kayaking.

A picture of Ryvarden lighthouse as seen from a kayak.

I highly recommend getting away from it all. Just be prepared that you probably will experience withdraws when your trusty old phone is turned of and hidden away. Luckily this ain’t my first rodeo, and I am perfectly fine letting my streak on Wordle wither away.

Having said that; it was nice with a shower after 5 days.