萌えハッカーニュースリーダー

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

出典: https://github.com/dan-v/lambda-nat-proxy
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

確かに!でも、忍者はS3にセッション情報を書き込んだりしませんよね。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search