jamilbk
Here are my notes so far after digging into this with Claude + defensive access:
1. Not just an MPTCP thing - any received IPv4 packet with options creates the problematic conditions.
2. Also appears that using NetLabel/CIPSO (SELinux or Smack with a CIPSOV4 mapping) creates the same conditions that a packet with IP options would. If you're using these, it might mean that dropping IPv4 packets with IP options might not fully mitigate.
3. At least for our test VMs in Azure (accelerated networking) I wasn't able to get any IPv4 packets with options through, from three different US-based ISPs. Unfortunately Microsoft publishes no docs on whether the fabric drops this or not, so YMMV.
We're using a simple XDP program to mitigate until a patched kernel is available (thanks @tptacek for the idea):
Finding Bugs
Manage Firezone as code with Terraform
Firezone REST API generally available
WireGuard-Native NAT Traversal
If you're embarking upon a refactoring / rewriting journey for your docs, the only advice I'd share is to actually read the website beginning to end before starting. Especially this page: https://diataxis.fr/complex-hierarchies/. The guide is (unsurprisingly) very well written, and it's easy to internalize the concepts because they're repeated often.
The enterprise identity crisis: Who's Alice?
The identity join problem: Linking SSO profiles to directory users
Sans-IO: The secret to effective Rust for network services (2024)
Against DNSSEC (2015)
Two related contexts that I've found to be much more friendly for this:
1. Climbing gyms, for reasons mentioned previously
2. The sauna! Actually very ideal for convos with strangers. Max overlap time is ~15 minutes, people are generally relaxed, no phones to distract and if it doesn't go well either party can always leave.
Kudos to Rivian for making this a supported user privacy feature.
We've switched to CDC using Postgres which emits into another (non-replicated) write-optimized table. The replication connection maintains a 'subject' variable to provide audit context for each INSERT/UPDATE/DELETE. So far, CDC has worked very well for us in this manner (Elixir / Postgrex).
I do think soft-deletes have their place in this world, maybe for user-facing "restore deleted" features. I don't think compliance or audit trails are the right place for them however.
If the source code is available for you to fork, modify, and maintain as you see fit, what's the complaining really about?
Hard Mode Rust (2022)
libp2p [4] may be what you're after if you want something geared more towards general purpose connectivity.
[1] https://datatracker.ietf.org/doc/html/rfc8445
[2] https://github.com/pion/webrtc
Show HN: Test your WireGuard connectivity and see global stats, no client needed
Hi HN,Some misbehaving networks drop WireGuard packets either by accident or on purpose. Commonly the latter is done with simple DPI rules that block the handshake initiation [1], but it could be applied to other message types as well.We thought it would be great if there was tool for folks to use as a quick litmus test to see if this happening for them, without having to configure a client to...
We do have a self-hosted community support channel on Discord if you are feeling adventurous: https://discord.gg/DY8gxpSgep
I would recommend starting here with a local development cluster:
https://github.com/firezone/firezone/blob/main/docs/CONTRIBU...
https://github.com/firezone/firezone/issues/3553
We didn't invent these techniques. Host candidates are part of standard ICE:
https://datatracker.ietf.org/doc/html/rfc8445#section-5.1.1....
It took a couple iterations to get it right - lots of fun edge cases involved. We ended up having to build automatic NAT64 and 46 for DNS resources to handle some of them. We wrote a post on how this works: https://www.firezone.dev/blog/how-dns-works-in-firezone
In terms of attributes for allowing access, we currently support time-based, country/region-based, auth method, and IP-based, with more planned: https://www.firezone.dev/kb/deploy/policies#conditional-acce...
Erlang/OTP has so far been an excellent platform to build on for a product like Firezone. We chose it specifically for its reputation for powering soft realtime systems. Phoenix Channels are an added bonus that allow us to push all updates where they need to go, in just a few hundred lines of code.
We couldn't be happier with the stack choice.