[https://docs.libp2p.io/concepts/nat/autonat/](https://docs.libp2p.io/concepts/nat/autonat/)
[https://github.com/libp2p/specs/blob/master/autonat/README.md](https://github.com/libp2p/specs/blob/master/autonat/README.md)
- [[libp2p]]が実装している、ノードがNATの後ろにいるかどうか判断するプロトコル
- すげーシンプル(kekeho)
- P2Pシステムに於いて、NATの裏にいて到達不可能なアドレスを広告すると、他のノードがそのアドレスにダイヤルしようとして失敗し、無駄なリソースを消費してしまう。→ NATの裏にいるかどうか判別する必要
プロトコル
(ノードが、自身がNATの裏にいるかどうか確かめたいシーン)
- ノードはMultiaddrのリストを含む`Dial`メッセージを他のピアに送る
- ピアはそれらのアドレスへ接続を試みる
- 少なくとも1つの接続が成功した場合、StatusがSUCCESSな`DialResponse`を返す
- 失敗した場合、StatusがERRORなDialResponseを返す
- ノードはDialResponseを見て自身がNATのうらにいるかチェックできる
P2Pシステムにおいて、こんな感じでやるとよい
- NATのうらにいるノード
- プライベートアドレスを広告しない
- リレーにつなげて、リレーのアドレスをアドバイスする
- パブリックなノード
- リレーとしての役割も担う