Is anybody using only IPv6 in their home lab? I keep running into weird problems where some services use only IPv6 and are “invisible” to everyone (I’m looking at you, Java!) I end up disabling IPv6 to force everything to the same protocol, but I started wondering, “why not disable IPv4 instead?” I’d have half as many firewall rules, routes and configurations. What are the risks?
Unfortunately, going IPv6 only is a pain since so much stuff is still reliant on IPv4.
Can you elaborate? Hardware or software or both? Other than one network appliance, most of my stuff isn’t too old.
Now that I start thinking about it, my work stuff may be impacted.
Many websites are still IPv4 only, so you won’t be able to access them unless you set up a NAT64 gateway. Some stuff won’t work over NAT64 though.
Most recent hardware should support IPv6, but a lot of IoT devices still don’t. You can put any IoT devices on their own IPv4 network since it’s a security risk to have them on your main network though.
When troubleshooting some network shares and other issues the remedy was disable ipv6 lol. i’m not familiar with ipv6 enough to know the pros other than more IP addresses available, but since its all on mu LAN i have no need for ipv6
For your internal LAN there aren’t really any pros.
The beauty of your homelab is that you can try and break things, learn something from it and try something else.
Are you binding services to specific addresses? Normally if you bind your service to :: it will receive IPv4 connections using ::ffff:x.x.x.x addresses.
I was not binding to specific adresses, but was probably a problem with a specific release of Java (Oracle Java maybe.) My distro’s Java was doing weird video things, but the Oracle version was not, but then it could not reach outside the local computer. Debugging logs showed that it tried IPv6 and failed, then quit trying instead of falling back to IPv4. Disabling IPv6 in the Java JRE configuration solved the issue, but set me on the path to “modernize” my network stack. In hindsight, it’s probably not something that I really have the time to take on right now.
Trying IPv6 and failing is normal. Modern software that supports both is supposed to try both, but sometimes people mess it up…
In general, if you write code that connects to another computer over the network, you want to be connecting to a string, not an IP address. If you write something like
connect("lemmy.world", 443)
, it should connect over either IPv6 or IPv4. However, if you write something likeconnect(getHostByName("lemmy.world"), 443)
, that usually will return a single IP address and if that address doesn’t work then the connection fails.The Java documentation says it should just work “if everything has been done appropriately.” https://docs.oracle.com/javase/8/docs/technotes/guides/net/ipv6_guide/
Java is still borked in a dual-stack environment: https://bugs.openjdk.org/browse/JDK-8170568
As someone mentioned above, there are some soho devices I have run into that plainly just won’t work with IPv6 even though they claim to and will pull a lease. One or two I have seen just seem to stop working simply by having v6 enabled. Hours of troubleshooting. Its worth making sure someone in internet-land at least claims v6 works on any persistently trouble some devices.
I’m trying to be progressive, but after thinking outside of my little network and reading the posts here, it seems like there’s still a long way to go before I should consider it. I don’t have a split network at home and it would potentially affect everyone in the house. Additionally, I don’t have serious needs for production-grade network equipment, so the chancs of that cheap usb-to-ethernet adapter with more Chinese characters than English in the instruction sheet has a high probability of biting me.
This was sort of a wild hare thought of disabling IPv4 vs disabling IPv6 to solve a problem that’s more of an inconvenience. I am probably not ready for this undertaking. Maybe I’ll revisit it when I get around to partitioning my network.
I avoid ipv6 as much as possible.
I went IPv6-only for everything internal. The only thing that’s dual stack is the wireguard server running on the gateway. I haven’t run into any issues, mostly because my Linux distro’s package repository has many IPv6-compatible mirrors (enabled by default). For anything not in the distro’s repos, I build from source and package them up into RPMs myself, so as a side-effect, I don’t have to deal with eg. Github not supporting IPv6.
Even things with generally crappy firmware, like the APC UPS management card, Supermicro & ASRock IPMI management interfaces, etc. have worked fine in an IPv6-only setup for me.