IPv4 over IPv6接続(IPIP) 固定IP接続を設定する (Asahi-Net v6プラス)
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接続が確立されます。
動作確認
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スクリプトも自動で設定されます。
(...中略)
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やデータベースの記事なども担当。
数年ぶりの大がかりなネットワーク設定変更で結構大変です。