<div dir="ltr"><p>That’s exactly right — and thank you so much for such a thorough response.</p><p>We’re aiming to support MASQUE as part of evolving our product, and Mosh came up as a consistent use case that makes it harder for people to adopt Pomerium as it stands today (or any identity-aware proxy, really). With MASQUE enabling datagram-level HTTP traffic and Apple likely supporting it soon, we’re trying to stay ahead of the curve. I figured if there’s a way to help our customers and Mosh at the same time by adding CONNECT-UDP support, it’s worth exploring.</p><p>Pomerium is fully committed to providing Zero Trust without needing a tunneling client (similar to UberProxy, which I assume you know well). The GitHub issue I linked was more about highlighting the core problem: supporting proxied UDP. Nothing handles this particularly well right now, especially without requiring a client. Wrapping something like <code>socat</code> or quic-go to manage CONNECT-UDP and rewrite UDP traffic to the proxy is an option, but at that point, you lose the key benefits of a transparent proxy.</p><p>From my perspective, if there’s a way to make life easier for our customers while contributing to open source, I’ll always go for it. For example, I’m currently working on adding generic JWT auth to ArgoCD for similar reasons.</p><p>Thanks again for your time and guidance — it’s super helpful.</p><p>Best,<br><br>Wes</p></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 25, 2024 at 12:54 PM Alex Chernyakhovsky <<a href="mailto:achernya@mit.edu">achernya@mit.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Hi Wes,</div><div dir="auto"><br></div><div dir="auto">Thanks for reaching out. I’m one of the mosh maintainrrs, and one of the contributors to that RFC.</div><div dir="auto"><br></div><div dir="auto">To start out with, you should probably reference the latest version of that document, <div dir="auto"><a href="https://datatracker.ietf.org/doc/html/rfc9298" target="_blank">https://datatracker.ietf.org/doc/html/rfc9298</a>.</div><div dir="auto"><br></div><div dir="auto">From there, things get a little complicated. The Github issue you reference started out as a ProxyCommand issue with ssh. This is not something that can be resolved in the mosh codebase alone, as mosh uses UDP and (to my knowledge) there’s no way to create a UDP tunnel over ssh.</div><div dir="auto"><br></div><div dir="auto">Leveraging CONNECT-UDP could be done with an outside codebase, such as quic-go (<a href="https://quic-go.net/docs/connect-udp/" target="_blank">https://quic-go.net/docs/connect-udp/</a>) and having your own proxy tunnel client.</div><div dir="auto"><br></div><div dir="auto">Another way to do this would be to modify mosh to natively have a CONNECT-UDP-aware client, rather than using the socket(7) APIs directly. However, this is challenging, as the highest-quality C++ QUIC implementation, Google QUICHE (<div dir="auto"><a href="https://github.com/google/quiche" target="_blank">https://github.com/google/quiche</a>) is going to be tough to get packaged with popular linux distributions like Debian due to its pervasive use of Bazel.</div><div dir="auto"><br></div><div dir="auto">In general, I have aspirations to make mosh move over to QUIC or H3 entirely, but that’s a far-away project. In an ideal world, this would be merged with SSH-over-H3 efforts, such as <div><a href="https://github.com/francoismichel/ssh3" target="_blank">https://github.com/francoismichel/ssh3</a></div><div dir="auto"><br></div><div dir="auto">What aspects of CONNECT-UDP are you interested in supporting, here? I see from your email that you’re affiliated with P<span style="font-family:-apple-system,helveticaneue;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)">omerium — is it fair to assume you’re hoping to support a zero-trust proxy for mosh?</span></div><div dir="auto"><span style="font-family:-apple-system,helveticaneue;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)"><br></span></div><div dir="auto"><span style="font-family:-apple-system,helveticaneue;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)">Sincerely,</span></div><div dir="auto"><span style="font-family:-apple-system,helveticaneue;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)">-Alex</span></div></div></div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Nov 24, 2024 at 7:18 PM Wes Medford <<a href="mailto:wmedford@pomerium.com" target="_blank">wmedford@pomerium.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Keith, <br><br>My name is Wes, and I came across some old issues in Mosh, specifically this one <br><br><a href="https://github.com/mobile-shell/mosh/issues/285" target="_blank">https://github.com/mobile-shell/mosh/issues/285</a><br><br>It seems like newer proxies might be able to support this now as long as connections are initialized using CONNECT-UDP (<a href="https://www.ietf.org/archive/id/draft-schinazi-masque-connect-udp-00.html" target="_blank">https://www.ietf.org/archive/id/draft-schinazi-masque-connect-udp-00.html</a>). I'd love to get this set up, but I'm not sure the best place to start in Mosh's codebase. Any shot you could point me in the right direction?<br><br>Thank you, </div><div dir="ltr"><br><br>Wes Medford</div>
_______________________________________________<br>
mosh-devel mailing list<br>
<a href="mailto:mosh-devel@mit.edu" target="_blank">mosh-devel@mit.edu</a><br>
<a href="https://mailman.mit.edu/mailman/listinfo/mosh-devel" rel="noreferrer" target="_blank">https://mailman.mit.edu/mailman/listinfo/mosh-devel</a><br>
</blockquote></div></div>
</blockquote></div>