やりたいこと
NTT西日本管内の2箇所にあるフレッツ光ネクスト回線を使って,フレッツ網内のIPv6だけで,Site-to-SiteのIPsec VPN(v4 over v6)を張ってみる。
環境
- 拠点1:
フレッツ光ネクスト隼,ISPのIPoEオプションを使ってグローバルIPv6の世界を泳げる。 - 拠点2:
フレッツ光ネクストマンション対応,ISPのIPoEオプション無し,フレッツ払い出しのIPv6のみ。グローバルIPv6の世界を泳げない。フレッツ網内でのユーザ間IPv6通信をするために,v6オプションを申し込んでおく必要があります。 - 機材:ヤフオクで仕入れたFortigate60D×2台。ありがたいことにサポートが残っていたのでファームを6.0.5まで上げて,execute factoryreset。
参考にしたURL
はまったこと
どうやら,同一の物理インタフェースでPPPoEとIPsec用のインタフェースを同居させると,トンネルは張られているように見えるがIPsecのパケット(ESP)が送出されないというバグ?を踏んでしまったらしい。(tunnelをパケットキャプチャすると送出されているが,物理IFのキャプチャではESPパケットが出ていない,と言うことを確認した)
なので,WAN1をIPsec用,WAN2をPPPoE用と完全に使い分けました。
遅延は?
京都~岡山間のRTTはおおむね16ms~19msと,かなり優秀。
FortigateのIPv6対応
- GUIでIPv6アドレスを入力できないと事がかなりある。CLI必須(独特なので,慣れるまで大変)
- DHCPv6との相性が悪い?https://help.fortinet.com/fos50hlp/54/Content/FortiOS/fortigate-whats-new-54/FeatureCatalog-ipv6.htm を参考にDHCPv6-PDの設定をしてみたが,diag ipv6 [address | route]
listでアドレスを取得している形跡がない。(でもHGWのDHCPv6クライアント一覧には出てくるという不思議。片思いになっている?)
物理的な接続
- 拠点1:HGWのLANと,FortigateのWAN1を接続。VPN専用なのでPPPoEは未設定
- 拠点2:HGWのLANと,FortigateのWAN1を接続(IPv6&IPsec用)。HGWのLANとWAN2を接続(IPv4のPPPoE用)。2台の機材を2本のケーブルで接続するちょっと不思議な構成
HGWで対向のIPv6アドレスからのパケットを許可する(両拠点とも)。
FortigateのWAN1インタフェース設定
- HGWの管理画面を見て,割当てられたプレフィックスを確認します。/60で,Fortiの固定IPv6アドレスを決めます。
- GUIで,固定のIPv6を設定します。DHCPだとHGWからIPv6アドレスを取得してくれないようですし,対向側の設定をするとき面倒です。
- IPv6のデフォルトゲートウェイ設定は,HGWのグローバルアドレスを指定してください(HGWのリンクローカルアドレスを指定してもつながるようでした)。HGWの管理画面の「DHCPv6サーバ払い出し状況」で確認できる「DNSサーバアドレス」がHGWのグローバルIPv6アドレスです。
- アドレス設定後はIPv6をしゃべれるPCからPingでテストしておきます。対向のFortigateから「execute ping6 2400:ほげ:1234」でPingがつながることを確認します。
IPsecトンネルの作成(Phase1・Phase2設定)
- コマンドラインで設定します。
- 拠点AのConfig
set vpn ipsec phase1-interface
edit "toB"
set interface "wan1"
set ip-version 6
set peertype any
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set dpd disable
set comments "to B"
set remote-gw6 対向側FortigateBのWAN1のIPv6アドレス
set psksecret IPsec接続パスワード(対向とあわせる)
next
end
set vpn ipsec phase2-interface
edit "toB2"
set phase1name "toB"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
set auto-negotiate enable
set src-addr-type name
set dst-addr-type name
set src-name "all"
set dst-name "all"
next
end
- 拠点BのConfig
set vpn ipsec phase1-interface
edit "toA"
set interface "wan1"
set ip-version 6
set peertype any
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set dpd disable
set comments "to A"
set remote-gw6 対向側FortigateAのWAN1のIPv6アドレス
set psksecret IPsec接続パスワード(対向とあわせる)
next
end
set vpn ipsec phase2-interface
edit "toA2"
set phase1name "toA"
set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
set auto-negotiate enable
set src-addr-type name
set dst-addr-type name
set src-name "all"
set dst-name "all"
next
end
ポリシー設定
-
ポリシー&オブジェクト>IPv4ポリシーで,2つポリシーを作る。一つはトンネル→Internal,もう一つはInternal→トンネルの許可。ポイントは,インタフェース名にphase1で作った名前を指定する(今回はtoB) ことと,NATを無効化すること。
-
対向側のFortigateBも同様の設定を行う。