拠点間VPN(IPsec) Cisco基本設定

ネットワーク

拠点間VPN 構築

最初に

拠点間VPNについて試してみる。
それにしてもCiscoの実機がほしい。
普段使っているcisco891fjはあまりいじりたくないので検証用に安いの買おうかな。。

今回のVPNの構築については独学(勉強中)でググりながら試すものなので、
実務を行う上で使えるかはわかりません。
とりあえず下の図の構成で、
全ノード同士が通信ができ、プライベートIP同士でUbuntuからCentのWebサーバにアクセスできればOKとします。

構築

基本設定+IPアドレスの設定

ここは今回のテーマではないので軽く流す。
各ルータに基本的な設定を入れていく。
検証するのに邪魔なタイムアウトを無くす云々。

#conf t
(config)#ip no domain-lookup
(config)#line con 0
(config-line)#exec-timeout 0
(config-line)#logging synchronous
(config-line)#exit
(config)#hostname <host>

次にIPアドレスの設定

ホストIFIPMASKデフォルトゲートウェイ
Ubuntue0192.168.2.1255.255.255.0192.168.2.254
Slaxe0192.168.1.2255.255.255.0192.168.1.254
CentOSe0192.168.1.1255.255.255.0192.168.1.254
A-RouterG0/0192.168.1.254255.255.255.0
G0/1(Dialer1)10.1.2.2(IPCP)255.255.255.255
B-RouterG0/0192.168.1.254255.255.255.0
G0/1(Dialer1)10.1.3.2(IPCP)255.255.255.255
R1G0/110.1.2.1(lo0)255.255.255.255
G0/010.1.1.1255.255.255.252
R2G0/010.1.1.2255.255.255.252
G0/110.1.1.5255.255.255.252
G0/3(internet)DHCP
R3G0/110.1.1.6255.255.255.252
G0/010.1.1.9255.255.255.252
R4G0/010.1.1.10255.255.255.252
G0/110.1.3.1(lo0)255.255.255.255
IPアドレス設定

これらの通りに設定する。
Dialerについては前にPPPoEの設定時に設定する。

PPPoEの設定

PPPoE設定は以前に行ったのでそれをもとに設定。

PPPoE 基本設定例 端末型払い出し-固定IP【cisco】
構成図 要件 CiscoのIOSで設定端末型払い出し(一つのIPが割り当てられる)IPは固定で指定する認証はPPPoEサーバ側でローカル認証で行う userpasswordIPアドレスRouter-A (PPPoEクライアント)user-a...
R1, R4(PPPoEサーバ)
(config)#username <user> password 0 <pass>
(config)#in lo 0
(config-if)#ip add <ip> 255.255.255.255
(config-if)#no shut
(config-if)#exit
(config)#ip local pool <POOL名> <クライアントに割り当てるiP>
(config)#int Virtual-Template 1
(config-if)#mtu 1454
(config-if)#ip unnumberd lo 0
(config-if)#peer default ip address pool <POOL名>
(config-if)#ppp authentication chap
(config-if)#ppp ipcp dns 8.8.8.8
(config-if)#exit
(config)#bba-group pppoe <bbaグループ名>
(config-bba-group)#virtual-template 1
(config-bba-group)#exit
(config)#int g0/1
(config-if)#pppoe enable group <bbaグループ名>
(config-if)#no shut
A-Router, B-Router(PPPoEクライアント)
(config)#int dialer 1
(config-if)#ip add negotiated
(config-if)#ip mtu 1454
(config-if)#encapsulation ppp
(config-if)#dialer pool 1
(config-if)#dialer-group 1
(config-if)#ppp authentication chap callin
(config-if)#ppp chap hostname <user>
(config-if)#ppp chap password <pass>
(config-if)#ppp ipcp dns accept
(config-if)#exit
(config)#dialer-list 1 protocol ip permit
(config)#int g0/1
(config-if)#pppoe enable
(config-if)#pppoe-client dial-poool-number 1
(config-if)#no shut
(config-if)#exit
(config)#ip route 0.0.0.0 0.0.0.0 dialer 1

OSPFの設定

次にOSPFの設定を行う。

R1,R2,R3,R4がOSPFに所属する。
これらの間のネットワークは全てarea0に所属し、イーサネットとはいえネットワーク間に2台のルータしか存在しないため、OSPFタイプはPoint-to-Pointで動作させる。

また、R2のInternet宛の通信はシミュレータの関係上NAPTにしてあり、
このスタティックルートをデフォルトルートとして広告させる。

R1, R4についてはPPPoEとして直接接続のルートをlo0, PPPoEクライアント宛の2つを持っており、
これらは集約してOSPFに再配布させる。
例)R1 lo0:10.1.2.1, G0/1:10.1.2.2 → 集約:10.1.2.0/24(OSPFにredistribute)
ココが正直自分も理解できていない。
PPPoEに関するIPアドレスの設計方法と再配布方法など、
今回は繋がれば良しとしているが本来はどうなのだろう…

各ルータ

対象インターフェースのOSPFを有効化する。

(config)#router ospf 1
(config-router)#network <network address> 0.0.0.3 area 0

OSPFタイプをPoint-to-Pointに変更する。

(config)#int g0/0
(config-if)#ip ospf network point-to-point
R2

デフォルトルートを広告する。

//NAPT設定
(config)#access-list 1 permit any
(config)#ip nat inside souce list 1 interface G0/3 overload
(config)#int g0/3
(config-if)#ip nat outside
(config-if)#ip add dhcp
(config-if)#no shut
(config)#int g0/0
(config-if)#ip nat inside
(config)#int g0/1
(config-if)#ip nat inside
(config-if)#exit
(config)#ip route 0.0.0.0 0.0.0.0 <ネクストホップ>

//デフォルトルート広告
(config)#router ospf 1
(config-if)#default-information originate
R1, R4

PPPoEの直接接続リンクを再配布

(config)#router ospf 1
(config-router)#redistribute connected

集約

(config)#router ospf 1
(config-router)#summary-address 10.1.?.0 255.255.255.0

R1, R4のルート情報を確認

これらのようにR1,R4の直接接続ネットワークが集約されて広告されている。
ここで注意したいのがルーティングループ。詳しくは下の内容。

ルーティングループ

上記の写真を見ると、集約したルートにNull0インターフェースが追加されている。
10.1.3.0/24, 10.1.2.0/24これは手動で入れたわけではなく、自動で追加された。
これは集約した際に重要になるもので、実際に届いたら破棄する。

上の例を見てもうとわかるように、R3には集約ルートを広告しているため、
R4側でアサインされていないアドレス宛の通信だった場合はR4からデフォルトルートに流れてしまい、ループが発生してしまう。これを防ぐために、実際に届いたら破棄するNull0が追加されている。

以上の設定が完了すると、全てのノードが通信可能になる。
(UbuntuとCentOSはNAPT環境のため現在は疎通不可)

次にA-RouterとB-RouterでIPsecのVPNを構築し、プライベートアドレス通しで通信させる。

IPsec-VPN

A-RouterとB-RouterでIPsec-VPNでリンクするように設定する。
インターネットへの通信は各ルーターからそれぞれ外に出る。

これを実装するにはACLに気をつける必要がある。

PAT設定

まずはA-RouterとB-RouterのPAT(NAPT)を有効にする。

(config)#ip access-list extended NAPT
(config-ext-nacl)#10 deny ip any 192.168.2.0 0.0.0.255 //A-Routerの場合。Bは192.168.1.0
(config-ext-nacl)#20 permit ip any any

A-RouterでCent宛の通信にNAPTが適用されている場合、Centに届くパケットの
送信元がグローバルIPアドレスになってしまい、帰りのパケットがIPsecの対象外になってしまう。
そこで、上のように相手側のプライベートアドレス宛はNAPTの対象から外す。

(config)#ip nat inside source list NAPT interface dialer 1 overload
(config)#int dialer 1
(config-if)#ip nat outside
(config-if)#int g0/0
(config-if)#ip nat inside

これでIPsecを経由する通信以外は通常通りネットワークに出るようになった。

次にIPsec-VPNの設定を行う。

IPsec-VPN設定

IPsec-VPNにはフェーズ1、フェーズ2がある。

フェーズ1

フェーズ1のポリシーを設定する。

ISAKMPポリシーを設定する。
番号は優先度。

(config)#crypt isakmp policy 1

ISAKMP SAについて、
暗号化アルゴリズム、ハッシュアルゴリズム、認証方式、DHグループ、 事前共有鍵を決定する。
これらは対向のVPN終端装置と揃える必要がある。
※見ての通り、対向のIPアドレスが必要になる。
ISAKMPではMainモード、Aggressiveモードがあり、動的IP(グローバルが動的、リモートアクセスVPN)の場合はAggressiveモードにする。今回はMainモード。

(config-isakmp)#encr aes 128
(config-isakmp)#hash sha
(config-isakmp)#authentication pre-share
(config-isakmp)#group 2
(config-isakmp)#exit
(config)#crypto isakmp key <PASS> address <PeerのIP>

フェーズ2

フェーズ2のポリシーを設定する。

フェーズ2ではフェーズ1で作成したISAKMP SAの上にIPsec SAを生成する。

(config)#crypt ipsec transform-set <NAME> <トランスフォーム1> <トランスフォーム2>

トランスフォームには種類があり、ESP,AHの暗号化や認証の組み合わせを設定する。
今回は、esp-aes 256, esp-sha-hmacの組み合わせ。

モードはデフォルトのtunnelモード

IPsec-VPNを経由させる通信をACLで設定する。

(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 //A-Router。Bは逆

暗号マップの設定

(config)#crypt map <MAPNAME> 1 ipsec-isakmp
(config-crypto-map)#set peer 10.1.3.2 //A-Routerの場合。(対向アドレス)
(config-crypto-map)#match address 100
(config-crypto-map)#set transform-set <NAME> //トランスフォームセットの名前

インターフェースへの適用

(config)#int dialer 1
(config-if)#crypto map <MAPNAME> //暗号マップを適用させる

以上で設定は完了。

確認

ISAKMP SAの確認

#show crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst             src             state          conn-id status
10.1.3.2        10.1.2.2        QM_IDLE           1001 ACTIVE

IPsec SAの確認

#show crypto ipsec sa

接続の確認

UbuntuからApacheを起動しているCentOSにアクセスしてみる。

アクセスすることが出来た。
次にパケットをキャプチャした内容を見てみる。

A-RouterのG0/0(LAN側)

A-RouterのG0/1(WAN側)
CentOS宛の通信はESPに変わり対向ルータに送られている。

B-RouterのG0/0(LAN側)
B-Routerにて届いたESPを外し、LANに転送される。

IPsecVPNのACL外の通信はNAPTされインターネットに送信される。
下の例はUbuntuからGoogleのDNSに問い合わせしている例。

SlaxからもVPNを経由出来ている。

以上。

コメント

タイトルとURLをコピーしました