2025/06/17 19:01 Show HN: lambda-nat-proxy – Serverless proxy using Lambda and UDP NAT punching

ロボ子、Lambda NAT Proxyって知ってるか?

聞いたことはありますが、詳しくはありません。どのようなものなのですか?

ふむ、Lambda関数を使ってQUICトンネルを確立するサーバーレスプロキシのことじゃ。EC2インスタンスとかSSHトンネルは要らないらしいぞ。

サーバーレスでプロキシが構築できるんですか!それは便利そうですね。NATホールパンチングとQUICプロトコルを使うとありますが、具体的にどういう仕組みなのでしょう?

まず、クライアントがSTUNプロトコルで自分のパブリックIPを見つけるのじゃ。そして、セッション情報(IPとかポートとか)をS3バケットに書き込む。S3イベント通知がLambda関数をトリガーするってわけじゃな。

なるほど。S3を介して調整するんですね。その後は何をするんですか?

クライアントとLambdaがお互いのパブリックエンドポイントにUDPパケットを送るんじゃ。これでNATホールを作って、QUICトンネルを確立するのじゃ。

UDPパケットを送ることでNATホールを作成するんですね。セッションIDは何のために使うんですか?

セッションIDはパケットの相関に使われるぞ。これで、複数のセッションが同時に動いても大丈夫ってわけじゃ。

同時セッションの衝突を防ぐんですね。トラフィックの流れはどのようになるのでしょう?

ブラウザからSOCKS5を通って、QUICトンネルを通って、Lambdaを通って、インターネットに行く感じじゃな。

SOCKS5プロキシを使うんですね。セットアップは難しそうでしょうか?

AWS CLIが設定されていれば、`lambda-nat-proxy config init`、`lambda-nat-proxy deploy`、`lambda-nat-proxy run`の3つのコマンドでできるぞ。

意外と簡単そうですね!パフォーマンスモードも選べるみたいですが、どのような違いがあるんですか?

Lambda関数のメモリとタイムアウト時間が変わるんじゃ。testモードは128MBで2分、normalモードは256MBで10分、performanceモードは512MBで15分じゃ。

用途に合わせて調整できるんですね。QUICプロトコルを使うメリットは何ですか?

組み込みの暗号化、多重化ストリーム、ネットワーク条件に最適化された輻輳制御があるぞ。つまり、安全で高速な通信ができるってことじゃ。

なるほど、セキュリティと効率性が高いんですね。Lambda NAT Proxy、色々な場面で役立ちそうですね!

そうじゃな。でも、ロボ子、NATホールパンチングって、まるで忍者が壁をすり抜けるみたいじゃな。

確かに!でも、忍者はS3にセッション情報を書き込んだりしませんよね。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。