IPv4 over IPv6接続(IPIP) 固定IP接続を設定する (Asahi-Net v6プラス) - RTX Router

YAMAHA RTX RouterにIPIP 固定IP接続を設定します。

概要

利用している Asahi-Net でIPv4 over IPv6の固定IPサービス (v6プラス / IPIP接続)が始まりました。
早速、利用している回線の一つをIPv4 over IPv6の固定IPサービスに切り替えて動作確認をします。

事前準備

IPv4 over IPv6の固定IPサービスへの申し込みをします。
今回はすでに固定IPサービスを利用しているため、種別変更の申し込みをしています。

情報の確認

Asahi-Netのマイページにアクセスします。[利用サービス一覧を確認する]ボタンをクリックします。


利用サービス一覧が表示されます。利用している回線の[契約内容を確認する]ボタンをクリックします。


固定IPアドレスの契約確認画面が表示されます。
補足
IPoEの固定IPを申し込むと、PPPoEの固定IPは翌月末で解約になる設定のようです。 解約になるまでの間、IPoEの固定IPアドレスとPPPoEの固定IPアドレス両方が使える状態になりますので、その間に移行を済ませます。


下にスクロールすると、[固定IPアドレス:IPv4 over IPv6接続]の項目があります。[IPアドレス/割り当て日] の項目の右側[設定情報を確認する]ボタンをクリックします。


IPv4 over IPv6接続 (IPIP) 接続設定情報の画面が表示されます。


下にスクロールし、[手動設定 情報]の項目を確認します。

ルーター設定

事前準備

ルーターの設定を確認します。IPoE接続がルーターに設定されている場合は、設定が競合する可能性があるため、削除しておいたほうが良いです。
下図の例では、"Asahi-Net ipv6"の [IPv6 IPoE(RA)接続]の設定を削除します。


削除した状態から設定を始めます。

設定

[接続種別]のドロップダウンリストボックスをクリックし、接続したいLANポートの"IPv6 IPoE接続"の項目を選択します。今回は、LAN2に設定します。


選択ができたらドロップダウンリストボックス右側の[新規]ボタンをクリックします。


プロバイダー接続の設定 ページが表示されます。


ページを下にスクロールし、[IPv4 over IPv6 トンネルの設定]の項目の[使用する]ラジオボタンをクリックしてチェックします。下図の画面の状態になります。


[「v6プラス」固定IPサービス]のラジオボタンをクリックしてチェックをつけます。
以下の値を入力します。

RTXルーターの設定項目 IPv4 over IPv6接続 (IPIP) 接続設定情報 (Asahi-Net)
アップデートサーバーのURL アップデートサーバーURL
ユーザー名 認証用ユーザーID
パスワード 認証用パスワード
インターフェース ID インターフェースID (下4桁を入力)
IPv6 アドレス AFTRエンドポイントIPv6アドレス
IPv4 アドレス 固定IPv4アドレス

補足
インターフェース IDはすべての桁数を入力すると長さエラーになるため、アドレスの下4桁(nnnn:nnnn:nnnn:nnnn)のみ入力します。


DNSサーバーの設定、IPフィルターの設定はデフォルトのままとします。ページ右下の[確認]ボタンをクリックします。


確認画面が表示されます。


[設定の確定]ボタンをクリックします。


設定が確定され、IPoE接続が確立されます。

メモ
上記はRTX1210での例ですが、RTX1300も同様の画面で同じ設定でできます。

動作確認

out

PPPoE接続でルーティングしない状態になっていることを確認し、インターネットに接続できるかを確認します。
IPv4, IPv6 どちらも通信できることを確認します。
IPv4で通信した場合はTUNNEL経由になり、IPv6で通信した場合は、TUNNEL経由にならないです。

in

IPoE接続にIPマスカレードを設定し、指定ポートを内部サーバーに接続します。 確認しやすいのはポート80をWebサーバーにポートフォワーディングします。

外部からIPv4の固定IPアドレスに対して、Webアクセスし、Webサーバーのコンテンツが表示されれば動作しています。
メモ
マスカレードでフォワーディングした先のサーバーのデフォルトゲートウェイがPPPoEの回線に設定されていると正しく動作しません。 ルーティング経路がIPoEの回線になっているかを確認します。

IPv4アドレス

払いだされるIPv4アドレスは、v6プラスのIPアドレスになります。
逆引きすると xnnnnn.f.east.v6connect.net になります。


補足:地域判定
従来のPPPoEのIPv4アドレスと、IPIPのIPv4アドレスでは地域判定のロジックが異なるため、同じ結果にならない場合があります。 IPIPのIPv4アドレスでは地域判定が東京として判定される場合があります。(東日本の場合)

その後の設定

IPマスカレード設定

IPアドレスでポートフォワーディングしている場合はIPマスカレードを設定します。

追加のIPフィルタリング

追加のIPアドレスフィルタリングがある場合は、設定します。

ルーティング変更

サーバーがある場合は、PPPoE回線でルーティングしている設定を、IPoE回線でのルーティングに変更します。
または、IPoE回線用に新サーバーを構築する方法や、リバースプロキシを前段に配置する方法もあります。

今回の環境では、仮想サーバーを利用しているため、サーバーをコピーして一時的に2台にする方法を利用しました。

DNS変更

PPPoEのIPアドレスでドメインネームを利用している場合は、DNSを変更し、IPアドレスの値を 新しいIPoE回線のIPv4アドレスに変更します。
DNSのTTLの設定にもよりますが、DNSの伝搬は昨今では速いため、6~8時間程度でほとんどが新しいIPアドレスに変わります。 旧IP側のサーバーも1週間の維持で十分な印象です。

通信速度

体感ではほとんど違いがわかりません。数値的にはピーク性能が向上しており、 PPPoE回線ではピークの転送速度が350Mbps程度であったものが、IPoE回線では800Mbps出るようになりました。

補足:ヘアピンNAT

IPoE回線でIPマスカレードを設定した場合に、自身の回線の固定IPv4アドレスでサーバーにアクセスした場合、 ヘアピンNATに対応していないと、アクセスできませんでした。 (十分に検証できていないため、設定によってはアクセスできるかもしれません)

ヘアピンNATに対応している機種であれば、NATディスクリプターの設定画面で[ヘアピン NAT の利用]を[利用する]に変更します。


または、IPマスカレード設定のnat descriptorコマンドに hairpin=on を設定します。
コマンド例
nat descriptor type 20000 masquerade hairpin=on

補足:luaスクリプト

RTXの設定ガイドにはluaスクリプトの設定が記載されていますが、Webの管理画面から設定した場合は、luaスクリプトも自動で設定されます。
RTX Router Config
(...中略)

statistics application on
embedded file v6plus_map_e.lua <<EOF
UPD_SV = "https://v6update.asahi-net.or.jp/prefix"
USERNAME = "*************"
PASSWORD = "*************"
WAN_IF = "LAN1"

LOG_PTN = "Add%s+IPv6%s+prefix.+%(Lifetime%:%s+%d+%)%s+via%s+" .. WAN_IF .. "%s+by"
LOG_LEVEL = "info"
LOG_PFX = "[v6plus]"
FAIL_MSG = "Failed to notify IPv6 address to the update server. (remaining retry: %d time(s))"

function logger(msg)
  rt.syslog(LOG_LEVEL, string.format("%s %s", LOG_PFX, msg))
end

local rtn, count, log, result
local req_t = {}
local res_t
req_t.url = string.format("%s?user=%s&pass=%s", UPD_SV, USERNAME, PASSWORD)
req_t.method = "GET"
while true do
  rtn = rt.syslogwatch(LOG_PTN)
  if rtn then
    count = 3
    while true do
      res_t = rt.httprequest(req_t)
      if res_t.rtn1 then
        logger("Notified IPv6 address to the update server.")
        if res_t.code == 200 then
          result = "Succeeded"
        else
          result = "Failed"
        end
        log = string.format("%s to update IPv6 address. (code=%d, body=%s)", result, res_t.code, res_t.body)
        logger(log)
        break
      end
      count = count - 1
      if count > 0 then
        logger(string.format(FAIL_MSG, count))
        rt.sleep(10)
      else
        logger("Failed to notify IPv6 address to the update server.")
        break
      end
    end
  end
end
EOF

著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2024-06-03
作成日: 2024-02-02
数年ぶりの大がかりなネットワーク設定変更で結構大変です。

iPentec all rights reserverd.