1812jでVPNを構築してみた

ネットワークの勉強のために、前からやろうと思って放置してたVPNの構築をやります。
調べつつ書いてるので、間違いがあればご指摘いただけると嬉しいです。

概要

以下のように、iPhoneとかthinkpadからLANにつなぎたいわけですな。

やること

  • AAA(認証、許可、アカウンティング)の設定
  • IKEポリシーの設定
  • VPNクライアントグループの設定
  • VPNクライアントグループとAAAの紐づけ
  • トランスフォームセットの設定
  • ダイナミックマップの設定
  • 暗号マップの設定
  • 暗号マップを外部インターフェースに適用
  • DHCPプールの設定
  • VPN Clientからつなぐ

AAA(認証、許可、アカウンティング)の設定

ローカルで認証するようにします。
userauthgroupauthの部分は適当に名前を付けてください。
aaa new-modelにする前にはコンフィグを保存したほうがよさそう

(config)# aaa new-model
(config)# aaa authentication login userauth local
(config)# aaa authorization network groupauth local

IKEポリシーの設定

ここでVPNの暗号方式や認証方式を設定。
policy 1は優先度が一番高いポリシーです。
Diffie-Hellman鍵共有グループの暗号強度は5(1536bit)がもっとも高いようですが、負荷を考えて2(1024bit)を選択する場合が多いみたいです。

(config)# crypto isakmp policy 1
(config-isakmp)#encr 3des
(config-isakmp)#auth pre-share
(config-isakmp)#group 2

VPNクライアントグループの設定

ログイングループ名(vpnclient)や事前共有キー(hogehoge)、IPアドレスプールなどはここで指定します。
今回はスプリットトンネリングを使用するのでACLを指定しています。

(config)#crypto isakmp client config group vpnclient
(config-isakmp-group)#key hogehoge
(config-isakmp-group)#save-password
(config-isakmp-group)#acl 100
(config-isakmp-group)#pool ezvpn-pool
(config-isakmp-group)#dns 192.168.1.254 192.168.1.1
(config-isakmp-group)#exit
(config)# access-list 100 permit ip 192.168.1.0 0.0.0.255 any

VPNクライアントグループとAAAの紐づけ

vpnclientuserauthgroupauthは設定した内容に変更してください。

(config)#crypto isakmp profile vpnclient-profile
(conf-isa-prof)#match identity group vpnclient
(conf-isa-prof)#client authentication list userauth
(conf-isa-prof)#isakmp authorization list groupauth
(conf-isa-prof)#client conf address respond

トランスフォームセットの設定

トランスフォームセット名(vpnset)は適宜変更してください。

(config)#crypto ipsec transform-set vpnset esp-3des esp-sha-hmac

ダイナミックマップの設定

vpnsetvpnclient-profileは設定に合わせて変更してください。
reverse-routeをしているすると、VPNクライアントへのスタティックルートが自動で登録されるようです。

(config)#crypto dynamic-map dynmap 1
(config-crypto-map)#set transform-set vpnset
(config-crypto-map)#set isakmp-profile vpnclient-profile
(config-crypto-map)#reverse-route

暗号マップの設定

ezvpnmapdynmapは適宜変更してください。

(config)#crypto map ezvpnmap 1 ipsec-isakmp dynamic dynmap

暗号マップを外部インターフェースに適用

自分の環境ではDi0でPPPoEを利用しているので、そこに暗号マップを適用します。
Di0をFa0にオーバーロードしてるので、Fa0に適用しても同じはず。

(config)#int di0
(config-if)#crypto map ezvpnmap

DHCPプールの設定

VPNクライアントに割り振るIPアドレスを設定。

(config)#ip local pool ezvpn-pool 192.168.1.50 192.168.1.99

VPN Clientからつなぐ

WindowsではCiscoのメンバーページからダウンロードが必要だったと思いますが、macだとVPNクライアントが最初から入っています。
ネットワーク環境設定を開き、インターフェースをVPNVPNタイプをCisco IPSecでサービスの追加を行います。

あとは、上記で設定したアカウント名やパスワード、サーバアドレスのほかに、認証設定で共有シークレットとグループ名も忘れず入力してください。

まとめ

以上でおしまい。長かった!
設定項目が多いから、全部理解して設定するのは難しそうだ。。。