Selfhosted
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:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
view the rest of the comments
Either use ipv6 privacy extension (enabled by default, so this can just be called ipv6) or don't enable ipv6.
That way you have working ipv6 or wait until you come to your senses. Using nat6 ipv6 isn't worth it.
I see people say “not worth it” but never expound on what exactly makes it not worth it?
Most I get is a vibe (using a metaphor) “python-like judging where people prefer to do it in a ‘pythonic’ way” but of course that’s silly. There must be more to it, but I never seen interoperability issues called out
Most (all?) advantage of ipv6 when compared to ipv4 don't work behind Nat. Thus there's no reason to use it.
Either Nat with ipv4 or don't Nat with ipv6.
Why did you want to use ipv6 when you don't want what it represents? (End to end communication/IPs)
Mobile devices are largely IPv6-only now, messing with VPN to home. The IPv6-to-4 conversion seems to be shoddy for my mobile carrier.
Not here for what it represents, just want it to work.
I haven’t run into NAT issues that I’ve noticed, would IPv6 avoid issues with cgnat that people complain about? (If/when it happens in the future)
Use ULA addresses for hosts inside your LAN, they are static, cannot be used to reach outside your LAN and use IPv6. Then give your server/VPN endpoint a real ipv6, that's your VPN endpoint. This doesn't require any nat and can be easily changed to GUA when you want to.
CGnat is a "solution" for running out of ipv4 addresses, it has the same problems as any other nat but the problems are even more noticeable because the out-facing ipv4 address changes more often than the typical home nat configuration and tricks like FTP- and other helpers don't work as well.
Ipv6 would not only avoid the issues of cgnat, it would avoid cgnat entirely because you don't need to Nat when you have enough ips.
Thanks for taking the time to go into detail on this, it helps because I just haven’t been able to put acronyms to actionable meaning from just reading blogs and posts.
How do things outside the LAN talk to things inside the LAN that have ULA addresses (which I’m assuming are equivalent of 10.0.0.0/16 idea)? Will devices that are given ULA addresses be NAT’d just like IPv4 or will they not be able to talk to the outside world on IPv6?
Edit: I am getting more what you said; you answered this: the ULA addresses will not be able to talk to the outside world on IPv6 so those devices will be IPv4-only to websites that use IPv6 too. Follow-on Q would then be, is kludging NAT for IPv6 not a better solution versus ULA addresses? Or is the clear answer just use IPv6 as intended and let the devices handle their privacy with IPv6 privacy extensions?
One big conceptual difference between IPv4 and IPv6 is the notion that any single host on the network is expected to have multiple, simultaneously-useful IPv6 addresses and this is totally normal and fine.
Any IPv6-enabled host is necessarily going to have a link-local address which can only be used to communicate with other hosts on the local network/subnet.
If your ISP offers IPv6 connectivity, or if you've set up an IPv6 tunnel from an IPv6 tunnel provider then a host on your network will also have a globally-routable IPv6 address which was assigned from your router via DHCPv6 or (more commonly) self-assigned using SLAAC (Stateless Address Autoconfiguration) which is an IPv6 way for machines to self-assign addresses is a sane, interoperable way without requiring a setup and operation of a service like DHCP(v6). Many IPv6 networks do not need to use run a DHCPv6 server at all and rely solely on SLAAC host self-assignments and local IPv6 router discovery protocols to find DNS servers and eligible gateways to other networks and the internet at large.
The block of IPv6 addresses used for your local machines is delegated by your ISP or tunnel provider. It can be static or dynamic and the underlying protocols will handle if that network range changes. IPv6 generally is tolerant of a host's public IP addresses changing at any time without disrupting connections or services.
With privacy extensions (enabled by default on all mainstream operating systems) a host on your network might have additional publicly-routable addresses which rotate frequently for privacy. Outbound traffic for the host will prefer these more private addresses for new connections. These addresses are ephemeral and change frequently.
In rare cases you might set up ULA addresses which are static and usable on your internal networks but will not be routed to the internet. They can be used for hosting services on your local network which need to potentially span multiple subnets/VLANs and in particular are useful for internal resources like name servers which cannot rely on DNS lookups for address resolution. Most networks will not use ULA addresses and normal use cases do not require them.
At any given moment, an IPv6-enabled host will have multiple active addresses all used for different types of traffic and it's important to break any assumptions you have carried over from IPv4 about the relationship between IP addresses and hosts on the network. Your host might be using a link local address to talk to another machine on a shared internal subnet while also using temporary, globally-routable IP privacy address to talk to a server on the internet. Multiple addresses can be in use at the same time to reach different endpoints in the world.
Thanks for writing this up, really highlights the effective differences.
So for the internal delegation I’d SLAAC it and let things “just work” or DHCPv6 if I cared to specify IPv6s (which I will need to to have a static IPv6 address for a server to be reached at). Thanks again!
There are very few hosts that allow only ipv6 (though there are many who only do ipv4). Ipv6 would improve internet stability and long-term communication when you're not using a nat but that isn't what you're trying to build. Seeing as you're not getting any advantage anyway I recommend ULA because it won't get in the way of possible future migration to GUA ipv6 (globally unicast address) and still run over the ipv6 network while also avoiding Nat.
It's my clear answer at least.
If you don't want that you can use ULA addresses for now and later add GUA ipv6 addresses. ULAs are meant to be used when you only have a dynamic ipv6 prefix so that internal devices can have ipv6 internet (GUA) while also having a static ipv6 address(ULA).
I got it, ULA for everything that doesn’t care, 1 GUA for the server. When everything else starts to care about the lack of IPv6 or has routing issues, convert the ULA to GUA and rock n roll.
Thanks for providing a sane way to approach it slowly and methodically!
NAT is not a firewall and it's not that great for privacy either, it's not hard to fingerprint individual devices behind NAT. There are zero cases where NAT is better than the alternatives, except when you're out of public IP's, which isn't an issue with IPv6.
So you're much better off by not trying to reinvent the wheel and using IPv6 the way it was intended. Use privacy extensions for privacy. Use proper firewall rules for security. Revel in the fact that NAT isn't fucking up your inbound connections. Do not under any circumstances force the horrible kludge that is NAT into your IPv6 network.
I gather people talk like NAT is a rung of hell, but I guess it works because I never think of it. Maybe it becomes shittastic at multiple NATs? With one router it seems straight forward to have port forwarding.
I do not understand why I want better inbound connections - but maybe if I get hit with a cgnat then I’ll understand?
Yeah multiple NAT is a lot worse, but normal NAT has a lot of corner cases too that most people just don't run into that often. For example if two computers behind NAT want to listen on the same port, that just doesn't work.
NAT is a "good enough" solution that tricked a whole generation of people growing up with it into thinking it's a good thing. While in reality the best case is that you don't run into issues and the worst case is that performance is horrible and you can't do the things you want to do. The only people that benefit from it are lazy ISPs, not their users.
I see now that a limitation I just understood for IPv4 (expose one port from one device only on the router) isn’t a thing for IPv6 working without NAT, every device on a LAN can be given a world wide routable address and expose the same port. Interesting, in my home I don’t think I’d ever run into that, but I can see issues like that pile up quick in big deployments.
Thanks for taking the time to explain all of this in detail!
You're welcome, great to see how you're taking all the comments on board!
There are more subtle problems with NAT as well. Say that PC-A opens a connection from port 1234 (to something on the internet), and PC-B opens a connection from port 1234 too. Now the router has to translate the PC-B connection to coming from port 1235 to distinguish them from each other. But if PC-C then wants to open a listening port on 1235 it won't work because the port is already in use, even though you can't see anything using that port!
NAT is full of ridiculous corner cases like that, which normal users aren't very likely to notice. But once you start self-hosting things or trying to get something like older multiplayer games working the problems pile up fast if you're unlucky.