SoftEther VPNとNEC IX2015を用いて、VPNを張ってみました。
センター側はせっかくJPNEのIPoEで固定のIPv6がある為、それをブランチ側にも割り振ってあげようと思います。
OS標準機能のプロトコルであるMS-SSTPやL2TPでは、IPv4は割り当てられてもIPv6を割り当てることが出来ません。
EtherIP若しくはL2TPv3を利用することでIPv6が割り当てられるので、格安で入手できるIX2015を用いてEtherIPを使用してみました。
IX2015の接続設定
NTT東日本のNGN網でIX2015とSoftEther VPNを使ったEtherIP over IPsecのトンネルを設定します。
UFSキャッシュの設定
フィルタの多段設定、IPSecの複数設定等におけるスケーラビリティを向上設定を行います。
Router(config)# ip ufs-cache enable
Router(config)# ipv6 ufs-cache enable
アクセスリストの設定
IPv6の発信元と送信先を全て許可します。
EtherIP over IPsecでの接続確立後はセンター側のルーター設定に依存します。
Router(config)# ipv6 access-list sec-list permit ip src any dest any
IKEプロポーザルの暗号化・認証アルゴリズム設定
ここではセンターサーバに負荷をかけない為に、暗号化レベルを3DESに落として設定します。
有効時間は自由に設定可能ですが、短過ぎると再度IKEの認証が必要になります。
Router(config)# ike proposal ike-prop encryption 3des hash sha group 1024-bit lifetime 86400
接続先・事前共有鍵の設定
接続先設定と、事前共有鍵 secret を設定し、接続元がIPoEの固定IPv6アドレスではない場合、mode aggressiveで動的IPとして設定します。
Router(config)# ike policy ike-policy peer 2001::1 key *secret* mode aggressive ike-prop
IKEのキープアライブ設定
Router(config)# ike keepalive ike-policy 10 2
ISAKMP Phase1 IDの設定
SoftEther VPN Serverで事前にユーザーと紐付けしたISAKMP Phase1 IDを設定します。
紐付けされたユーザーが設定されている仮想HUBを経由する事になります。
Router(config)# ike local-id ike-policy keyid *ISAKMP Phase1 ID*
NAT/NAPT環境でのIPsec拡張機能の設定
Router(config)# ike nat-traversal policy ike-policy keepalive 10
IPSec SAの暗号化・認証アルゴリズム設定
IKEで設定した暗号化・認証アルゴリズムと互換のある設定を行い丸。
有効時間は自由に設定可能ですが、短過ぎると再度IPsecの認証が必要になります。
Router(config)# ipsec autokey-proposal ipsec-prop esp-3des esp-sha lifetime time 86400
Router(config)# ipsec autokey-map ipsec-map sec-list peer 2001::1 ipsec-prop
ブリッジ機能の有効化
同じbridge-groupで設定されたインターフェースがブリッジされます。
Router(config)# bridge irb enable
死活監視の設定
watch-groupは監視などのイベントを定義し、そのイベントとアクションを紐付る事ができます。
watch-group
下記の場合は、keepaliveという名前で5回連続イベントを行った場合のアクションを設定します。
この設定は、BVI0から10.0.0.100(センター)を監視し、もし10.0.0.100への疎通不能となる場合はIKE/IPsec SAをクリアします。
"restorer"は監視結果がOKである事を意味し、"variance"は監視結果がNGである事を意味します。
"probe-counter"コマンドで監視を行う回数を定義する事ができます。
"restorer, variance, wait"はそれぞれ、"障害が復旧したと見なすまでの連続監視成功回数", "障害が発生していると見なすまでの連続監視失敗回数", "一回の監視で送信するpingの数"を表します。
"probe-timer"コマンドで監視を行う間隔を定義する事ができます。
"restorer, variance, wait"はそれぞれ、"正常な状態の監視間隔", "障害発生時の監視間隔", "Ping監視のタイムアウト時間"を表します。
Router(config)# watch-group keepalive 5
Router(config-watch-keepalive-5)# event 5 ip unreach-host 10.0.0.100 Tunnel0.0 source BVI0
Router(config-watch-keepalive-5)# action 5 ipsec clear-sa Tunnel0.0
Router(config-watch-keepalive-5)# probe-counter restorer 3
Router(config-watch-keepalive-5)# probe-counter variance 5
Router(config-watch-keepalive-5)# probe-counter wait 3
Router(config-watch-keepalive-5)# probe-timer restorer 10
Router(config-watch-keepalive-5)# probe-timer variance 1
Router(config-watch-keepalive-5)# probe-timer wait 3
Router(config-watch-keepalive-5)# network-monitor keepalive enable
FastEthernet0/0.0の設定
今回は使用しないので停止させます。
Router(config-watch-keepalive-10)# interface FastEthernet0/0.0
Router(config-FastEthernet0/0.0)# no ip address
Router(config-FastEthernet0/0.0)# shutdown
FastEthernet0/1.0の設定
SoftEther VPNに接続するWANになります。
NTTのNGN網内専用のIPv6を自動取得する設定をします。
Router(config-FastEthernet0/0.0)# interface FastEthernet0/1.0
Router(config-FastEthernet0/1.0)# no ip address
Router(config-FastEthernet0/1.0)# ipv6 address autoconfig receive-default
Router(config-FastEthernet0/1.0)# no shutdown
FastEthernet1/0.0の設定
SoftEther VPN Serverの仮想HUBに接続されるLANポートになります。
bridge-groupの設定で、トンネルインターフェースとブリッジさせます。
Router(config-FastEthernet0/1.0)# interface FastEthernet1/0.0
Router(config-FastEthernet1/0.0)# no ip address
Router(config-FastEthernet1/0.0)# bridge-group 1
Router(config-FastEthernet1/0.0)# no shutdown
仮想インターフェースの設定
IPsecは定期的な通信がないと切れてしまう為、ICMPの発信元を設定します。
BVIで仮想インターフェースを設定し、監視元のIPを設定します。
Router(config-FastEthernet1/0.0)# interface BVI0
Router(config-BVI0)# ip address 10.0.0.254/24
Router(config-BVI0)# bridge-group 1
Router(config-BVI0)# no shutdown
トンネルインターフェースの設定
EtherIP + IPsecでトンネル接続する為の設定を行います。
IPsecのポリシー設定で外部に接続できる設定をします。
FastEthernet1/0.0をLANにする為、共通のbridge-groupに設定します。
NTT東日本のMTUと3DESの暗号化設定の為、adjust-mssの設定は1358にします。
Router(config-BVI0)# interface Tunnel0.0
Router(config-Tunnel0.0)# tunnel mode ether-ip ipsec
Router(config-Tunnel0.0)# no ip address
Router(config-Tunnel0.0)# ipsec policy tunnel ipsec-map out
Router(config-Tunnel0.0)# bridge-group 1
Router(config-Tunnel0.0)# bridge ip tcp adjust-mss 1358
Router(config-Tunnel0.0)# no shutdown