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?
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.
Rules:
Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.
No spam posting.
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it’s not obvious why your post topic revolves around selfhosting, please include details to make it clear.
Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
No trolling.
Resources:
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
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