IPv4/IPv6混在ネットワークで何が起こるか
2025-02-15
朔の5.0.0からIPv6対応をし、 ネットワーク内にIPv4/IPv6のノードが混在するようになりました。 5.2.0で一通り問題が解決したと考えています。
ノードの種別ごとの挙動
実際に動かしたわけではないので理論上のものです。
- IPv4/IPv6両対応のノード
- IPv4/IPv6それぞれのノードに繋がる
- IPv4/IPv6両対応の1つのノードについて、基本的には2つの別のノードと認識する。特に問題はなさそう?
- dnsnameという設定項目を使うとIPアドレスで認識されるノードではなくなるので上の問題は解決する。ただし後述する別の問題が発生する
- 回線はIPv4/IPv6両対応だがポート開放がIPv4のみのノードとは接続しづらくなる。後述
- IPv4のみのノード
- IPv4のノードに繋がる
- IPv6のノードと通信しようとして失敗する。特に問題はなさそう
- IPv6のみのノード
- IPv6のノードに繋がる
- IPv4のみのノードと通信しようとして失敗する。特に問題はなさそう
- 各ノードは接続数を一定数以内にするように接続を切るので、数の少ないIPv6のみのノードはただでさえ少ない接続が切られがちになるはず
- 回線はIPv4/IPv6両対応だが、ポート開放がIPv4のみのノード
- IPv4のノードに繋がる
- IPv6のみのノードに接続しようとして失敗する。特に問題はなさそう
- 名前解決するとIPv4/IPv6の両方のIPアドレスが取れるノードには接続できなくなる。ここでいう接続とは相手からノードとして認識されるということ。他ノードの情報やファイルの取得などは可能。prefer_ipv4 という設定項目を有効にすれば接続できる。また時間経過でこれらのノードをIPアドレスで認識すれば接続できるようになる
- 今のところは初期ノードリストにIPv4専用のノードが含まれているのでネットワークに参加できる
- 名前解決するとIPv4/IPv6の両方のIPアドレスが取れるノードかつdnsnameという設定項目を使っているノードに対しては、時間経過でもIPアドレスで認識することがないため接続ができなくなる。prefer_ipv4 という設定項目を有効にすれば接続できる
- まとめ: prefer_ipv4 という設定項目を有効にすればよい
- 回線はIPv4/IPv6両対応だが、ポート開放がIPv6のみのノード
- IPv6のノードに繋がる
- IPv4のみのノードに接続しようとして失敗する。特に問題はなさそう。ここでいう接続とは相手からノードとして認識されるということ。他ノードの情報やファイルの取得などは可能
- IPv6が最初からポート開放されている環境もあるため、このケースは数が少ないのではないかと思っている。
動きそうな環境の例
実際に動かしたわけではないので理論上のものです。
- 固定IPアドレスでIPv4/IPv6両対応 (node.shingetsu.info など)
- IPv4の動的IPアドレス。IPアドレスが変わったときに再接続まで数分かかることがある (一番多そう)
- IPv4をポート開放しているが、IPv6も使える回線 (上の章で説明)
- IPv4 over IPv6 でIPv6のみポート開放 (上の章で説明)
- IPv6が一時アドレスの環境。ポート開放が難しそう。IPアドレスが変わったときに再接続まで数分かかることがある
- そのほか