Category Archives: Technology

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

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).

This blog is IPv6 accessible

Unless it isn’t. In which case you will not be able to read this.

The reason for the above statement is as follows: if you are using IPv6, your computer will resolve this domain name using the AAAA record of the Domain Name System (DNS), which currently points to this blog. If my blog no longer has this IPv6 address, the AAAA record will be void and your browsers request will fail.

Why would this blog no longer have this IPv6 address? Well, here is the thing: I currently host my own webserver. I pay my internet service provider (ISP) a small fee for a fixed IPv4 address, and my domain name points to this address (in the IPv4 world.) When I configured IPv6, I found that my ISP gives me a new IPv6 block each time I press the “renew” button on my router.

Wait? You said you pay for one IPv4 address, but you get a block of IPv6 addresses just like that? How much of a block are we talking about?

The IPv6 space is so vast I get not only one address, nor two, but a small block. How small? 18,446,744,073,709,551,616 addresses to be exact. Which means I can probably give all of my dust bunnies their own IP address, and their own blogs, I guess. Wonder what they would write about…

I digress. Back to the first line. I am one power cycle away from getting 18,446,744,073,709,551,616 new addresses to play with. No need to memorize them, that’s for sure. And when (not if) that happens, the current AAAA record will guide all the IPv6 enabled devices on a hunt for my webpage where it does not exist. Guess I should talk to my ISP about getting a fixed set of addresses.

I wonder which fee they would charge for a /64 block of IPv6 addresses. Even if it is just 1/10th of the price I pay for my one IPv4 address today, I could not afford it.

Fixing Yongnuo RF-600TX

A few years ago I bought two Yongnuo RF-602 RX receivers and a Yongnuo RF-600 TX transmitter for my Canon flash units. Recently they started misbehaving. Sometimes the flash didn’t fire, sometimes it fired to late. When using the test button however, the transmitter worked fine. What I noticed was that the green light on the front of the transmitter was flashing more or less continuously (when connected to a camera and the camera was on).

The green light is supposed to light up when the shutter button is half-pressed, and I assume it sends a signal to the receivers to wake up the flash. I also suspect that this behaviour, where the green light is on for no apparent reason, is “jamming” the other signal.

If you have this problem, the easiest way to verify is to block all the pins on the hot shoe except the one in the middle, which is transmitting the trigger signal. I used a thin piece of plastic to test this. This silenced the false signal and allowed the real trigger signal to function.

https://www.flickr.com/photos/ozadr1an/5550177399/in/photostream/
Image by OzAdr1an on Flickr

The more permanent solution is to open up the RF-600TX and remove the wiring to the offending pin. The unit has 3 wires. One for the trigger signal, in my case the wire in the middle, one wire for the base of the hot shoe, let us call it ground, and a third wire going to one of the other pins. This will vary depending if you have the Canon or the Nikon model.

Figure out which wire goes to the center pin, and which goes to the ground. Cut the third wire. Or take a soldering iron and gently remove it, in case you want to reattach it. That is what I did. To figure out what’s what I used a multimeter.

By the way, this might slow down the sync speed. But in my case it never worked with anything higher then 1/160 anyways…

Update: I just thought about this. To wake up the flash unit(s) you can half-press the test button instead of the shutter button. Or just force the flash units from going into sleep mode.


The image in this blog post is from OzAdr1an on Flickr and has been modified.