Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WebRTCの裏側にあるNATの話 / A talk on NAT behind WebRTC

iwashi
November 27, 2022

WebRTCの裏側にあるNATの話 / A talk on NAT behind WebRTC

WebRTC Meetup Tokyo #5で講演した
「WebRTCの裏側にあるNATの話」の資料です。

●誤記修正 (2015/1/25追記)
P.66
 誤 元 1.1.1.200:80
 正 元 1.1.1.100:80
P.69
 誤 元 1.1.1.200:80
 正 元 1.1.1.100:80

iwashi

November 27, 2022
Tweet

More Decks by iwashi

Other Decks in Technology

Transcript

  1. WebRTCの裏側にあるNATの話
    - A talk on NAT behind WebRTC -
    @iwashi86 / 岩瀬 義昌
    2014/11/26 WebRTC Meetup Tokyo #5

    View Slide

  2. ●Attribute
     Name Yoshimasa Iwase
         @iwashi86
     web  iwashi.co
    ●Work
     ・Web [email protected] Com
     ・HTML5 Experts.jp Editor
    ●Recently
     ・HTML5 Experts.jpにてWebRTC特集掲載!
      

    View Slide

  3. 本題
    今日はNATの話
    (WebRTCなので特にUDPのNAT)

    View Slide

  4. https://flic.kr/p/4HKJE1
    なぜ、いまさらNAT?

    View Slide

  5. Internet
    NAT NAT
    WebRTCのクライアントは
    NAT配下に居ることが多い

    View Slide

  6. Internet
    NAT NAT
    クライアント達は何の工夫も無しには
    直接通信できない・・・
    Dropped…

    View Slide

  7. Internet
    NAT NAT
    そこで、WebRTCでは主にSTUN※
    を使って
    なんとか穴あけしている
    Reached! ☺
    STUN STUN
    ※UDP Hole Punchも

    View Slide

  8. Internet
    NAT NAT
    でも、ダメなケースもある…
    (その場合はTURNで中継)
    STUN STUN
    Dropped…

    View Slide

  9. そもそも

    View Slide

  10. https://flic.kr/p/b6WaSP
    なんで通ったり
    落ちたりするの?

    View Slide

  11. https://flic.kr/p/oH1mPu
    気になる!(技術者的な意味で)
    N
    A
    T

    View Slide

  12. そんなあなたに良いRFC(4787)

    View Slide

  13. UDP向けNATの振舞いについて
    熱く語っているRFC

    View Slide

  14. あと、Obsoleteだけど
    3489(Classic STUN)も参考になる

    View Slide

  15. Full Coneとか、Symmetric NATとか、
    その辺りの用語はこのRFCで登場
    (ただし、区分けがちょっと足りない)

    View Slide

  16. 続きは
    RFCで!

    View Slide

  17. https://flic.kr/p/6n5y3k
    が、RFC読むと1分で、こうなる↓

    View Slide

  18. そこで本トークでは
    特にWebRTCに関係するNAT振舞いの
    エッセンス(12章)を紹介
    (=RFC 4787をざっくりと)
    免責:正確性はRFC原典の用語を参照のこと

    View Slide

  19. https://flic.kr/p/p1Q8WT
    Requirement

    View Slide

  20. RFCの抜粋です

    View Slide

  21. View Slide

  22. マッピングの話から

    View Slide

  23. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する

    View Slide

  24. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1

    View Slide

  25. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:192.168.1.2:10000
    先:1.1.1.100:80

    View Slide

  26. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80

    View Slide

  27. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.200:80

    View Slide

  28. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:1.1.1.1:12345
    先:1.1.1.200:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.200:80

    View Slide

  29. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:1.1.1.1:12345
    先:1.1.1.200:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.200:80
    エンドポイント(宛先)
    に拘らないマッピング

    View Slide

  30. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1

    View Slide

  31. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80

    View Slide

  32. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.200:80

    View Slide

  33. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.200:80
    元:1.1.1.1:54321
    先:1.1.1.200:80
    今回は、同じマッピングじゃない(下図だ
    とPortが異なる)

    View Slide

  34. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:8888
    じゃあ、
    同じホストの別ポートに送ると??

    View Slide

  35. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:8888
    同じマッピング!
    つまり、宛先にのみ依存している。
    元:1.1.1.1:12345
    先:1.1.1.100:8888
    同じマッピング!
    つまり、宛先にのみ依存している

    View Slide

  36. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1

    View Slide

  37. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:8888
    3つ目のケースで、同じホストで違うポー
    トに送ると???

    View Slide

  38. 3 種類のマッピング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:8888
    違うマッピングができる!
    元:1.1.1.1:54321
    先:1.1.1.100:8888

    View Slide

  39. https://flic.kr/p/kSFs6b
    WebRTC的にイケてるの
    はどれでしょう?
    (正確には、P2P的にイケてるのはどれでしょう?)

    View Slide

  40. 1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する

    View Slide

  41. 1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する

    View Slide

  42. 1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    2と3は、STUNで自分のNATの外側のアドレス
    (= Server-Reflexive Address、Mapped-Address)を調べ
    ても、結局使えない…。

    View Slide

  43. なのでRFCも・・・

    View Slide

  44. MUSTになってる!

    View Slide


  45. View Slide

  46. NATはパブリック側(外側)のIPアドレスを複数貯めておける。
    その貯めたアドレスを使う場合は、
    「同じ宛先には同じ送信元アドレス」を使いましょう、ということ。

    View Slide

  47. ポート多重 ダメ・ゼッタイ

    View Slide

  48. ポート多重(Port Overloading)
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.3:10000
    先:1.1.1.200:80
    192.168.1.3

    View Slide

  49. ポート多重(Port Overloading)
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.3:10000
    先:1.1.1.200:80
    元:1.1.1.1:10000
    先:1.1.1.200:80
    192.168.1.3

    View Slide

  50. ポート多重(Port Overloading)
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.3:10000
    先:1.1.1.200:80
    元:1.1.1.1:10000
    先:1.1.1.200:80
    192.168.1.3
    同じの使っちゃうケース
    同じの使っちゃうケース

    View Slide

  51. ちなみに帰り道(復路)は、送信元が大事
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:10000
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:192.168.1.3:10000
    先:1.1.1.200:80
    元:1.1.1.1:10000
    先:1.1.1.200:80
    192.168.1.3
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.100:80
    先:1.1.1.1:10000
    元:192.168.1.2:10000
    先:1.1.1.100:80
    192.168.1.3
    往路
    復路
    元:1.1.1.200:80
    先:1.1.1.1:10000
    このアドレスで復路を打ち分ける

    View Slide


  52. View Slide

  53. もともとの送信元ポートが0-1023ならNAT後も0-1023、
    もともとの送信元ポートが1024-65535ならNAT後も1024-65535、
    といったように同じレンジを使うのがRECOMMENDED

    View Slide

  54. NATするときのポート番号は、
    Before−>Afterで奇数偶数を同じにしようね ということ。
    つまり、もともとのポートが偶数なら、NAT後も偶数ということ。

    View Slide

  55. マッピングの保持時間は2分以下だとダメだよ。
    5分以上がオススメで、自由に設定してOK。
    ただし、0-1023のウェルノウンポートはIANAに従ってね。

    View Slide

  56. マッピング更新するトラフィックの向きは
    アウトバウンド(外向き)のトラフィックがMUST。
    インバウンドやってもいいけど、攻撃されちゃうかもね。

    View Slide

  57. NATによっては、NAT前後のIPレンジが同じことも。
    例えば、10.0.0.0/Xから10.0.0.0/XのNATもあり得る。
    (ご家庭だとあんまり無いけど)
    そんなときはには、どっちかで対応すること:
    (1)内外でアドレスかぶらんように
    (2)アドレスがコンフリクト(衝突)してもよしなに翻訳転送してね

    View Slide

  58. 大事!絵!

    View Slide

  59. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する

    View Slide

  60. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80

    View Slide

  61. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    まず外側に送る

    View Slide

  62. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    さっきと宛先が違う
    ホストから来ても通せる
    =エンドポイントに依存しない
    元:1.1.1.200:80
    先:1.1.1.1:12345

    View Slide

  63. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1

    View Slide

  64. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    まず外側に送る

    View Slide

  65. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    最初に送ったホストと
    違うから落ちる
    (=アドレスに依存している)
    元:1.1.1.200:80
    先:1.1.1.1:12345

    View Slide

  66. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:1.1.1.200:80
    先:1.1.1.1:12345
    同じホストからならOK
    (上図だと、同じホストで異なるPort)

    View Slide

  67. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1

    View Slide

  68. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    まず外側に送る

    View Slide

  69. 3 種類のフィルタリング:
    1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    NAT 1.1.1.100
    1.1.1.200
    192.168.1.2
    192.168.1.1 1.1.1.1
    元:1.1.1.1:12345
    先:1.1.1.100:80
    元:192.168.1.2:10000
    先:1.1.1.100:80
    元:1.1.1.200:80
    先:1.1.1.1:12345
    同じホストでも、ポートが異なるとNG
    (かなり厳しいフィルタリング)

    View Slide

  70. https://flic.kr/p/kSFs6b
    RFC的にイケてるのはど
    れでしょう?
    (本日2回目)

    View Slide

  71. 1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する

    View Slide

  72. 1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する

    View Slide

  73. 1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    ただし、RFC4787ではセキュリティを気にする場合は、
    2. Address DependentもRECOMMENDEDとしている。

    View Slide

  74. 1. Endpoint independent
    エンドポイントに依存しない
    2. Address Dependent
    アドレスに依存する
    3. Address and Port Dependent
    アドレスとポートに依存する
    WebRTC的に言えば、Mappingとの組み合わせが需要で、
    「3. Address and Port Dependent」でもつながるはず

    View Slide


  75. View Slide

  76. ヘアピン接続も
    サポートしてね!

    View Slide

  77. ヘアピン接続
     点線のマッピングができている状態で、
     PC-Aから、PC-BのNAT後のアドレスを指定して、
     NAT折り返しで接続すること
    NAT
    PC-A
    192.168.1.1 1.1.1.1
    PC-B
    送信先アドレスとして
    外側のアドレスを指定するのが
    ポイント

    View Slide

  78. ALG(Application Level Gateway)の機能はOFFしてね
    (例:勝手にペイロードの中身も書き換えないでね)

    View Slide

  79. 好き勝手に動作を変えないでね
    (deterministic behaviorしてね)

    View Slide

  80. (力尽きたので)そこまでWebRTCに関係しないので
    省略

    View Slide

  81. https://flic.kr/p/4LXLZ2
    14個おしまい!
    (一部ショートカット有り)

    View Slide

  82. ん?そもそも

    View Slide

  83. https://flic.kr/p/b6WaSP
    なんで通ったり
    落ちたりするの?

    View Slide

  84. 答えの前にUDPホールパンチング
    PC-A PC-B
    NAT NAT

    View Slide

  85. 答えの前にUDPホールパンチング
    PC-A PC-B
    NAT NAT
    マッピングが無い
    ので落ちる

    View Slide

  86. 答えの前にUDPホールパンチング
    PC-A PC-B
    NAT NAT
    マッピングが無い
    ので落ちる
    だが、PC-B向け
    に穴が開いた
    (マッピングが出
    来た)

    View Slide

  87. 答えの前にUDPホールパンチング
    PC-A PC-B
    NAT NAT
    次に反対向きに
    打つと今度は
    疎通OK

    View Slide

  88. 答えの前にUDPホールパンチング
    PC-A PC-B
    NAT NAT
    次に反対向きに
    打つと今度は
    疎通OK
    しかも、PC-A向
    けの穴が開く
    ということは、

    View Slide

  89. 答えの前にUDPホールパンチング
    PC-A PC-B
    NAT NAT
    いまなら
    一発目の向きも
    疎通OK

    View Slide

  90. https://flic.kr/p/b6WaSP
    再掲:なんで通ったり
    落ちたりするの?

    View Slide

  91. Mapping × Filtering の特性で決まる
    (特にUDPホールパンチングで通す場合)

    View Slide

  92. Mapping × Filtering の特性で決まる
    (特にUDPホールパンチングで通す場合)
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering

    View Slide

  93. Mapping × Filtering の特性で決まる
    (特にUDPホールパンチングで通す場合)
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering

    View Slide

  94. Mapping × Filtering の特性で決まる
    (特にUDPホールパンチングで通す場合)
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    いつなんとき
    誰のでも挑戦を待つ
    猪木的NAT

    View Slide

  95. Mapping × Filtering の特性で決まる
    (特にUDPホールパンチングで通す場合)
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    NAT
    - Address Dependent Mapping
    - Address Dependent Filtering
    NAT
    - Address Dependent Mapping
    - Address Dependent Filtering

    View Slide

  96. Mapping × Filtering の特性で決まる
    (特にUDPホールパンチングで通す場合)
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    NAT
    - Address Dependent Mapping
    - Address Dependent Filtering
    NAT
    - Address Dependent Mapping
    - Address Dependent Filtering

    View Slide

  97. Mapping × Filtering の特性で決まる
    (特にUDPホールパンチングで通す場合)
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    NAT
    - Endpoint Independent Mapping
    - Endpoint Independent Filtering
    NAT
    - Address Dependent Mapping
    - Address Dependent Filtering
    NAT
    - Address Dependent Mapping
    - Address Dependent Filtering
    相手が狙うべきアドレスが
    変わっちゃうから通らない
    (STUNで調べたアドレスがNG)

    View Slide

  98. おまけ
    Miscellaneous Topics

    View Slide

  99. http://www.netmanias.com/en/?m=view&id=techdocs&no=6065
    古いRFCのNAT分類は
    マッピング×フィルタリングで説明できる

    View Slide


  100. 今日の話はあくまでRFCの話!
    ホントの動作は装置依存です!

    View Slide

  101. 参考資料
    Further Study

    View Slide

  102. P2P通信技術:NAT超え 〜STUNとUPnPと、時々、TURN〜
    http://homepage3.nifty.com/toremoro/study/voip2008/NATTrave
    rsal.pdf
    NAT技術者にお勧めするRFCとドラフト
    http://toremoro.tea-nifty.com/tomos_hotline/2008/06/natrfc_e2f2.html
    P2Pとファイアウォール
    http://homepage3.nifty.com/toremoro/p2p/firewall.html
    ISPのNATには何が求められるか?
    http://www.janog.gr.jp/meeting/janog22/program/day1/data/day1-5-
    1_Nishitani.pdf
    参考資料:
    共存/移行技術とP2P対戦ゲームの相性
    https://www.janog.gr.jp/meeting/janog30/doc/janog30-v64-pre-stun
    -ryosato-02.pdf

    View Slide