Brad, you can bind multiple, separate instances of the tcp stack to individual interfaces as needed. You can have an entire tcp stack rooted at, e.g., /net.alt; this was done at Bell Labs and it's why plan 9 never needed NAT. /net.alt was used for "outside the labs" traffic.
We also did this on the Blue Gene supercomputers to provide separate stacks for the internal and external networks. There's nothing special about the name /net. The address strings you use (tcp!addr!port) have an implicit /net prefix, but you can supply one of your own. e.g. telnet tcp!google.com!80 and telnet /net/tcp!google.com!80 both use the tcp stack rooted at /net. but telnet /bradsnet/tcp!google.com!80 is perfectly legal as long as you've set up a stack on /bradsnet I asked Claude to summarize and it did a pretty good job. Show how one can bind a new plan 9 ip stack instance to a particular interface and now add another stack in /net.alt Claude correctly showed two different interfaces. Further, there's nothing special about names like /net/ether0, etc: these are conventions, and for special cases, like tailscale, you can make your own. The key point is that none of these names are reserved in any way, so it's very easy to have, e.g., entirely independent IP stacks, each one owning one or more interfaces . Plan 9 had working network name spaces about 20 years before Linux ... ron p.s. It's been years since I did this, so I'm sure people can correct me on details. On Tue, Apr 1, 2025 at 8:35 AM <[email protected]> wrote: > Skip asked me to make Tailscale work on Plan 9. > > I tried, but ran into problems so I asked Russ for some help. Together, we > just got it all mostly working. > > Blog post 1 of 2 is now at > https://tailscale.com/blog/tailscale-enterprise-plan-9-support > > The followup blog post tomorrow will go into details about what we did. > > There are a number of shortcuts and TODOs and things I'll need to ask for > more help on. (e.g. how do I make an outgoing TCP connection bound to a > specific interface or ignoring a certain route in the routing table? I > couldn't figure that out, and that's necessary for "exit node" support... > so we're able to make connections out to control/data plane services with > your "real" underlay network card and ignore the 0.0.0.0/0, ::0/0 routes > back into the Tailscale network device.) > > There will be a Google Meet "webinar" (it was hard to write that word > without cringing, even as a joke) in about 24 hours if anybody wants to > hang out and chat about any of this, or just about Plan 9 in general: > https://ftp.plan9.ts.net/webinar has a time & will redirect to the Google > Meet URL tomorrow. > > - Brad > > P.S. Sorry? :) > > > > *9fans <https://9fans.topicbox.com/latest>* / 9fans / see discussions > <https://9fans.topicbox.com/groups/9fans> + participants > <https://9fans.topicbox.com/groups/9fans/members> + delivery options > <https://9fans.topicbox.com/groups/9fans/subscription> Permalink > <https://9fans.topicbox.com/groups/9fans/T4cecdedbabdedc00-Mdd1f073aa0b7d712f7da97ee> > ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/T4cecdedbabdedc00-M234cb1e3bdf917cff0bc4b61 Delivery options: https://9fans.topicbox.com/groups/9fans/subscription
