Shin's IT Diary

サーバ、ネットワーク、PCに関してのメモとかを書き残してます。

Ciscoルータを使ったL2TPv3 over IPsecの設定

どうもこんばんわ。皆さん。
どんどん寒さが増してきましたね。ここ数日かなり冷え込んでる気がします。 

風邪などひかないように気をつけてくださいね。
インフルエンザも流行っているようですのでお気をつけて。

さて、今回は前回記事にした際に使った「L2TPv3」の続きです。
前回は「L2TPv3」だけでトンネリングを構築しましたが
このままでは暗号化の設定を一切していないので中身が丸見えです。
そこで、暗号化を行ってくれる「IPsec」をかぶせて通信を安全にしようというのが今回の目的。

では、やっていきましょう。
なお、今回の検証には2960シリーズの機器を使用しています。機種によって使える鍵の種類に変動がありますので注意してください。


最後のほうに設定の例を載せてありますので「解説いいからさっさと設定方法教えろや!!」って方は最下層までスクロール!!!

■L2TPv3 over IPsecとは?

IPsecは、暗号化システムの技術によりネットワーク層にて、データのセキュリティを保護するのに使用されるプロトコルです。
IPsecは、AH、ESP、IKEなどのプロトコルから構成されています。
このIPsecを使用したVPN接続により、インターネットなどの公共インフラでも安全に通信することが可能になります。
ネットワークエンジニアとして:IPsec ( Security Architecture for IP )



■設定方法


 ♦IKEフェイズ1


まずは、ポリシーの設定から。
policy_numberの数字は小さければ小さいほど優先順位が高くなります(1は最優先)

Router(config)# crypto isakmp policy <policy_number>
Router(config-isakmp)# encryption { 3des | aes | des }
Router(config-isakmp)# hash { md5 | sha }
Router(config-isakmp)# authentication { pre-share | rsa-encr | rsa-sig }
Router(config-isakmp)# group { 1 | 2 | 5}
Router(config-isakmp)# exit
コマンド 意味 種類 デフォルト
encryption 暗号アルゴリズム。メッセージを暗号化。
  • DES
  • 3DES
  • AES192
  • AES256
  • des
    hash ハッシュ。メッセージの認証と鍵計算時に使用する。
  • MD5
  • SHA
  • SHA
    authentication ピア接続の際に使用する認証方式。
  • pre-share
  • rsa-encr
  • rsa-sig
  • rsa-sig
    group 鍵計算のために使うパラメータ。DHアルゴリズムで暗号化して送信する。
  • 1
  • 2
  • 5
  • 1



    これでIKEフェイズ1が終了です。


    設定が終わったら次にVPN接続相手を認証する「鍵」と「ピアアドレス」を設定します。

    Router(config)# crypto isakmp key { 0 | 6 }  <key_password> address <ipaddr> <subnetmask>


    keyの後の数字は

  • 0暗号化なしで送信
  • 6暗号化ありで送信
    を意味します。お好きなほうを選んでください。

    key_passwordには鍵を入力します。接続相手と同じ鍵を使ってください。(例:相手がhogehogeなら自身もhogehogeを使用)
    addressには接続相手のIPを入れてください。また、subnetは省略可です。

    ・オプション1 keepalive

    Router(config)# crypto isakmp keepalive <second> <retiry_time> {peridodic | on-demand }

    secondで生存時間(秒)を指定します。リアルタイムで確認する際どの時間まで生存させるかを指定します。
    retriy_timeでは、接続が落ちたときに何秒後に再接続するのかを指定します。
    例:

    Router(config)# crypto isakmp keepalive 10 20 peridodic


     ・オプション2 password-encryption

    Router(config)# key config-key password-encryption
    Router(config)# password encryption aes

    コンフィグ上でのパスワードを暗号化します。セキュリティ上の対策にどうぞ。





    ♦IKEフェイズ2


    さて次はIPsecの設定から。その前にどの通信をトンネリングするか設定するためにaccess-listを定義します。

    Router(config)# access-list 100 permit ip 192.168.100.0 0.0.0.255 192.168.200.0 0.0.0.255

    ACLについてはこちらを参照してください。→ 拡張ACL:ネットワークエンジニアとして
    では設定に入ります。



    ipsec 暗号化設定
    Router(config)# crypto ipsec transform-set <transform-set_name> { trans1 } { trans2 } {trasn3}
    Router(cfg-crypto-trans)# mode { tunnel | transport }
    Router(cfg-crypto-trans)# exit


    crypto ipsec transform-setで「IPsec」で使用するパラメータを指定します。
    transform-set_name部分はお好きな名前をどうぞ
    パラメータ(trans)では、暗号化認証セキュリティプロトコルのうち最低でも下から2つを選択します。

    コマンド 種類 デフォルト
    ESP暗号化
  • esp-aes
  • esp-aes 192
  • esp-aes 256
  • esp-des
  • esp-3des
  • -
    ESP認証
  • esp-md5-hmac
  • esp-sha-hmac
  • -
    AH
  • ah-md5-hmac
  • ah-sha-hmac
  • -


    modeではIPsecVPNトンネリングに使う(tunnel)のか、暗号化をメインに使うか(transport)で設定します。
    環境に合わせて変更しましょう。


    ipsec map設定

    Router(config)# crypto map <map_name> <number> ipsec-isakmp
    Router(config-crypto-map)# set peer <remote_addr>
    Router(config-crypto-map)# set transform-set <transform-set_name>
    Router(config-crypto-map)# match address <access_list_name> or <access_list_number>
    Router(config-crypto-map)# exit


    map_nameにはお好きな名前を設定した後、numberで番号を決めます。数字が低ければ高優先度になります

    remote_addrVPN構築相手を指定します。ホスト名で指定することもできます。

    set transform-setでは先ほど定義した暗号形式の名前を定義します。間違えると接続不可になりますので気をつけてください。

    match addressにはじめ定義したaccess-listを記載します。このとき、名前付きACLを使用することもできます。


    これでIPsecの設定が終わりました。最後に使用するインターフェイスに適用してあげます。






    ♦Interfaceへの適用


    あとは使用するinterfaceに適用します。
    PPPoEを使用している場合には「dialer」に割り振ることをお勧めします。

    Router(config)# interface <vpn_source_port>
    Router(config-if)# crypto map <map_name>  

    map nameにはipsec map設定で使った名前を定義しておきます。

    このインターフェイスへの適用をもってISAKMPが有効化されてVPNを設置することができます。忘れずに設定しましょう!!








    以上で設定が終わりました!あとは前回設定した「L2TPv3」を設定すると終了となります。
    お疲れさまでした。





    ♦設定例


    最後に、今回構築した内容を設定例として残しておきます。
    ご参考になれば…。

    f:id:Sakurazaka-Shin:20160120042308p:plain
    初期条件としてPPPoE経由で
    R2→209.168.100.1
    R3→209.168.100.2
    が割り当て済みとしてあります。

    R2

    R2(config)# psedowire-class l2tpv3
    R2(config-xx)# encapsulation l2tpv3 
    R2(config-xx)# ip local interface dialer 1
    
    
    R2(config)# crypto isakmp policy 1
    R2(config-isakmp)# encryption aes256
    R2(config-isakmp)# hash sha 
    R2(config-isakmp)# authentication rsa-encr |
    R2(config-isakmp)# group 2
    R2(config-isakmp)# exit
    
    R2(config)# crypto isakmp key 6 cisco address 209.168.100.2
    
    R2(config)# crypto isakmp keepalive 10 20
    
    R2(config)# crypto ipsec transform-set l2tpv3_ipsec esp-aes-256 esp-sha-hmac
    R2(cfg-crypto-trans)# mode transport 
    R2(cfg-crypto-trans)# exit
    
    R2(config)# crypto map ipsec_l2tpv3_map 1 ipsec-isakmp
    R2(config-crypto-map)# set peer 209.168.100.2
    R2(config-crypto-map)# set transform-set l2tpv3_ipsec
    R2(config-crypto-map)# match address 100
    R2(config-crypto-map)# exit
    
    R2(config)# access-list 100 permit ip any any
    
    R2(config)# interface dialer 1
    R2(config-if)# crypto map ipsec_l2tpv3_map   
    
    R2(config-if)# interface FastEthernet 0/1
    R2(config-if)# xconnect 209.168.100.2 1 encapsulation l2tpv3 pw-class l2tpv3
    

    R3

    R3(config)# psedowire-class l2tpv3
    R3(config-xx)# encapsulation l2tpv3 
    R3(config-xx)# ip local interface dialer 1
    
    
    R3(config)# crypto isakmp policy 1
    R3(config-isakmp)# encryption aes256
    R3(config-isakmp)# hash sha 
    R3(config-isakmp)# authentication rsa-encr |
    R3(config-isakmp)# group 2
    R3(config-isakmp)# exit
    
    R3(config)# crypto isakmp key 6 cisco address 209.168.100.1
    
    R3(config)# crypto isakmp keepalive 10 20
    
    R3(config)# crypto ipsec transform-set l2tpv3_ipsec esp-aes-256 esp-sha-hmac
    R3(cfg-crypto-trans)# mode transport 
    R3(cfg-crypto-trans)# exit
    
    R3(config)# crypto map ipsec_l2tpv3_map 1 ipsec-isakmp
    R3(config-crypto-map)# set peer 209.168.100.1
    R3(config-crypto-map)# set transform-set l2tpv3_ipsec
    R3(config-crypto-map)# match address 100
    R3(config-crypto-map)# exit
    
    R3(config)# access-list 100 permit ip any any
    
    R3(config)# interface dialer 1
    R3(config-if)# crypto map ipsec_l2tpv3_map   
    
    R3(config-if)# interface FastEthernet 0/1
    R3(config-if)# xconnect 209.168.100.1 1 encapsulation l2tpv3 pw-class l2tpv3