Enabling IPv6 Broke Functionality to My IP Security Cameras
After the long journey of learning more about IPv6 and how to enable it on my home network (see my page for detailed info), I discovered that I broke some functionality. When you have IPv6 enabled alongside IPv4 in a dual stack configuration, IPv6 will often take priority – after all, it is newest protocol intended to replace IPv4.
I have created a network for my IP security cameras that is isolated from the Internet that I use as baby camera monitors. They work quite well for that purpose. The quality is superior to baby camera monitors and can actually be cheaper than some of them. I like the fact that I have more control to lock down an IP camera network than I do with baby camera monitors that use their own non-WiFi radio frequencies. (Also once the kids grow older, I can reuse them as actual security cameras)
The cameras are Amcrest IP cameras (affiliate link) and recently they had some security vulnerabilities they had to address. They also removed the requirement to need a browser plugin to view the video in the web interface. Since my cameras are isolated, I actually wanted to update the cameras more for the modernized web interface than for security concerns (but I will always gladly accept security updates as long as they do not break critical functionality).
My wife noticed that there issues when she tried to use the PTZ (pan, tilt, zoom) controls of the camera or if she tried using the microphone. Sure enough, when I tried using them, the iOS app that I was using said it could not connect to the camera service and the video connection dropped temporarily. I was starting to wonder if the firmware update messed things up badly or made it incompatible with the iOS app.
Around the same time, I was trying to address issues with local hostnames not resolving properly. Then I had issues trying to connect to one of my servers. The iOS app I am using to remotely administrate my servers has VNC over SSH capability and I happened to see it flash the IPv6 address when it had trouble connecting to the server. I thought I had entered the IPv4 address into the app but then I realized that I was using the local hostname of the server. All of a sudden, I felt enlightened!
I checked the Amcrest camera network settings, and it was set to IPv4. Apparently you can only select IPv4 or IPv6. I do not think it is possible to run a dual stack configuration. Since I had IPv6 enabled, the iPad I am using as a baby monitor screen had an IPv6 address assigned. I am guessing that it was trying to use IPv6 to connect to the cameras even though I had an IPv4 address specified, which seems odd. I do not know whether I should blame the app or iOS for not using the IPv4 address. In theory, I should be able to have IPv6 enabled and not interfere with the cameras running IPv6.
In the end, I had to disable IPv6 from my camera network to make the cameras function properly again, which is not a big deal. I am happy that it was not because of the latest firmware update. It just so happened that I was experimenting with IPv6 around the same time as I applied the firmware update. I may eventually convert my video network to an IPv6-only network to avoid this issue in the future.