WebRTCの裏側にあるNATの話 - A talk on NAT behind WebRTC
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 371 views
Uploaded on

WebRTC Meetup Tokyo #5で講演した ...

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
371
On Slideshare
290
From Embeds
81
Number of Embeds
1

Actions

Shares
Downloads
1
Comments
0
Likes
3

Embeds 81

https://twitter.com 48

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. WebRTCの裏側にあるNATの話 - A talk on NAT behind WebRTC - @iwashi86 2014/11/26 WebRTC Meetup Tokyo #5
  • 2. ●Attribute Name Yoshimasa Iwase @iwashi86 web iwashi.co ●Work ・Web Engineer@NTT Com ・HTML5 Experts.jp Editor ●Recently ・HTML5 Experts.jpにてWebRTC特集掲載!
  • 3. 本題 今日はNATの話 (WebRTCなので特にUDPのNAT)
  • 4. なぜ、いまさらNAT? https://flic.kr/p/4HKJE1
  • 5. WebRTCのクライアントは NAT配下に居ることが多い Internet NAT NAT
  • 6. クライアント達は何の工夫も無しには 直接通信できない・・・ Internet Dropped… NAT NAT
  • 7. そこで、WebRTCでは主にSTUN※を使っ て なんとか穴あけしている Internet STUN STUN NAT NAT Reached!  ※UDP Hole Punchも
  • 8. でも、ダメなケースもある… (その場合はTURNで中継) Internet STUN STUN Dropped… NAT NAT
  • 9. そもそも
  • 10. なんで通ったり 落ちたりするの? https://flic.kr/p/b6WaSP
  • 11. 気になる!(技術者的な意味で) https://flic.kr/p/oH1mPu N A T
  • 12. そんなあなたに良いRFC(4787)
  • 13. UDP向けNATの振舞いについて 熱く語っているRFC
  • 14. あと、Obsoleteだけど 3489(Classic STUN)も参考になる
  • 15. Full Coneとか、Symmetric NATとか、 その辺りの用語はこのRFCで登場 (ただし、区分けがちょっと足りない)
  • 16. 続きは RFCで!
  • 17. が、RFC読むと1分で、こうなる↓ https://flic.kr/p/6n5y3k
  • 18. そこで本トークでは 特にWebRTCに関係するNAT振舞い のエッセンス(12章)を紹介 (=RFC 4787をざっくりと) 免責:正確性はRFC原典の用語を参照のこと
  • 19. https://flic.kr/p/p1Q8WT Requirement
  • 20. RFCの抜粋です
  • 21. マッピングの話から
  • 22. 3 種類のマッピング: 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する
  • 23. 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
  • 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 元:192.168.1.2:10000 先:1.1.1.100:80
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80 元:192.168.1.2:10000 先:1.1.1.200:80
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元: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
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 エンドポイント(宛先) に拘らないマッピング 192.168.1.1 1.1.1.1 元: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
  • 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
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80 元:192.168.1.2:10000 先:1.1.1.200:80
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元: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が異なる)
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 じゃあ、 元:192.168.1.2:10000 先:1.1.1.100:80 元:192.168.1.2:10000 先:1.1.1.100:8888
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 同じマッピング! 元: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 つまり、宛先にのみ依存している
  • 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
  • 36. 3 種類のマッピング: 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する 3つ目のケースで、同じホストで違 NAT 1.1.1.100 1.1.1.200 うポートに送ると??? 192.168.1.2 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80 元:192.168.1.2:10000 先:1.1.1.100:8888
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元: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
  • 38. WebRTC的にイケてる のはどれでしょう? (正確には、P2P的にイケてるのはどれでしょう?) https://flic.kr/p/kSFs6b
  • 39. 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する
  • 40. 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する
  • 41. 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する 2と3は、STUNで自分のNATの外側のアドレス (= Server-Reflexive Address、Mapped-Address)を調 べても、結局使えない…。
  • 42. なのでRFCも・・・
  • 43. MUSTになってる!
  • 44.
  • 45. NATはパブリック側(外側)のIPアドレスを複数貯めておける。 その貯めたアドレスを使う場合は、 「同じ宛先には同じ送信元アドレス」を使いましょう、ということ。
  • 46. ポート多重ダメ・ゼッタイ
  • 47. ポート多重(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
  • 48. ポート多重(Port Overloading) NAT 1.1.1.100 1.1.1.200 192.168.1.2 元:1.1.1.1:10000 先:1.1.1.100:80 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 元:1.1.1.1:10000 先:1.1.1.200:80 192.168.1.3
  • 49. ポート多重(Port Overloading) 同じの使っちゃうケース NAT 1.1.1.100 1.1.1.200 192.168.1.2 元:1.1.1.1:10000 先:1.1.1.100:80 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 元:1.1.1.1:10000 先:1.1.1.200:80 192.168.1.3
  • 50. ちなみに帰り道(復路)は、送信元が大事 NAT 1.1.1.100 1.1.1.200 往路 192.168.1.2 元:1.1.1.1:10000 先:1.1.1.100:80 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 元: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 元:1.1.1.100:80 先:1.1.1.1:10000 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80 192.168.1.3 元:1.1.1.200:80 このアドレスで復路を打ち分ける先:1.1.1.1:10000
  • 51.
  • 52. もともとの送信元ポートが0-1023ならNAT後も0-1023、 もともとの送信元ポートが1024-65535ならNAT後も1024-65535、 といったように同じレンジを使うのがRECOMMENDED
  • 53. NATするときのポート番号は、 Before−>Afterで奇数偶数を同じにしようねということ。 つまり、もともとのポートが偶数なら、NAT後も偶数ということ。
  • 54. マッピングの保持時間は2分以下だとダメだよ。 5分以上がオススメで、自由に設定してOK。 ただし、0-1023のウェルノウンポートはIANAに従ってね。
  • 55. マッピング更新するトラフィックの向きは アウトバウンド(外向き)のトラフィックがMUST。 インバウンドやってもいいけど、攻撃されちゃうかもね。
  • 56. NATによっては、NAT前後のIPレンジが同じことも。 例えば、10.0.0.0/Xから10.0.0.0/XのNATもあり得る。 (ご家庭だとあんまり無いけど) そんなときはには、どっちかで対応すること: (1)内外でアドレスかぶらんように (2)アドレスがコンフリクト(衝突)してもよしなに翻訳転送してね
  • 57. 大事!絵!
  • 58. 3 種類のフィルタリング: 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する
  • 59. 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80 さっきと宛先が違う ホストから来ても通せる =エンドポイントに依存しない 元:1.1.1.200:80 先:1.1.1.1:12345
  • 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
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80 最初に送ったホストと 違うから落ちる (=アドレスに依存している) 元:1.1.1.200:80 先:1.1.1.1:12345
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80 元:1.1.1.200:80 先:1.1.1.1:12345 同じホストからならOK (上図だと、同じホストで異なるPort)
  • 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
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80
  • 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 元:1.1.1.1:12345 先:1.1.1.100:80 192.168.1.1 1.1.1.1 元:192.168.1.2:10000 先:1.1.1.100:80 元:1.1.1.200:80 先:1.1.1.1:12345 同じホストでも、ポートが異なるとNG (かなり厳しいフィルタリング)
  • 69. RFC的にイケてるのは https://flic.kr/p/kSFs6b どれでしょう? (本日2回目)
  • 70. 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する
  • 71. 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する
  • 72. 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する ただし、RFC4787ではセキュリティを気にする場合は、 2. Address DependentもRECOMMENDEDとしている。
  • 73. 1. Endpoint independent エンドポイントに依存しない 2. Address Dependent アドレスに依存する 3. Address and Port Dependent アドレスとポートに依存する WebRTC的に言えば、Mappingとの組み合わせが需要で、 「3. Address and Port Dependent」でもつながるはず
  • 74.
  • 75. ヘアピン接続も サポートしてね!
  • 76. ヘアピン接続 点線のマッピングができている状態で、 PC-Aから、PC-BのNAT後のアドレスを指定して、 NAT折り返しで接続すること NAT PC-A 192.168.1.1 1.1.1.1 PC-B 送信先アドレスとして 外側のアドレスを指定する のがポイント
  • 77. ALG(Application Level Gateway)の機能はOFFしてね (例:勝手にペイロードの中身も書き換えないでね)
  • 78. 好き勝手に動作を変えないでね (deterministic behaviorしてね)
  • 79. (力尽きたので)そこまでWebRTCに関係しないので 省略
  • 80. 14個おしまい!(一部ショートカット有り) https://flic.kr/p/4LXLZ2
  • 81. ん?そもそも
  • 82. なんで通ったり 落ちたりするの? https://flic.kr/p/b6WaSP
  • 83. 答えの前にUDPホールパンチング NAT NAT PC-A PC-B
  • 84. 答えの前にUDPホールパンチング マッピングが無 いので落ちる NAT NAT PC-A PC-B
  • 85. 答えの前にUDPホールパンチング マッピングが無 いので落ちる だが、PC-B向 けに穴が開いた (マッピングが NAT NAT 出来た) PC-A PC-B
  • 86. 答えの前にUDPホールパンチング NAT 次に反対向きにNAT 打つと今度は 疎通OK PC-A PC-B
  • 87. 答えの前にUDPホールパンチング しかも、PC-A 向けの穴が開く ということは、 NAT 次に反対向きにNAT 打つと今度は 疎通OK PC-A PC-B
  • 88. 答えの前にUDPホールパンチング いまなら NAT NAT 一発目の向きも 疎通OK PC-A PC-B
  • 89. 再掲:なんで通ったり 落ちたりするの? https://flic.kr/p/b6WaSP
  • 90. Mapping × Filtering の特性で決まる (特にUDPホールパンチングで通す場合)
  • 91. Mapping × Filtering の特性で決まる (特にUDPホールパンチングで通す場合) NAT - Endpoint Independent Mapping - Endpoint Independent Filtering NAT - Endpoint Independent Mapping - Endpoint Independent Filtering
  • 92. Mapping × Filtering の特性で決まる (特にUDPホールパンチングで通す場合) NAT - Endpoint Independent Mapping - Endpoint Independent Filtering NAT - Endpoint Independent Mapping - Endpoint Independent Filtering
  • 93. Mapping × Filtering の特性で決まる (特にUDPホールパンチングで通す場合) NAT - Endpoint Independent Mapping - Endpoint Independent Filtering NAT - Endpoint いIndependent つなんとき Mapping - Endpoint Independent Filtering 誰のでも挑戦を待つ 猪木的NAT
  • 94. 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
  • 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
  • 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 相手が狙うべきアドレスが 変わっちゃうから通らない (STUNで調べたアドレスが NG)
  • 97. おまけ Miscellaneous Topics
  • 98. 古いRFCのNAT分類は マッピング×フィルタリングで説明できる http://www.netmanias.com/en/?m=view&id=techdocs&no=6065
  • 99. 注 今日の話はあくまでRFCの話! ホントの動作は装置依存です!
  • 100. 参考資料 Further Study
  • 101. 参考資料: P2P通信技術:NAT超え〜STUNとUPnPと、時々、TURN〜 http://homepage3.nifty.com/toremoro/study/voip2008/NATTraversal.p df 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