春ですね.春といえばネットワークの季節です.
ということでHOMENOCに接続していきましょう.
HOMENOCとは,有志が学生や若手エンジニアを対象に実験ネットワーク接続を提供する団体です.
要はプロバイダみたいなものです.ありがたいですね.
無償でグローバルIPアドレスの割当を受けることもできます.
この記事で示すこと
NTTが提供するNGN網を利用して,HOMENOCに接続します.
このとき,L2のGREトンネル(IPv6)の上でBGPピア(IPv4)を張ってグローバルIPアドレスを利用できるようにします.
今回使用した機材は,Cisco 891FJ-K9 です.
注:ここで示す方法では生のパケット(をカプセル化したもの)がNGNをそのまま流れていきます.
通常はGRE over IPSecで暗号化することが多いようです.
L1 (物理)
既存プロバイダとのPPPoE接続と分岐させるため,まずはONUから生えているEthernetケーブルをスイッチングハブなどを用いて分けます.
イメージはこんな感じ.
[Internet] - [Provider] - [NGN] - [ONU] - [SW-HUB] - [既存ルータ 及び 今回使用する891FJ]
また,今回はいつやらかしても接続が切れないようConsole端子から設定します.
(私は既存ルータの下につなげたRaspberry Piにコンソールケーブルを接続し,離れたところからでも触れるようにしました.)
できる方は必要に応じてtelnetやSSHなど設定されてください.
申請①
NTT
NGN網に接続しただけでは,NTTが指定するサイトにしか接続できません.
NGN網での折り返し通信を行うために,v6オプションを契約します.
ネームはいりません.
すでにPPPoEセッションが2つあろうと,セッションプラスも不要です.
NTT東日本:https://flets.com/v6option/
NTT西日本:https://flets-w.com/opt/v6option/
サービス情報サイトから申請することで,初期費用も追加のランニングコストも0円となります.
ただし,既存ルータの機能や設定により,サービス情報サイトへのアクセスが難しい可能性があります.
詳しくは以下のドキュメント類を参照してください.
私は[ONU] - [SW-HUB] - [PC]と直結して,PCでPPPoEを喋らせてアクセスしました.
NTT東日本:https://flets.com/square/con_index.html
NTT西日本:https://flets-w.com/opt/v6option/pdf/v6option_user_manual.pdf
申請後,適用されるまで1週間ほどかかるようです.
ところで,NTT東がflets.com,NTT西がflets-w.comなのは何なんでしょうね.
西日本の民としては少々不満です.
HOMENOC
以下のWebページをよく読んで,申請を行います.
実験ネットワーク利用 | Home NOC Operators' Group
以下の通り,接続形態はいくつか選択できます.
今回は回線種別としてGREトンネル,接続方式としてL3 BGPを選択しました.
ネットワーク接続種別 | Home NOC Operators' Group
申請の過程で,トンネル終端IPv6アドレスを提示しなければならない段階があります.
そこまで来たら,次の項目に進まれてください.
ただし,v6オプションの利用開始が済んでいる必要があります.(利用開始申請ではなく.)
IPv6アドレスの確認
ルータの初期設定を行った上で,NGNからRAで提示されるプレフィックスを元にEUI-64に基づきIPv6アドレスを自動設定させます.
それではCiscoルータの設定に入ります.
任意のターミナルソフトを用いてコンソールに入ってください.
(!から始まる行はコメントです.)
ena
conf t
line con 0
! type中,ログ表示を割り込ませない
logg sync
! typo時に名前解決させない
trans pref none
exit
! IPv6のルーティングを有効化
ipv6 uni
! IPv6トラフィックのハードウェア処理を有効化
ipv6 cef
! WAN側インタフェースについて,NGNからRAによって与えられるプレフィックスに基づき,IPv6アドレスをEUI-64で自動設定
int gi 8
desc ntt-ngn
no shut
ipv6 add auto
ipv6 nd auto default
ipv6 nd ra sup all
end
! IPv6アドレスを確認
sh ipv6 int gi 8
! GigabitEthernet8 [up/up]
! FE80::〜
! 2〜:〜 ←これが提供すべきアドレス
! 設定を保存
copy run start
申請②
前項で判明したNGNとの接続に用いているインタフェースに割り当てられているIPv6アドレスのうち,FE80:〜でないほうをHOMENOCに提供します.(グローバルユニキャストアドレス)
すると,これに対してGREトンネルを張れるようHOMENOC側の機器を調整して頂けます.
GREトンネル・BGPピア設定
先方から準備が整った旨連絡が届いたら,改めてコンソールに入ります.
以降,設定に必要となる様々なパラメータ(このように,下線が引かれているもの)は
にて提供されます.左のカラムから[Info]を開いておいてください.
分かりやすさを優先して当該ページに記載の単語をそのまま使用します.
ただしIPアドレスを埋める際,各欄に記載された/64や/31などのプレフィックス値は含めないでください.
ena
! HOMENOC側機器との疎通を確認
ping トンネル終端アドレス(HomeNOC側)
conf t
! GREトンネリング
int tun 0
desc gre-to-homenoc
tunnel mode gre ipv6
ip address 境界アドレス(貴団体側) 255.255.255.254
tunnel source トンネル終端アドレス(貴団体側)
tunnel destination トンネル終端アドレス(HomeNOC側)
exit
! GREトンネル先との疎通を確認
do ping 境界アドレス(HomeNOC側)
! BGP設定
router bgp 割当を受けたプライベートAS番号(Info画面上部に小さく記載された6から始まる5桁の番号)
nei 境界アドレス(HomeNOC側) remote 59105
add ipv4
net 割当を受けたIPアドレスレンジのネットワークアドレス mask 割当を受けたIPアドレスレンジのサブネットマスク
nei 境界アドレス(HomeNOC側) act
exit
! BGPでの疎通状況を確認 (最下行のMsgRcvd/MsgSentが1以上であることを確認)
do sh ip bgp sum
! インターネット側からの疎通テストのため,ループバックインターフェースを一時的に設定
int lo 0
ip address 割当を受けたIPアドレスレンジのネットワークアドレスに+1したもの 割当を受けたIPアドレスレンジのサブネットマスク
end
! 設定を保存
copy run start
疎通確認
インターネットに接続された何らかの端末から,ループバックインタフェースに割り当てたIPv4アドレスに対してpingを飛ばし,返ってくることが確認できればOKです.
まとめ・感想
とりあえず割り当てていただいたIPv4アドレスを利用するところまでできました.
現状,セキュリティを高めるための設定や,パラメータの最適なチューニングなどは行えていない状況です.
また,私の環境では上記に示した各機材を遠隔地の実家に設置しています.
しかし,せっかく購入したHPE ProLiant DL360 Gen9は現在住んでいるところにありますので,どうやって接続しようかといろいろと方策を考えているところです.
(こちらはNAT配下にあり,ポートの開放すらできません.)
NGNもGREもBGPも,今回初めて実際に触りました.
そしてIPv6に対する知識がまだまだ浅かったことも思い知らされました.
なかなかルータ内でのトラフィックの流れ方のイメージを掴むことができず,実は結構時間がかかっています.
ここらへんのプロトコル(等)になると,なかなかネット上にも書籍にもピッタリの情報が載っていないんです.
この記事がどなたかのお役に立てれば幸いです.
参考にさせていただいたサイト・資料
Cisco ルータでの使用方法 - OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト
IIJ Technical Week 2011 フレッツにおけるIPv6接続について
JPNE 「v6プラス」固定IPサービスへのIOSルータ接続(IPv6パススルー編: ひかり電話を契約していない場合) - Cisco Community
(他にも多数ありますが,関連度合いの高いもののみに抜粋させていただきました.)
追記
2023/04/03 14:20
masaki@sukiyaki project 様より,typo時の名前解決抑制についてアドバイスをいただきました!
初版では,名前解決に要する時間の調整のため
ip domain timeout 1
ip domain retry 5
としていたところを,
名前解決に至る要因である,telnetによる接続試行自体を止めるため
ラインコンフィグレーションモード内で
transport preferred none
とするよう変更しました.
ありがとうございました!