カテゴリー
2022年 CCNP Enterprise Cisco DDNS VPN コマンド コンピューター トラブルシューティング ルーティング 技術一般 認定資格

Cisco ルーターでリモートアクセス VPN の設定

この設定で、リモートアクセスVPNが正常に張れることまでは確認できたのですが、なぜかルーターのLAN側にルーティングされなくて悩んでます。解決したら、また更新しようと思います。

aaa new-model
!
!
aaa authentication login userauth local
aaa authorization network groupauth local
!
username kkint password 7 kkint-pass
!
crypto isakmp policy 1
 encr 3des
 hash md5
 authentication pre-share
 group 2
!
crypto isakmp client configuration group VPNCLIENT
 key cisco
 dns 172.16.23.254
 domain kkinternational.com
 pool ezvpn1
 save-password
!
crypto isakmp profile vpnclient-profile
   match identity group VPNCLIENT
   client authentication list userauth
   isakmp authorization list groupauth
   client configuration address respond
!
crypto ipsec transform-set myset esp-3des esp-md5-hmac
!
crypto dynamic-map dynmap 1
 set transform-set myset
 set isakmp-profile vpnclient-profile
 reverse-route
!
interface FastEthernet0
 description To the Internet
 ip address dhcp
 duplex auto
 speed auto
 crypto map ezvpnmap
カテゴリー
2022年 CCNP Enterprise Cisco コマンド コンピューター トラブルシューティング 技術一般 自動化 認定資格

Cisco EEM とは

PVアクセスランキング にほんブログ村 にほんブログ村 ブログブログへ
にほんブログ村

EEM とは

EEM (Embedded Event Manager) を使うことで、何らかのイベント発生時をトリガーとして、指定したアクションを実行することが可能となります。

IOS、IOS XR、IOS XE、NX-OS で利用ができ、EEM は IPBASE から利用できるので、安価なモデルでも使用可能となります。

利用シーンとして例えば、以下のようなケースがあります。

  • 特定のインターフェースを監視し、そのインターフェースがっダウンとなったら、管理者へメールを送信
  • CPU 使用率を監視し、事前に決めた閾値を超えたら、CPU 使用率の情報を取得してシスログで送信
  • インターフェースのエラー率を監視し、事前に決めたエラー率を超えた場合、該当インターフェースをシャットダウンさせSNMP トラップを送信

私のケースでは、IOS version 15.9 を使用して確認してます。

EEM の構成要素

以下の3つから構成されます。

  1. Event Director
  2. Policy
  3. EEMサーバ

事前に定義した Event と Action を Policy と呼びます。

Event DirectorPolicy に従ってイベントを監視し、

アクションを実行させる場合に、EEM サーバーに通知をします。

具体的には、Event Manager の中で、以下の項目を指定できます。

C892-02(config)#event manager ?
  applet       Register an Event Manager applet
  detector     Set Embedded Event Manager detector information
  directory    Set Embedded Event Manager directory information
  environment  Set an Embedded Event Manager global environment variable
  history      Set Embedded Event Manager history information
  policy       Register an Embedded Event Manager policy
  scheduler    Set Event Manager scheduler options
  session      Set Embedded Event Manager session attributes

Event Director で監視可能な対象(よく使うだろうもの)は、以下の通りとなります。

  • SNMP
    SNMP MIBオブジェクトを監視し、オブジェクトの値が任意の値とマッチするか、任意の閾値を越えた場合にイベント通知
  • Syslog
    事前に定義した文字列をトリガーにイベント通知
  • Timer
    absolute-time-of-day、countdown、watchdog、CRON の 4 タイプのタイマーをサポートし、それぞれイベントを通知
  • Interface Counter
    インタフェースカウンタが閾値を超えた際にイベントを通知
  • CLI
    CLIを正規表現で検査し、マッチした場合にイベントを通知
  • OIR
    モジュール等のOIRを検知した場合にイベント通知(Online Insertion and Removal:活性挿抜(いわゆるホットスワップ))
  • SNMP Proxy
    外部からのSNMPトラップを受けてイベントを通知
  • Routing
    ルーティングテーブルの変化を検知した際にイベントを通知
  • NetFlow
    NetFlow情報監視し、オブジェクトの値が任意の値とマッチ、あるいは任意の閾値を越えた場合にイベント通知
  • Neighbor Discovery
    CDPまたはLLDPによる情報を受けてイベントを通知
  • Mac Address Table
    MACアドレステーブルの変化を検知した際にイベントを通知

Event Director の監視対象イベントとして設定できる項目全ては、以下の通りです。

C892-02(config-applet)#event ?
  application         Application specific event
  cli                 CLI event
  config              Configuration policy event
  counter             Counter event
  env                 Environmental event
  identity            Identity event
  interface           Interface event
  ioswdsysmon         IOS WDSysMon event
  ipsla               IPSLA Event
  neighbor-discovery  Neighbor Discovery event
  nf                  NF Event
  none                Manually run policy event
  oir                 OIR event
  resource            Resource event
  rf                  Redundancy Facility event
  routing             Routing event
  rpc                 Remote Procedure Call event
  snmp                SNMP event
  snmp-notification   SNMP Notification Event
  snmp-object         SNMP object event
  syslog              Syslog event
  tag                 event tag identifier
  timer               Timer event
  track               Tracking object event

イベントを受けた後に実行出来る主なアクションは、以下の通りです(よく使われるもの)。

  • コマンドの実行や結果の取得
  • SNMPへのアクセス
  • 再起動
  • EEM Policyの呼び出し
  • スイッチオーバー
  • Eメール送信
  • SNMP Trap送信
  • Syslog送信

アクションとして設定できる項目全ては、以下の通りです。

C892-02(config-applet)#action 1.0 ?
  add                Add
  append             Append to a variable
  break              Break out of a conditional loop
  cli                Execute a CLI command
  cns-event          Send a CNS event
  comment            add comment
  context            Save or retrieve context information
  continue           Continue to next loop iteration
  counter            Modify a counter value
  decrement          Decrement a variable
  divide             Divide
  else               else conditional
  elseif             elseif conditional
  end                end conditional block
  exit               Exit from applet run
  file               file operations
  force-switchover   Force a software switchover
  foreach            foreach loop
  gets               get line of input from active tty
  handle-error       On error action
  help               Read/Set parser help buffer
  if                 if conditional
  increment          Increment a variable
  info               Obtain system specific information
  mail               Send an e-mail
  multiply           Multiply
  policy             Run a pre-registered policy
  publish-event      Publish an application specific event
  puts               print data to active tty
  regexp             regular expression match
  reload             Reload system
  set                Set a variable
  snmp-object-value  Specify value for the SNMP get request
  snmp-trap          Send an SNMP trap
  string             string commands
  subtract           Subtract
  syslog             Log a syslog message
  track              Read/Set a tracking object
  wait               Wait for a specified amount of time
  while              while loop

EEM の設定例

1. インターフェースが “Administratively down” されたら、”no shutdown” コマンドを発行

インタフェースがシャットダウンされると「Interface , changed state to administratively down」というログが出力されます。このシステムログのメッセージをイベントとして検出してそれをトリガーとして、CLI コマンドで “no shutdown” を発行するアクションを定義します。

まず、VLAN113をシャットダウンした時のシスログメッセージを確認します。

C892-02(config)#int vlan 113
C892-02(config-if)#shutdown
C892-02(config-if)#
017611: Mar  3 18:51:50.925: %LINK-5-CHANGED: Interface Vlan113, changed state to administratively down

上記のメッセージが出力されるのが分かります。

event manager applet No_Shutdown_VLAN113
 description "issue no shut"
 event syslog pattern "Interface Vlan113, changed state to administratively down"
 action 1.0 cli command "enable"
 action 2.0 cli command "config t"
 action 3.0 cli command "interface vlan113"
 action 4.0 cli command "no shutdown"

アクションを定義する時のポイントは、 “enable” や “config t”, “interface xxx” など、対象となるコマンドが発行できるモードまで進むコマンドも併せて定義するところです。

実行されたEEM のログを見たい場合、デバッグコマンドを実行しておきます。

debug event manager action cli

デバッグコマンド投入後、1の例の EEM を実行すると、以下のようなログが出力されます。VLAN113 がシャットされたことを検知して、”no shut” コマンドが発行されて、再び VLAN113 が Up になってますね。

C892-02(config)#int vlan 113
C892-02(config-if)#shut
C892-02(config-if)#
017631: Mar  3 18:58:36.864: %FW-6-DROP_PKT: Dropping tcp session 116.223.132.218:443 172.16.23.4:49699  due to  RST inside current window with ip ident 64807 tcpflags 0x8014 seq.no 3652153217 ack 1529682709
017632: Mar  3 18:58:38.468: %LINK-5-CHANGED: Interface Vlan113, changed state to administratively down
017633: Mar  3 18:58:38.472: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : CTL : cli_open called.
017634: Mar  3 18:58:38.480: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : CCC
017635: Mar  3 18:58:38.480: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : Cisco 982 (Serial Number: FGL151727WV)
017636: Mar  3 18:58:38.480: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : This is Cisco 982-02 @ Living room for Internet settings.
017637: Mar  3 18:58:38.480: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : No one is allowed to login to this system except Kanta Nakashima.
017638: Mar  3 18:58:38.480: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT :
017639: Mar  3 18:58:38.480: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : C892-02>
017640: Mar  3 18:58:38.480: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : IN  : C892-02>enable
017641: Mar  3 18:58:38.492: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : C892-02#
017642: Mar  3 18:58:38.492: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : IN  : C892-02#config t
017643: Mar  3 18:58:38.508: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : Enter configuration commands, one per line.  End with CNTL/Z.
017644: Mar  3 18:58:38.508: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : C892-02(config)#
017645: Mar  3 18:58:38.508: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : IN  : C892-02(config)#interface vlan113
017646: Mar  3 18:58:38.520: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : C892-02(config-if)#
017647: Mar  3 18:58:38.520: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : IN  : C892-02(config-if)#no shutdown
017648: Mar  3 18:58:38.532: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : OUT : C892-02(config-if)#
017649: Mar  3 18:58:38.532: %HA_EM-6-LOG: No_Shutdown_VLAN113 : DEBUG(cli_lib) : : CTL : cli_close called.
017650: Mar  3 18:58:38.536:
017651: Mar  3 18:58:38.536: tty is now going through its death sequence
017652: Mar  3 18:58:40.524: %LINK-3-UPDOWN: Interface Vlan113, changed state to up
C892-02(config-if)#

2. 定期的にコマンドを実行し、その結果を NVRAM に書き込む

例えば、毎日午前 7時に “show ip route” コマンドを実行し、その内容を NVRAM に書き込んでいきます。

event manager applet Router-02
event timer cron name _EEMinternalname0 cron-entry "0 7 * * *"
action 1.0 cli command "enable"
action 2.0 cli command "show ip route | append nvram:Router-02"

まず、毎日午前7時という cron タイマをイベントとして登録します。「毎日午前7時」なので、cron-entry のあとに ”0 7 * * *” を指定します。

ちなみに、”0 18 * * *” だと「午後の6時」になります。

そして、アクションとして ”show ip route | append nvram:Router-02” の CLI コマンドを実行します。

“show ip route” の出力先として NVRAM 上の Router-02 ファイルを追記で指定しています。

NVRAM 上のファイルを表示する場合は、 more コマンドを使って、ファイルなを指定します。

more nvram:Router-02 <<< ファイル名を指定

EEM は CLI を使った設定と、Tcl スクリプトを使ってプログラミングする方法の 2種類があります。

CLI ベースは設定が簡単である反面、細かい制御をすることは出来ません。

逆に Tcl ベースだと、細かい制御をすることが出来ますが、Tcl スクリプトを扱えないといけませんので、若干敷居が高いかもしれません。ちょっとしたことをやりたいだけなら、CLI での設定でも十分でしょう。

この EEM はちょっといろいろ使えそうです。自宅の実環境で使ってみて、具体例をまた紹介したいと思います。

おもしろかったら、フォローしてください!

世の中には楽しいことがいっぱい - にほんブログ村

関連する記事:

最近の記事:

カテゴリー
2022年 CCNP Enterprise Cisco VPN コマンド コンピューター トラブルシューティング ルーティング 技術一般 認定資格

Cisco ルーターで VPN (2) サイト間 GRE over IPSec VPN 接続

PVアクセスランキング にほんブログ村 にほんブログ村 ブログブログへ
にほんブログ村

前回は、サイト間 IPSec 接続を試しました。

今度は、IPSec トンネルの中に GRE トンネルを通し、インターネット越しにダイナミックルーティングプロトコルのやり取りができるようにしてみたいと思います。

いわゆる GRE over IPSec というやつです。

今回は、両側のルーターで OSPF を動かし、お互いの LAN 側の経路情報をインターネット越しに交換させます。

最終系は、こんなイメージです。

GRE の設定

GRE over IPSec と聞くと、何だか難しく聞こえますが、結局やっていることは、GRE トンネルの設定と IPSec トンネルの設定です。これらを同時に使っているだけです。

まずは、GRE トンネルの設定から見てみます。

2台のルーター間で GRE トンネルを確立させるためには、Tunnel インターフェスが必要となります。

この Tunnel インターフェースで設定した IPアドレスを使って、通信をカプセリングします。カプセリングをすることにより、ダイナミックルーティングの情報がインターネット越しにできる(GRE トンネルの中を通過する)ようになります。

interface Loopback1
 ip address 111.1.1.1 255.255.255.255
 !
!
interface Tunnel1
 ip address 192.168.1.1 255.255.255.0
 ip mtu 1372
 tunnel source Loopback1 <<< 1
 tunnel destination 222.1.1.1 <<< 2

Tunnel インターフェースでは、IPアドレス以外にも設定すべき項目が 2つあります。この2つの設定も行わないと、インターフェースは Up/Up にはなりません。

  1. Tunnel Source
  2. Tunnel Destination

1 の Tunnel Source ですが、物理インターフェースであっても、Loopback インターフェースであってもどちらでも良いです。

Loopback インターフェースはダウンすることがないですので、こちらを使った方が良いでしょう。特にインターネットルーターで、DHCP でアドレスをもらっている場合、IPアドレスが変わってしまいます。変更の度に Tunnel Source/Destinatio の設定も変えないといけなくなるので、それを避けるためにもLoopback インターフェースが良いです。

Tunnel インターフェースには、他にも色々と設定項目はありますが、上記2つが最低限必要となる設定です。

MTU は 1372 に変更しておきます。

今回の設定では、R1 の Loopback 1 インターフェースのIPアドレスを使用してます。

次に2の Tunnel Destination です。

今回は、対向側になる R2 の Loopback インターフェースの IPアドレスを指定します。

最後に、Network コマンドを使って、Tunnel インターフェースでも OSPF を有効にします。

これにより、Tunnel インターフェースが OSPF の広報をするタイミング GRE トンネルが作成され、OSPF の広報情報が GRE でカプセリングされ、OSPF のネイバーが張れます。

router ospf 1
 log-adjacency-changes
 network 172.16.16.0 0.0.7.255 area 0 <<< LAN segment
 network 192.168.1.1 0.0.0.0 area 0 <<< Tunnel 1

対向側になる R2 の設定は、こんな感じです(GRE の設定に関連する部分のみを抜粋しています)。

interface Loopback1
 ip address 222.1.1.1 255.255.255.255
 !
!
interface Tunnel1
 ip address 192.168.1.2 255.255.255.0
 ip mtu 1372
 tunnel source Loopback1
 tunnel destination 111.1.1.1
 !
router ospf 1
 log-adjacency-changes
 network 172.16.24.0 0.0.0.127 area 0 <<< LAN segment
 network 192.168.1.2 0.0.0.0 area 0 <<< Tunnel 1

これで、GRE トンネル経由で、2つのルーター間の OSPF ネイバーが張れます。

R1#sh ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.254     0   FULL/  -        00:00:36    192.168.2.254     Tunnel1

GRE over IPSec の設定

さて、いよいよ本題の GRE over IPSec の設定に入ります。

以下では、暗号化マップを使った IPSec の設定を行います。

と言っても、基本的には先ほどの GRE トンネルの設定と IPSec トンネルの設定を組み合わせるだけです。

組み合わせた時の設定のポイントですが、Crypto マップのポリシーで指定している「IPSec の対象とするアドレス」です。

crypto map M-ipsec 1 ipsec-isakmp 
 set peer 10.0.0.253
 set transform-set IPSEC 
 match address A-ipsec <<< IPSec 対象アドレス

今回、A-ipsec という ACL を指定していますが、その中が以下のものです。

ip access-list extended A-ipsec
 permit gre host 111.1.1.1 host 222.1.1.1

111.1.1.1222.1.1.1 を指定していますね。つまり、Tunnel インターフェースの IPアドレスです。つまり、これらのIPアドレスは、GRE トンネルの Source と Destination で指定ている IPアドレスです。

ということは、動作としては、

  1. OSPF のネイバーを張ろうとすると、
  2. GRE トンネルを張ろうとし、
  3. IPSec トンネルが形成される
  4. それからGRE トンネルが形成され、
  5. OSPF のネイバーが張れる

という流れになります。

同じ考え方で R2 も設定します。

crypto map M-ipsec 1 ipsec-isakmp 
 set peer 10.0.0.254
 set transform-set IPSEC 
 match address A-ipsec
!
ip access-list extended A-ipsec
 permit gre host 222.1.1.1 host 111.1.1.1

これで GRE over IPSec の設定が完了です。R2 のルーティングテーブルを見てみましょう。

R2#sh ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is 0.0.0.0 to network 0.0.0.0

S*    0.0.0.0/0 is directly connected, FastEthernet0
      10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
O E2     10.0.1.135/32 [110/20] via 192.168.1.1, 00:14:09, Tunnel1
O IA     10.74.6.0/24 [110/1002] via 192.168.1.1, 00:14:09, Tunnel1
O IA     10.200.1.0/24 [110/1002] via 192.168.1.1, 00:14:09, Tunnel1
      172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
O E2     172.16.0.0/27 [110/20] via 192.168.1.1, 00:14:09, Tunnel1
O E2     172.16.0.32/27 [110/20] via 192.168.1.1, 00:14:09, Tunnel1
O        172.16.16.0/21 [110/1001] via 192.168.1.1, 00:14:09, Tunnel1
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, Tunnel1
L        192.168.1.2/32 is directly connected, Tunnel1
      222.1.1.0/32 is subnetted, 1 subnets
C        222.1.1.1 is directly connected, Loopback1

R1 の LAN 側になるセグメント情報(172.16.16.0 /21)が R2 のルーティングテーブル上で見えますね。これで GRE over IPSec の設定は完了です。

ですがここで一つ疑問が湧いてきました。

Loopback インターフェースで指定している IPアドレスって、到達不能のものであるはずなのに、GRE トンネルってどうやって張れるのだろう?

不思議だったので調べてみたら、Cisco の GRE の説明のページに記載がありました。

有効なトンネル送信元は、それ自体がアップ/アップ状態で、IPアドレスが設定されているインターフェースで構成されます。

有効なトンネル宛先は、ルーティング可能な宛先です。ただし、到達可能である必要はありません。

Tunnel Destination の IPアドレスは、到達可能でなくても良いのです。なるほどです。

設定内容

R1

R1#sh run 
Building configuration...

Current configuration : 2235 bytes
!
! Last configuration change at 01:30:10 UTC Wed Feb 14 2022
!
version 15.0
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
enable secret 5 cisco
enable password cisco-ena
!
no aaa new-model
!
!
!
!
!
dot11 syslog
ip source-route
!
!
!
!
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
license udi pid CISCO1812-J/K9 sn xxxxxxx
!
!
! 
!
crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key vpnuser address 10.0.0.253
!
!
crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac 
 mode transport
!
crypto map M-ipsec 1 ipsec-isakmp 
 set peer 10.0.0.253
 set transform-set IPSEC 
 match address A-ipsec
!
!
!
!
!
interface Loopback1
 ip address 111.1.1.1 255.255.255.255
 !
!
interface Tunnel1
 ip address 192.168.1.1 255.255.255.0
 ip mtu 1372
 tunnel source Loopback1
 tunnel destination 222.1.1.1
 !
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
 !
!
interface FastEthernet0
 ip address 10.0.0.254 255.255.255.0
 duplex auto
 speed auto
 crypto map M-ipsec
 !
!
interface FastEthernet1
 no ip address
 duplex auto
 speed auto
 !
!
interface FastEthernet2
 switchport access vlan 100
 !
!
interface FastEthernet3
 switchport access vlan 100
 !
!
interface FastEthernet4
 switchport access vlan 100
 !
!
interface FastEthernet5
 switchport access vlan 100
 !
!
interface FastEthernet6
 switchport access vlan 100
 !
!
interface FastEthernet7
 switchport access vlan 100
 !
!
interface FastEthernet8
 switchport access vlan 100
 !
!
interface FastEthernet9
 switchport access vlan 100
 !
!
interface Vlan1
 no ip address
 !
!
interface Vlan100
 ip address 172.16.23.254 255.255.248.0
 !
!
router ospf 1
 log-adjacency-changes
 network 172.16.16.0 0.0.7.255 area 0
 network 192.168.1.1 0.0.0.0 area 0
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip route 0.0.0.0 0.0.0.0 FastEthernet0
!
ip access-list extended A-ipsec
 permit gre host 111.1.1.1 host 222.1.1.1
!
!
!
!
!
!
!
control-plane
 !
!
!
line con 0
 password cisco-con
 login
line aux 0
line vty 0 4
 password cisco-vty
 login
!
end

R2

R2#sh run 
Building configuration...

Current configuration : 2393 bytes
!
! Last configuration change at 01:19:06 UTC Wed Feb 14 2022
!
version 15.0
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
enable secret 5 cisco
enable password cisco-ena
!
no aaa new-model
!
!
!
memory-size iomem 25
!
!
dot11 syslog
ip source-route
!
!
!
!
ip cef
no ip domain lookup
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
license udi pid CISCO1812-J/K9 sn xxxxxx
!
!
vlan 100
 name home-data
!
vlan 111
 name MGMT
!
vlan 200
 name PBR-test
!
! 
!
crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key vpnuser address 10.0.0.254
!
!
crypto ipsec transform-set IPSEC esp-3des esp-md5-hmac 
 mode transport
!
crypto map M-ipsec 1 ipsec-isakmp 
 set peer 10.0.0.254
 set transform-set IPSEC 
 match address A-ipsec
!
!
!
!
!
interface Loopback1
 ip address 222.1.1.1 255.255.255.255
 !
!
interface Tunnel1
 ip address 192.168.1.2 255.255.255.0
 ip mtu 1372
 tunnel source Loopback1
 tunnel destination 111.1.1.1
 !
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
 !
!
interface FastEthernet0
 ip address 10.0.0.253 255.255.255.0
 duplex auto
 speed auto
 crypto map M-ipsec
 !
!
interface FastEthernet1
 no ip address
 duplex auto
 speed auto
 !
!
interface FastEthernet2
 switchport access vlan 100
 !
!
interface FastEthernet3
 switchport access vlan 100
 !
!
interface FastEthernet4
 switchport access vlan 100
 !
!
interface FastEthernet5
 switchport access vlan 100
 !
!
interface FastEthernet6
 switchport access vlan 100
 !
!
interface FastEthernet7
 switchport access vlan 100
 !
!
interface FastEthernet8
 switchport access vlan 100
 !
!
interface FastEthernet9
 switchport access vlan 100
 !
!
interface Vlan1
 no ip address
 !
!
interface Vlan100
 ip address 172.16.24.126 255.255.255.128
 !
!
router ospf 1
 log-adjacency-changes
 network 172.16.24.0 0.0.0.127 area 0
 network 192.168.1.2 0.0.0.0 area 0
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip route 0.0.0.0 0.0.0.0 FastEthernet0
!
ip access-list extended A-ipsec
 permit gre host 222.1.1.1 host 111.1.1.1
!
!
!
!
!
!
!
control-plane
 !
!
!
line con 0
 password cisco-con
 login
line aux 0
line vty 0 4
 password cisco-vty
 login
!
end

おもしろかったら、フォローしてください!

世の中には楽しいことがいっぱい - にほんブログ村

関連する記事

最近の記事:

カテゴリー
2022年 CCNP Enterprise Cisco VPN コマンド コンピューター トラブルシューティング ルーティング 技術一般 認定資格

Cisco ルーターで VPN (1) サイト間 IPSec VPN 接続

PVアクセスランキング にほんブログ村 にほんブログ村 ブログブログへ
にほんブログ村

私の自宅では、インターネットルーターに Cisco ルーターを使用していますので、父親の家でも Cisco ルーターを使って、父親の家と私の自宅を IPSec VPN で接続してみようかなと考えました。

以前は、Buffalo ルーターを使って、父親の家と VPN 接続していたのですが、それが壊れてしまいました。これがきっかけです。

今回考えているのは、以下のような構成です。

単純にインターネット越しに 2つのサイトを VPN 接続するという構成です。

今回の動作確認で使用したのは、Cisco 1812J です。2台のルーターをバックトゥバックで接続しています。

サイト間 VPN の動作確認

自宅に 2台の Cisco ルーターを用意し、テスト構成を作成して、IPSec の設定を行いました。

テスト構成は、以下のアドレス体系としています。

以下のIPSecの設定は、暗号化マップを使った方式となります。

IPsec の設定

  1. まず、ISAKMP ポリシーを作成します。
  2. ここでは、「共通鍵を使用しますよ」と宣言を行います。
  3. 次に、IPSec 接続の際に使用するキーを指定し、そして、そのキーを使用して IPSec 接続する対向先のルーターの IPアドレスを指定します。
crypto isakmp policy 10 <<< 1
 hash md5
 authentication pre-share <<< 2
 crypto isakmp key vpnuser address 10.0.0.253 <<< 3

10.0.0.253 が R2 の Fast Ethernet の IPアドレスです。これは、インターネット越しで到達可能な IPアドレスである必要があります。

つまり、「このインターフェースとの IPSec 接続には、このキーを使用しましょう」ということです。

次に、Transform セットを作成します。

ここでは、IPSec 接続の際に使用する暗号化の方式を定義します。

crypto ipsec transform-set myset esp-des esp-md5-hmac 

ここで使用している「myset」が、このTransform セットの名前になります。

使用する暗号化方式は、「esp-des esp-md5-hmac 」です。

次に、Cryptoマップ(暗号化マップ)を作成します。

このマップ内では、

  1. どの IPアドレスが IPSec の接続先なのか
  2. どの通信を IPSec トンネルの対象にするのか(トンネルの中に通すのか)
  3. 使用する Transform セットの名前

を定義します。

crypto map mymap 10 ipsec-isakmp 
 set peer 10.0.0.253 <<< 1
 set transform-set myset <<< 2
 match address 100 <<< 3
  • この Crypto マップの名前は「mymap」としています。
  • set peer で指定しているのが、IPSec の張り先となるIPアドレスです。
  • このマップを使用する時には、「myset」という Transform セットを使いなさいとします。
  • match address でしてしている番号が、ACL の番号となります。この ACL で IPSec トンネルの中に入れる対象となるトラフィックはどれなのかを定義します。

最後に、ACL を作成します。

2台のルーターの、それぞれの LAN 側のセグメントを指定します。

access-list 100 permit ip 172.16.16.0 0.0.7.255 172.16.24.0 0.0.0.127

「R1 の LAN 側(172.16.16.0 /21) から、R2 の LAN 側(172.16.24.0 /25) へ向かうトラフィックを IPSec トンネルの中に入れますよ」ということです。

これで、IPSec の基本設定は完了です。

IPSec のCrypto マップを適用

仕上げとして、作成した Crypto マップを、対象となるインターフェースに適用しましょう。

適用するインターフェースは、WAN 側(インターネット側)に面しているインターフェースです。つまり、対向側ルーターが IPSec トンネルを張ってくる宛先となるインターフェースです。

先ほど作成した Crypto マップは「mymap」でしたね。

crypto map コマンドで、そのマップの名前を指定して、インターフェースに適用します。

interface FastEthernet0
 ip address 10.0.0.254 255.255.255.0
 duplex auto
 speed auto
 crypto map mymap

私が Crypto マップを適用しているのは、Fast Ethernet 0 インターフェースになります。

そうそう、このルーターはインターネットルーターですので、デフォルトルートは Fast Ethernet 0 (インターネットに面しているインターフェース)に向けておきましょう。

これを忘れると、インターネット向けの通信ができません。

ip route 0.0.0.0 0.0.0.0 FastEthernet0

これで、IPSec の設定適用は完了です。

これと同じことを、R2 側でも行います。IPSec トンネルの接続先が R1 になる点だけが異なります。

以下、IPSec 接続に必要な部分の設定のみを抜粋しています。

crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key vpnuser address 10.0.0.254
!
!
crypto ipsec transform-set myset esp-des esp-md5-hmac 
!
crypto map mymap 10 ipsec-isakmp 
 set peer 10.0.0.254
 set transform-set myset 
 match address 100
!
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
 !
!
interface FastEthernet0
 ip address 10.0.0.253 255.255.255.0
 duplex auto
 speed auto
 crypto map mymap
 !
!
ip route 0.0.0.0 0.0.0.0 FastEthernet0
!
access-list 100 permit ip 172.16.24.0 0.0.0.127 172.16.16.0 0.0.7.255

IPSec の接続確認コマンド

実際に通信をして確認をしてみます。

  • show crypto isakmp sa
R1#sh crypto isakmp sa 
IPv4 Crypto ISAKMP SA
dst             src             state          conn-id status
10.0.0.253       10.0.0.254       QM_IDLE           2001 ACTIVE

ステータスが「QM_IDLE」になっていれば、ISAKMP 接続は完了です。

「QM_IDLE」以外のステータスの場合、このページが参考になります。

  • show crypto ipsec sa
C1812-test#sh crypto ipsec sa 

interface: FastEthernet0
    Crypto map tag: M-ipsec, local addr 10.0.0.254

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (0.0.0.0/255.255.255.255/47/0)
   remote ident (addr/mask/prot/port): (0.0.0.0/255.255.255.255/47/0)
   current_peer 10.0.0.253 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 97, #pkts encrypt: 97, #pkts digest: 97
    #pkts decaps: 94, #pkts decrypt: 94, #pkts verify: 94
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 134, #recv errors 0

     local crypto endpt.: 10.0.0.254, remote crypto endpt.: 10.0.0.253
     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0
     current outbound spi: 0xD8FB69D5(3640355285)
     PFS (Y/N): N, DH group: none

     inbound esp sas:
      spi: 0xD6CE8456(3603858518)
        transform: esp-3des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 1, flow_id: Onboard VPN:1, sibling_flags 80000046, crypto map: M-ipsec
        sa timing: remaining key lifetime (k/sec): (4420763/2793)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0xD8FB69D5(3640355285)
        transform: esp-3des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 2, flow_id: Onboard VPN:2, sibling_flags 80000046, crypto map: M-ipsec
        sa timing: remaining key lifetime (k/sec): (4420762/2793)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     outbound ah sas:

     outbound pcp sas:

カウンターの数値が上がっていれば、IPSec トンネルの中に通信が通過しています。

うまく接続できない時は、デバッグコマンドが役に立ちます。

  • debug crypto isakmp 
  • debug crypto ipsec

設定内容

R1

R1#sh run 
Building configuration...

Current configuration : 1842 bytes
!
! Last configuration change at 06:21:16 UTC Tue Feb 23 2021
!
version 15.0
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
!
!
!
!
!
dot11 syslog
ip source-route
!
!
!
!
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
license udi pid CISCO1812-J/K9 sn xxxxxxx
!
!
! 
!
crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key vpnuser address 10.0.0.253
!
!
crypto ipsec transform-set myset esp-des esp-md5-hmac 
!
crypto map mymap 10 ipsec-isakmp 
 set peer 10.0.0.253
 set transform-set myset 
 match address 100
!
!
!
!
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
 !
!
interface FastEthernet0
 ip address 10.0.0.254 255.255.255.0
 duplex auto
 speed auto
 crypto map mymap
 !
!
interface FastEthernet1
 no ip address
 duplex auto
 speed auto
 !
!
interface FastEthernet2
 switchport access vlan 100
 !
!
interface FastEthernet3
 switchport access vlan 100
 !
!
interface FastEthernet4
 switchport access vlan 100
 !
!
interface FastEthernet5
 switchport access vlan 100
 !
!
interface FastEthernet6
 switchport access vlan 100
 !
!
interface FastEthernet7
 switchport access vlan 100
 !
!
interface FastEthernet8
 switchport access vlan 100
 !
!
interface FastEthernet9
 switchport access vlan 100
 !
!
interface Vlan1
 no ip address
 !
!
interface Vlan100
 ip address 172.16.23.254 255.255.248.0
 !
!
router ospf 1
 log-adjacency-changes
 network 172.16.16.0 0.0.7.255 area 0
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip route 0.0.0.0 0.0.0.0 FastEthernet0
!
access-list 100 permit ip 172.16.16.0 0.0.7.255 172.16.24.0 0.0.0.127
!
!
!
!
!
!
control-plane
 !
!
!
line con 0
line aux 0
line vty 0 4
 login
!
end

R2

R2#sh run 
Building configuration...

Current configuration : 1980 bytes
!
! Last configuration change at 06:07:15 UTC Sun Feb 13 2022
!
version 15.0
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
!
!
!
memory-size iomem 25
!
!
dot11 syslog
ip source-route
!
!
!
!
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
license udi pid CISCO1812-J/K9 sn xxxxxxx
!
!
vlan 100
 name home-data
!
vlan 111
 name MGMT
!
vlan 200
 name PBR-test
!
! 
!
crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key vpnuser address 10.0.0.254
!
!
crypto ipsec transform-set myset esp-des esp-md5-hmac 
!
crypto map mymap 10 ipsec-isakmp 
 set peer 10.0.0.254
 set transform-set myset 
 match address 100
!
!
!
!
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
 !
!
interface FastEthernet0
 ip address 10.0.0.253 255.255.255.0
 duplex auto
 speed auto
 crypto map mymap
 !
!
interface FastEthernet1
 no ip address
 duplex auto
 speed auto
 !
!
interface FastEthernet2
 switchport access vlan 100
 !
!
interface FastEthernet3
 switchport access vlan 100
 !
!
interface FastEthernet4
 switchport access vlan 100
 !
!
interface FastEthernet5
 switchport access vlan 100
 !
!
interface FastEthernet6
 switchport access vlan 100
 !
!
interface FastEthernet7
 switchport access vlan 100
 !
!
interface FastEthernet8
 switchport access vlan 100
 !
!
interface FastEthernet9
 switchport access vlan 100
 !
!
interface Vlan1
 no ip address
 !
!
interface Vlan100
 ip address 172.16.24.126 255.255.255.128
 !
!
router ospf 1
 log-adjacency-changes
 network 172.16.24.0 0.0.0.127 area 0
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip route 0.0.0.0 0.0.0.0 FastEthernet0
!
access-list 100 permit ip 172.16.24.0 0.0.0.127 172.16.16.0 0.0.7.255
!
!
!
!
!
!
control-plane
 !
!
!
line con 0
line aux 0
line vty 0 4
 login
!
end

おもしろかったら、フォローしてください!

世の中には楽しいことがいっぱい - にほんブログ村

関連する記事

最近の記事:

カテゴリー
2021年 Cisco SFP コマンド コンピューター トラブルシューティング 技術一般

Cisco Cat2960 に SFP (GLC-T) を追加

にほんブログ村 ブログブログへ
にほんブログ村

先日、ヤフーオークションを見ていたら、Cisco の SFP が安く売っているのを見つけました。お値段は何と、2つで 2200円。

CISCO SFPモジュール GLC-T(30-1410-03)2個セット

中古なので使用感がある程度あるのは仕方ないのですが、とにかく安い。

うちのリビングのテレビの横に Cisco Catalyst 2960 を置いて使っているのですが、8 ポートのモデルです。ここに使えたらポート数が増やせるなと思いました。

WS-C2960L-8TS-LL

ネットで調べてみるとサポートしてそうな感じです。

Q:

Is it compatible with cisco WS-C2960L-48TS-LL?

A:

Yes, it is compatible with cisco WS-C2960L-48TS-LL.

早速、購入して試してみました。

Gigabit Ethernet 0/9 にインストールしてみます。

!
interface GigabitEthernet0/8
 description to Wall LAN outlet @ TV settings
 switchport access vlan 100
 switchport trunk native vlan 111
 switchport mode trunk
 spanning-tree portfast edge trunk
!
interface GigabitEthernet0/9 <<<<
 shutdown
 !
interface GigabitEthernet0/10
shutdown
 !
 interface Vlan1
 no ip address
shutdown

インターフェースを有効化します。

Cat2960-TV2(config)#int gigabitEthernet 0/9
Cat2960-TV2(config-if)#no shut
Cat2960-TV2(config-if)#end

ここで SFP をインストールしてみます。

インターフェースの状態は特に変化ないです。念のために、システムのリブートもしてみます。

Cat2960-TV2#sh int gigabitEthernet 0/9
GigabitEthernet0/9 is down, line protocol is down (notconnect) 
  Hardware is Gigabit Ethernet, address is c4b3.6aa9.0e09 (bia c4b3.6aa9.0e09)
  MTU 1522 bytes, BW 10000 Kbit/sec, DLY 1000 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not set
  Auto-duplex, Auto-speed, link type is auto, media type is Not Present
  input flow-control is off, output flow-control is unsupported 
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input never, output never, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     0 packets input, 0 bytes, 0 no buffer
     Received 0 broadcasts (0 multicasts)
     0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 0 multicast, 0 pause input
     0 input packets with dribble condition detected
     0 packets output, 0 bytes, 0 underruns
     0 output errors, 0 collisions, 2 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier, 0 pause output
     0 output buffer failures, 0 output buffers swapped out

インベントリーを確認してみます。

Gigabit Ethernet 0/9 に SFP が見えました。認識してますね。

Cat2960-TV2#sh inventory 
NAME: "1", DESCR: "WS-C2960L-8TS-LL"
PID: WS-C2960L-8TS-LL  , VID: V02  , SN: FCW230xxxxx

NAME: "GigabitEthernet0/9", DESCR: "10/100/1000BaseTX SFP" <<<<
PID: GLC-T             , VID:      , SN: AGM183xxxxx   

Gigabit Ethernet 0/9 にパソコンを接続してみます。

ポートが Up になりました。

Cat2960-TV2#sh int gigabitEthernet 0/9
GigabitEthernet0/9 is up, line protocol is up (connected) 
  Hardware is Gigabit Ethernet, address is c4b3.6aa9.0e09 (bia c4b3.6aa9.0e09)
  MTU 1522 bytes, BW 1000000 Kbit/sec, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not set
  Full-duplex, 1000Mb/s, link type is auto, media type is 10/100/1000BaseTX SFP
  input flow-control is off, output flow-control is unsupported 
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:01:47, output 00:00:01, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
  5 minute input rate 4000 bits/sec, 1 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     321 packets input, 59851 bytes, 0 no buffer
     Received 321 broadcasts (132 multicasts)
     0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 132 multicast, 0 pause input
     0 input packets with dribble condition detected
     75 packets output, 11694 bytes, 0 underruns
     0 output errors, 0 collisions, 1 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier, 0 pause output
     0 output buffer failures, 0 output buffers swapped out

では、Gigabit Ethernet 0/9 に、データ VLAN であるVLAN100 を割り当ててみます。

Cat2960-TV2#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Cat2960-TV2(config)#int gigabitEthernet 0/9
Cat2960-TV2(config-if)#switchport mode access
Cat2960-TV2(config-if)#switchport access vlan 100
Cat2960-TV2(config-if)#

Gigabit Ethernet 0/9 に接続した Windows10 から、デフォルトゲートウェイとなるルーターに対して Ping を撃ってみます。

しばらくしたら、Echo Reply が返ってきました。通信可能になりましたね。

:\Users\ken>ping 172.16.23.254 -t

172.16.23.254 に ping を送信しています 32 バイトのデータ:
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.19.100 からの応答: 宛先ホストに到達できません。
172.16.23.254 からの応答: バイト数 =32 時間 =4ms TTL=255
172.16.23.254 からの応答: バイト数 =32 時間 =3ms TTL=255
172.16.23.254 からの応答: バイト数 =32 時間 =2ms TTL=255
172.16.23.254 からの応答: バイト数 =32 時間 =3ms TTL=255
172.16.23.254 からの応答: バイト数 =32 時間 =2ms TTL=255
172.16.23.254 からの応答: バイト数 =32 時間 =2ms TTL=255
172.16.23.254 からの応答: バイト数 =32 時間 =3ms TTL=255
172.16.23.254 からの応答: バイト数 =32 時間 =2ms TTL=255


172.16.23.254 の ping 統計:
    パケット数: 送信 = 112、受信 = 112、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 1ms、最大 = 4ms、平均 = 1ms
Ctrl+C
^C
C:\Users\ken>

WS-C2960L-8TS-LL でも GLC-T が使えることが分かりました。これでポート数を 2つ増やすことができます。

関連する記事:

最近の記事:

カテゴリー
2021年 AWS Azure クラウド コンピューター トラブルシューティング 技術一般 証明書

パケットキャプチャーからサーバー証明書を抜き出す方法

Webサーバー向けのテストをしていると、代理証明書が必要となるケースが多いです。特に、インターネット上にあるサーバーに対しての通信テストとなると、それらのサーバー署名書をまず手に入れ、その内容を元に、代理証明書を作成する必要があります。

インターネット上にあるサーバーの証明書ですが、実は簡単に内容を取得することができます。パケットキャプチャ(TCP ダンプ)を取得するのです。

パケットキャプチャには、通信の全てが含まれています。当然、サーバー証明書も含まれます。このやり取りの証明書の部分を指定して、証明書だけを抜き出せば良いのです。

サーバ証明書の抜き出し方

まず、証明書を取得したいサーバーにアクセスをし、その通信をWiresharkを使ってパケットキャプチャします。

Server Hello が飛んできた後に、Certificateのやり取りが見えます。この中に証明書が入っています。上の画面キャプチャーの青色で反転させているパケットです。このパケットの中を見ていきます。

  1. Secure Sockets Layer
  2. TLSV1.2 Record Layer: Handshake Protocol : Certificate
  3. Handshake Protocol: Certificate
  4. Certificates (バイト数)

の順にクリックして、詳細を表示させます。

その中に、Certificate (id-atCommonName=ドメイン名)のパケットが見えます。

id-at-ConnomName=w.usabilla.com を取り出してみます。

そのパケットを選択し、右クリックメニューを表示させます。

メニューから、Export Selected Packet Bytes… をクリックします。

このパケットを、証明書として保存します。名前をつけて保存のウィンドウが表示されますので、ファイル名のところで名前を指定します。

この時のポイントは、拡張子を「.crt」にして保存することです。こうすることで、Windows 上からは証明書として認識されますので、ダブルクリックで中が見られるようになります。

証明書の内容を見てみる

名前をつけて保存した証明書ファイルを開いて、中をみてみましょう。

w.usabilla.com.crt の証明書を、駄ぬんるクリックして開いてみます。

発行社はAmazonなんですね。

「詳細」タブをクリックして、証明書の詳細も見てみましょう。

証明書の記載項目の一覧が表示されますので、「サブジェクト」をクリックしてみます。

CN: Common Name が表示されましたね。

次に、「サブジェクト代替名」をクリックしてみます。

SAN: Subject Alternative Name が表示されましたね。

証明書の中身が分かりましたので、これで代理証明書を作成することが可能です。自分でCA局のサーバーを建てて、そこでサインして発行するのも良いのですが、オンラインで簡単に証明書を発行できるサイトがあります。

これも使ってみてください。

関連する記事:

最近の記事:

カテゴリー
2020年 Linux LPIC コマンド コンピューター トラブルシューティング 技術一般 認定資格

Linux の基本コマンドが変更されて困った

2020年09月27日作成

Linux って、コマンド操作が多いのですが、コマンドが変わりましたね。例えば、「ifconfig」で各インターフェースに割り当てられている IP アドレスが見られたのですが、これは「ip address」に変わってます。

これくらいなら、大きな問題にはならないのですが、「nmcli」という Network Service コマンドになると、もうさぱりです。何だたっけ?と、インターネットでその都度調べないと使えません。

私は古いコマンドで Linux を使っていた人ですが、5 年くらい前に対応していたある案件で、久しぶりに Linux を触った時に、「え、何これ?」って感じでした。確か、その時に触ったのが、CentOS 7 だったと思います。

最近は、自宅での動作確認で使用している仮想環境や AWS などのパブリッククラウド上で、Linux を再びよく使うようになりました。やはり、何らかのサーバーを作る際に、Windows よりも Linux が便利である面は多いです。

そこで、迷って Linux のコマンドを確認したい時にすぐに見られるように、ちょっとまとめておこうと思いました。

IP コマンド

オブジェクト省略形    説明
addr aIP アドレスの設定や確認します
link lネットワークデバイスの設定や確認します
route rルーティングテーブルの設定や確認します
neighbor nARP キャッシュの表示します
addr のコマンド省略形    説明
show s指定したデバイスのみのIP アドレス情報を表示します
add aIP アドレスの追加します
del dIP アドレスの削除します

IP アドレスの表示

ip addr / ip a

全てのデバイスの IP アドレス情報を一覧で表示します。

ip addr show <device-name>

デバイス名を指定し、特定のデバイスに割り当てられた IP アドレスの情報を表示します。

以下の例では、ens33 を指定して表示しています。

以下の例では、Loopback インターフェースを指定して表示しています。

IP アドレスの追加と削除

ip addr add <ip-address>/<prefix> dev <device-name>

dev でデバイス名を指定し、指定したデバイスに対して、IP アドレスを追加します。

以下の例では、ens33を指定して、IP アドレスをマニュアルにて設定しています。

ip a で表示してみると、指定した IP アドレスが設定されていますね。

ただ、上書きされると思っていたのですが、追加されるみたいです。これは気をつけないといけない点です。

ip addr del <ip-address>/<prefix> dev <device-name>

dev でデバイス名を指定し、指定したデバイスに対して、IP アドレスの削除を行います。

以下の例では、ens33を指定して、IP アドレスを削除しています。

ip a で表示してみると、指定した IP アドレスが削除されていますね。

疎通確認コマンド

疏通確認

ping

ping は非常によく使用する疏通確認コマンドですが、さすがにこれは変わってませんね。

経路確認

traceroute

宛先ホストに到達するまでの経路情報を表示します。

オプション説明
-UUDP パケットを送信すします(デフォルト)
-IICMP パケットを送信します

Linux の traceroute って、Cisco 機器と同じ様に、デフォルトは UDP なんですね。Windows と同じく ICMP を使っていると思ってました。オプションで切り替えられるのは便利ですね。

以下の例では、Google DNS である「8.8.8.8」に対して、Traceroute を打ってみました。

ついでに、Linux のTraceroute のデフォルトがUDP であることも確かめてみようと思い、隣で動かしているWindows マシンで、Wiresharkを取って見てみました。確かにUDP を使っていますね。TTL exceed などの応答は、ICMP を使うんですね。

「-I 」オプションも試してみましょう。今度はICMPを使ってTraceroute を打つはずです。

Wireshark でパケット見てみると、UDP はなくなり、ICMP のみ見えています。

IPv6 の環境では、traceroute6 コマンドを使用します。

tracepath

宛先ホストに到達するまでの経路情報を表示します。traceroute との違いは、PMTU (Path MTU)を表示できるという点です。

以下の例では、Google DNS である「8.8.8.8」に対して、Tracepath を打ってみました。PMTU の値が表示されていますね。

これもついでに、パケットキャプチャを見てみました。UDP を使っていますね。

ちなみに、私が先日受講した Linux のオンライン講義では、「ICMP を使う」と言っていましたが、実際に見てみるとICMP ではなくUDP を使っています。ここにもそう書いてありますね。

やはり、実機でちゃんと見てみるというのは重要ですね!

ルーティングコマンド

経路情報の確認

ip route

経路情報(ルーティングテーブル)を表示します。昔からの「netstat -r」は非推奨になってしまったみたいです。

以下の例が、ip route の出力結果です。1行しかなく、非常にシンプルですが、NIC が1つでスタティックルートも使っていませんので、PC として使っていれば大体こんなものでしょう。

でも、デフォルトゲートウェイは、どうやって確認しましょうか?

route -n コマンドを使えば良いみたいですね。先日の講義で、route コマンドも非推奨だという話を聞きましたが、インターネットでいろいろ調べてみた限り、そのようなことはなさそうです。とりあえず、デフォルトゲートウェイの確認には、このコマンドを使っておきましょう。

経路情報の追加と削除

オプション説明
addルーティングテーブルに、経路情報を追加します
delルーティングテーブルから、経路情報を削除します
経路情報の追加
ip route add <dest-network> via <gw-ip-addr> dev <device-name>

dev でデバイス名を指定し、ルーティングテーブルに経路情報を追加します。

以下の例が、「10.10.10.0 /24」ネットワーク向けのネクトホップを「192.168.45.2」に設定した出力です。

route -n コマンドでも、追加した経路が見られますね。と言うか、初めから route -n お使っていた方が早い気がしてきました。デフォルトゲートウェイも見られますし。

経路情報の削除
ip route del <dest-network>

ip route del <dest-network> via <gw-ip-addr> dev <device-name>

ルーティングテーブルから、指定した経路情報を削除します。

dev でデバイス名を指定し、特定のデバイスに関連付いているルーティングテーブルに経路情報を削除することもできます。

以下の例が、「10.10.10.0 /24」ネットワーク向けのネクトホップを「192.168.45.2」に設定した経路情報を削除した出力です。

ホスト名の設定

このコマンドは変更された訳ではないですが、個人的に思い出せないことが多いのでメモしておきます。

ホスト名の表示

ホスト名は、/etc/hostnameファイルの中に記載されています。

ホスト名の表示には、hostname コマンドで表示するのと、cat /etc/hostnameとホスト名ファイルを表示する方法があります。

ホスト名の変更

ホスト名の変更には、hostnamectl コマンドを使用します。set-hostname の後に hostnameファルを指定して、ホスト名を変更します。

DNS の設定

DNS で使用するネームサーバーは、/etc/resolve.conf ファイルの中に記載されています。

ネームサーバーの表示

Cat コマンドで、上記ファイルを指定して、内容を表示させます。

ネームサーバーの追加・変更

ネームサーバーは上記ファイルの記載されていますので、vi などのエディターを使って編集すれば、追加・変更が可能です。

ついでに vi エディターですが、最低限のこれくらい知っておけば、とりあえず使えます。

  • i で入力モード
  • ESC ボタンを押して、コマンドモード
  • :wq で保存して終了
  • :q! で終了

NMCLI コマンドは、まだ下書きです。時間のある時に修正していきます。

nmcli コマンド

オブジェクトコマンド説明
なしデバイスの情報を一覧表示
deviceshow <device-name>指定したデバイスの情報のみを表示
connectionshow <connection-name>接続情報を表示
modify <connection-name> <parameter>指定した接続を設定
up <connection-name>接続を有効化
down <connection-name>接続を無効化

IP アドレスの表示

nmcli

各デバイスの IP アドレス情報を表示します。

nmcli show <device-name>

指定したデバイスの IP アドレス情報のみを表示します。

IP アドレスの変更

nmcli connection modify <conn.-name> ipv4.method manual ipv4.addresses <ip-address> / <prefix>

コネクション名を指定して、IP アドレスを設定します。

コネクションの有効化・無効化

nmcli connection up <conn.-name>

設定を反映させるために、コネクションを UP にします。

nmcli connection down <conn.-name>

コネクションを Down させます。

デフォルトデートウェイの設定

nmcli connection modify <conn.-name> ipv4.gateway <default-gw-ip-address>

指定したコネクションに対して、デフオルトゲートウェイを設定します。

nmcli connection modify <conn.-name> ipv4.dns <dns-ip-address>

指定したコネクションの参照先 DNS サーバーのアドレスを設定します。

これを覚えておくと、ちょっと便利です。

IP アドレス、デフォルトゲートウェイ、DNS サーバーのアドレスは、セットで設定することが多い項目です。この様にコマンドを組み合わせることで、これら3つの項目が一度に設定ができます。

nmcli connection modify <conn.-name> ipv4.method manual ipv4.addresses <ip-address> / <prefix> ipv4.gateway <default-gw-ip-addr> ipv4.dns <dns-ip-addr>

これはたまに使うなと思うコマンドあれば、今後も追記して更新していきたいと思います。

関連する記事:

最近の記事:

カテゴリー
2020年 Cisco NPM コンピューター トラブルシューティング 技術一般

Flexible NetFlow と NBAR を使ってみた

NPM (Network Performance Monitoring) という分野をご存知でしょうか。

ネットワークは企業のシステムの基盤であり、動いていて当たり前のインフラですが、そこでどの様なアプリケーションが使われているか、それを誰が使っているのか、どこに通信しているのか、どれくらいデータを流しているのかって、意外と管理者の方も把握できていないのが現実です。

何らかの問題が発生し、ユーザーさんからクレームの電話やメールがあり、そこから調査を開始するというのが一般的な流れではないでしょうか。

Ping から始めて、サーバーの負荷状態確認したり、MRTGなどでトラフィック量を確認したり、TCPダンプを取って調査したり。

ネットワークのせいだ、アプリケーションだ、サーバー側だと揉めます。それを避けるためにも、普段からの状態を把握しておくことが大切です。

そんな時に手軽に使えるのが、ネットワークのフローです。

例えば、Cisco 社のルーターやスィッチであれば、NetFlow というフローを出すことができます。IOS のバージョン15.2 以降だと、Flexible NetFlow というものが使え、さらにアプリケーションの情報(NBAR2)をいろいろと含めることも可能になってます。

今回、それをちょっと試してみました。

フロー情報を受けてグラフィカルに表示させる NPM 機器は、世の中にいろいろとあります。製品としても数多くのメーカーさんから出てますが、今回は、お試しライセンスがウェブから簡単に入手できるリバーベッドテクノロジー社の SteelCentral シリーズ。その中の NetProfiler と FlowGateway という製品の仮想版を、自宅の仮想基板にインストールして試してみました。

画像に alt 属性が指定されていません。ファイル名: image.png

ちなみに、Cisco ルーターは中古で古いモデルであれば、アマゾンとかでもお手軽に買えちゃいます。例えば、Cisco C841M とか Cisco 892J などです。

CISCO C841M-4X-JSEC/K9

価格:28,600円
(2020/9/5 16:04時点)
感想(0件)

【中古】Cisco 891FJ-K9 C891FJ-K9 サービス統合型ルータ

価格:20,567円
(2020/9/5 16:07時点)
感想(0件)

IOS のバージョンは新しいものが搭載されているかを確認しておくのが注意点です。どうせ試すなら、NBAR2 が使える方が良いですね。

NBAR の設定

それでは、NBAR や Flexible NetFlow の設定を見ていきましょう。

NBAR (Network Based Application Recognition) 機能は、Flexible NetFlow の設定の中で使用され、flow record 設定サブモードにて、追加の “application name” フィールドを設定することで容易に有効化されます。

設定としては、“match” キーワード下の Key フィールドとして、又は “collect” キーワード下の Non-Key フィールドとして設定可能です。

router (config-flow-record)# match application name

以下の例では NBAR を使い、あるキーフィールドとしてアプリケーション名を収集するフローレコードを持ったフローモニターを適用することで、任意の 2つの IP ホスト間で見られる各アプリケーションに関する異なるフローを生成させます。

flow record RVBD-Rec_1match application name
match ipv4 source address
match ipv4 destination address
collect interface input
collect interface output
collect counter packets
!flow monitor RVBD-Mon_1record RVBD-Rec_1
!interface FastEthernet0/0
ip address 172.16.2.2 255.255.255.0
ip flow monitor RVBD-Mon_1 input
! 
end

Flexible NetFlow の設定

Flexible NetFlow (FNF) は、以下 3項目の設定が必要となります。

1. "flow record"(Key と Non-Key のどのフィールドを対象にするか定義するポリシー)
2. flow exporter"(フロー送信先の設定ポリシー)
3. "flow monitor"(Flow Exporter と Flow Record を関連づけるポリシー)

説明:

1 flow record
生成フローに関連する “key” と “non key” を定義(Key と Non-Key のどのフィールドを対象にするか定義するポリシー)

2 flow exporter
フローデータの“送信先アドレス”、“UDP ポート番号”、“送信元インターフェース”を定義(フローの送信先に関する設定ポリシー)

3 flow monitor
“flow exporter”, “flow record” 両方の結び付け(Flow Exporter と Flow Record を関連づけるポリシー)

4 “flow monitor” と監視対象機器の全 L3インターフェースを関連付け(どのインターフェースをモニタリング対象にするのかの設定)

5 特定の IPアドレス(1で定義)に向けて、装置からNetFlow データ(2で定義した項目)が送信される。

設定の流れ:

1.フローレコードの作成

router (config)# flow record <name>

2. フローレコードの Key フィールドの定義

router (config-flow-record)# match [ ipv4 | ipv6 ] [ destination | source ] address
router (config-flow-record)# match datalink [ destination-vlan-id | dot1q | ethertype | mac | source-vlan-id ]
(config-flow-record)# match transport [ icmp | igmp | source-port | destination-port | tcp | udp ]

3. フローレコードの Non-Key フィールドの定義

router (config-flow-record)# collect counter [ bytes [ exported | long ] flows [ exported ] | packets ] [ exported | long ]
router (config-flow-record)# collect timestamp sys-uptime [ first | last ]
router (config-flow-record)# collect interface [ input | output ] snmp

コンフィグのサンプル:

flow record NBAR-mon
# フローレコートして「NBAR-mon」を作成
match ipv4 tos
# Match で Key フィールドを定義
match ipv4 protocol
match ipv4 source address
match ipv4 destination address
match transport source-port
match transport destination-port
match interface input
match interface output
match flow direction
match application name
collect datalink dot1q vlan input
# Collect で Non-Key フィールドを定義
collect datalink dot1q vlan output
collect datalink mac source address input
collect datalink mac source address output
collect datalink mac destination address input
collect datalink mac destination address output
collect routing destination as
collect routing next-hop address ipv4
collect ipv4 dscp
collect ipv4 id
collect ipv4 source prefix
collect ipv4 source mask
collect ipv4 destination mask
collect transport tcp flags
collect counter bytes
collect counter packets
collect timestamp sys-uptime first
collect timestamp sys-uptime last 

フローエクスポーターの作成

設定の流れ:

1. フローエクスポーターの作成

router (config)# flow exporter <name>


2. フローエクスポーターのあて先システムの IPアドレスの設定

router (config-flow-exporter)# destination <ipaddress [ vrf name ]>



3.(任意):エクスポータによって送信されるデータグラムの DSCP 値の設定

router (config-flow-exporter)# dscp <dscp-value>


4.(任意):エクスポータに送信する際の送信元インターフェースの指定
(config-flow-exporter)# source <interface-id>

router (config-flow-exporter)# source <interface-id>


5.(任意):エクスポータのオプションデータパラメータの設定、タイムアウトの範囲は 1~86400秒、デフォルト値は 600。

router (config-flow-exporter)# option [ exporter-stats | interface-table | sampler-table ] [ timeout seconds ]


6.(任意):タイムアウトに基づいたテンプレートの再送信の設定。再送信間隔の範囲は 1~86400秒、デフォルト値は 600。

router (config-flow-exporter)# template data timeout <seconds>


7.(任意):エクスポートにより送信されるデータグラムの存続時間(TTL 値の指定)。デフォルトは 255。

router (config-flow-exporter)# ttl <ttl-value>


8. エクスポートされるデータグラムを送信する際に、あて先システムが待機している UDP ポート番号の指定

router (config-flow-exporter)# transport udp <port-number>

コンフィグのサンプル:

flow exporter Export-to-FGW
# フローエクスポータとして「Export-to-FGW」を作成
description FNF v9
# コメント
destination 10.200.1.52
# フローの送信先となる FlowGateway の IPアドレス
source Vlan111
# フローの送信元インターフェース
transport udp 2055
# フローを送信する際の宛先ポート番号
export-protocol netflow-v9
template data timeout 60
option interface-table
option application-table timeout 60
option application-attributes timeout 300 

option interface-table コマンドを実行すると、オプション テーブルが定期的に送信されます。このオプション テーブルを使用して、コレクタはフロー レコードに記録されている SNMP インターフェイス インデックスを各インターフェイス名にマッピングします。オプションのタイムアウトでは、レポートが送信される頻度を変更できます。

option interface-table NBAR2 を使ってクラス分けされたアプリケーションリストの送信を可能にします。アプリケーションは、マニュアルにて指定する必要があります。option application-attributes コマンドにて、アプリケーションのカテゴリーを送信を可能にします。

NPM でのレポート画面

NPM 製品の GUI 画面でグラフを見てみると、Google とかYoutube とか、アプリケーションの名前まで表示されてますね。

NBAR が使えない NetFlow だと、全部 SSL か HTTPS で表示されちゃいます。これをアプリケーションで識別できるところがミソです。

NBAR よりも NBAR2 の方が識別できるアプリケーションが豊富ですで、NBAR2 を使いましょう。

これを NPM 機器で受けて表示すれば、誰が、いつ、どこ向けに、どんなアプリケーションを、どれだけ使っているか、一目瞭然です。

ぜひ、みなさんのネットワーク監視やトラブルシューティングにも活用してみてください。

画像に alt 属性が指定されていません。ファイル名: image-1.png

関連する記事:

最近の記事: