カテゴリー
2023年 Cron Linux LPIC コマンド コンピューター 技術一般 自動化

Linux の Cron の基本的な使い方

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

こんなことしたいと思ったりしませんか?

  • 毎日、ある時間にプログラムを実行したい。
  • 一時間に一回、コマンドを実行したい。
  • 毎月一度、バックアップを取りたい。

Linuxには、定期的にコマンドを実行するために cron と呼ばれるデーモンプロセスがあります。これを使うと、決まった時間にコマンドを実行させたりすることができて便利です。

今回は、Cron(クーロン)の基本的な使い方をまとめてみます。

cron は、「crond(デーモン)」と「crontab」 で構成されます。1分ごとに crond が起動され、crontab ファイルに定義されたスケジュールを調べて、そこに実行すべきジョブがあれば実行します。

スケジューリングの編集は、以下の2つの方法で行えます。

  • crontabコマンド を利用する
  • /etc/crontab に書き込む

今回は、Crontab に定義を書き込む形で設定していきます。

Crond が動いているか確認

まず、使用しているシステムで、Cronデーモンが動作している必要があります。

「systemctl status <デーモンの名前>」コマンドを使って確認します。

kkint@ubuntu:/etc$ systemctl status cron.service
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-10-06 12:01:47 JST; 3 days ago
Docs: man:cron(8)
Main PID: 985 (cron)
Tasks: 1 (limit: 4555)
Memory: 1.3M
CPU: 841ms
CGroup: /system.slice/cron.service
└─985 /usr/sbin/cron -f -P

Crond が動いていれば、上記のように「active(running)」の表示が出ます。

もし動いていない場合は、以下のコマンドで起動できます。

systemctl start cron.service

Crontab で設定

「/etc/crontab」ファイルに書き込む方法での設定手順です。まずは、Crontab ファイルを開いて見て見ましょう。

cat /etc/crontab

「cat」コマンドで、Crontab ファイルを指定して開いてみます。

kkint@ubuntu:/etc$ cat /etc/crontab

/etc/crontab: system-wide crontab

Unlike any other crontab you don't have to run the `crontab'

command to install the new version when you edit this file

and files in /etc/cron.d. These files also have username fields,

that none of the other crontabs do.

SHELL=/bin/sh

You can also override PATH, but by default, newer versions inherit it from the environment

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Example of job definition:

.---------------- minute (0 - 59)

| .------------- hour (0 - 23)

| | .---------- day of month (1 - 31)

| | | .------- month (1 - 12) OR jan,feb,mar,apr …

| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

| | | | |

* * * * * user-name command to be executed

17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
kkint@ubuntu:/etc$

下の方に、「*」が 5つ並んでいる行が見えますね。ここに定義を記入していきます。

この「*」印ですが、左から順に「分、時、日、月、曜日、実行ユーザー、 実行するコマンド」となっています。
時間は24時間で表記をします。

指定できる値は、下記のようになります。

指定対象指定範囲
0〜59
0〜23
1〜31
1〜12 または jan〜dec
曜日0〜7 または sun〜sat

「分 時 日 月 曜日 ユーザー コマンド」の順に記入していきます。

< 記述例 >

1時に実行

  • 1 * * * [ユーザー] [コマンド]

13時に実行

  • 13 * * * [ユーザー] [コマンド]

5分おきに実行

*/5 * * * * [ユーザー] [コマンド]

1時、2時、5時、6時、7時、8時に実行

  • 1,2,5-8 * * * [ユーザー] [コマンド]

もう少し例を見ていきましょう。

kkint というユーザー権限で実行し、kkint ユーザーのデスクトップに test.txt を作成する例です。

1分ごとに実行

* * * * * kkint touch /home/kkint/Desktop/test.txt

1:00 – 1:59 まで1分ごとに実行

* 1 * * * kkint touch /home/kkint/Desktop/test.txt

毎日14:00 に実行

0 14 * * * kkint touch /home/kkint/Desktop/test.txt

毎月10日から20日の 00:00 に実行

0 0 10-20 * * kkint touch /home/kkint/Desktop/test.txt

毎週月曜日から金曜日の 13:00 に実行

0 13 * * 1-5 kkint touch /home/kkint/Desktop/test.txt

Cron のログを出力する

デフォルトでは、Cron のログは出力されないようになっていますが、これを出力するようにすると、動作確認の際に便利です。

「/etc/rsyslog.d/50-default.conf」ファイルの設定を変更します。

kkint@ubuntu:/etc$ cat /etc/rsyslog.d/50-default.conf | grep cron

#cron.* /var/log/cron.log  <<<<< この部分

cron,daemon.none;\

まず、vim などのエディターを使って、上記ファイルを開きます。

$ vim /etc/rsyslog.d/50-default.conf

次に、対象の部分のコメントを外します。

#cron.* /var/log/cron.log
        |
        *
cron.* /var/log/cron.log  <<<<< コメントアウトする

最後に、rsyslogを再起動して、変更を適用します。

$ sudo service rsyslog restart

ログの確認例

2分おきに df コマンドを実行し、その結果をテキストファイルに書き込み、デスクトップに保存した時のログの出力は、以下の通りです。

Crontab ファイルには、以下のように記載しています。

*/2 * * * * kkint /usr/bin/df -h > /home/kkint/Desktop/df_results.txt

ログを見ると、指定したコマンドが実行されているのが分かりますね。

kkint@ubuntu:/etc$ cat /var/log/cron.log
Oct 9 13:45:01 ubuntu CRON[9087]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Oct 9 13:55:01 ubuntu CRON[9164]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Oct 9 14:01:01 ubuntu cron[985]: (system) RELOAD (/etc/crontab)

Oct 9 14:45:01 ubuntu CRON[10567]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Oct 9 14:46:01 ubuntu CRON[10575]: (kkint) CMD (/usr/bin/df -h >> /home/kkint/Desktop/df_results)
Oct 9 14:46:01 ubuntu CRON[10576]: (kkint) CMD (date >> /home/kkint/Desktop/df_results)

面白かったら、フォローしてください!

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

関連するブログ:

最近の人気ブログ TOP 10:

最近の記事:

カテゴリー
2023年 Linux LPIC コマンド コンピューター 技術一般

LPIC を学ぶ(1) lsof コマンドについて

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

オープン中のファイルやプロセス、待ち受けポート番号などを、リストで表示するコマンドです。

lsof(エルエスオーエフ)コマンドは”list open files”の意味であり、多くのUnix系オペレーティングシステムで、オープン中のファイルやそのファイルをオープンしているプロセスのリストを出力するコマンドである。このオープンソースのユーティリティは、パデュー大学コンピューティングセンターの元アソシエートディレクター、ビクター・A・アベルによって開発・サポートされた。lsofはいくつかのUnix系OSで動作し、サポートされている。

https://ja.wikipedia.org/wiki/Lsof

lsofコマンドの書式

lsof [オプション]

「オプション」で、よく使うものは以下のものがあります。

 オプション 意味
-Pポート番号をサービス名に変換しない
-cプロセス名を指定する
-pプロセス ID を指定する
-n名前解決なしで IP アドレスで表示する
-uユーザー名を指定する
-iネットワークソケットを表示する
よく使うと思われるオプションのみ抜粋

lsof コマンドの出力には、以下の10個の項目があります。

 項目 意味
COMMAND表示されているコマンド
PIDプロセス ID
USER実行ユーザー名
FDファイルディスクリプター
TYPEタイプ
DEVICEデバイス
SIZE/OFFファイルサイズ
NODEプロトコル
NAMEファイル又はポート

コマンド出力例

それでは、「c」オプションの出力例を見ていきましょう。

「c」オプションでは、プロセス名を指定します。

まずは、ps コマンドでプロセス一覧を見てみましょう。

root@kelly ~]# ps aux | more
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.9 173312  7044 ?        Ss   01:42   0:02 /usr/lib/systemd/systemd rhgb --switched-root --system 
--deserialize 31
root           2  0.0  0.0      0     0 ?        S    01:42   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   01:42   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   01:42   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   01:42   0:00 [netns]
root           7  0.0  0.0      0     0 ?        I<   01:42   0:00 [kworker/0:0H-events_highpri]
root           9  0.0  0.0      0     0 ?        I<   01:42   0:07 [kworker/0:1H-events_highpri]
root          10  0.0  0.0      0     0 ?        I<   01:42   0:00 [mm_percpu_wq]
root          12  0.0  0.0      0     0 ?        I    01:42   0:00 [rcu_tasks_kthre]
root          13  0.0  0.0      0     0 ?        I    01:42   0:00 [rcu_tasks_rude_]

この中で、今回は「rcu_gp」を指定してみます。

[root@kelly ~]# lsof -c rcu_gp
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc
      Output information may be incomplete.
COMMAND PID USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
rcu_gp    3 root  cwd       DIR  253,0      235  128 /
rcu_gp    3 root  rtd       DIR  253,0      235  128 /
rcu_gp    3 root  txt   unknown                      /proc/3/exe
[root@kelly ~]# 

「rcu_gp」に関する表示が出ましたね。

次に「i」オプションを見てみましょう。

「i」オプションでは、ネットワークソケットを表示します。

[root@kelly ~]# lsof -i | more
COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae   772  avahi   12u  IPv4  22478      0t0  UDP *:mdns 
avahi-dae   772  avahi   13u  IPv6  22479      0t0  UDP *:mdns 
avahi-dae   772  avahi   14u  IPv4  22480      0t0  UDP *:38624 
avahi-dae   772  avahi   15u  IPv6  22481      0t0  UDP *:55406 
chronyd     798 chrony    5u  IPv4  22365      0t0  UDP localhost:323 
chronyd     798 chrony    6u  IPv6  22366      0t0  UDP localhost:323 
NetworkMa   949   root   28u  IPv4 122860      0t0  UDP kelly.kanan.com:bootpc->_gateway:bootps 
cupsd       956   root    6u  IPv6  23433      0t0  TCP localhost:ipp (LISTEN)
cupsd       956   root    7u  IPv4  23434      0t0  TCP localhost:ipp (LISTEN)
sshd        958   root    3u  IPv4  23448      0t0  TCP *:ssh (LISTEN)
sshd        958   root    4u  IPv6  23459      0t0  TCP *:ssh (LISTEN)
firefox   36564  kxxx   56u  IPv4 209042      0t0  TCP kelly.kk.com:49672->239.237.117.34.bc.googleusercontent.com:htt
ps (ESTABLISHED)
firefox   36564  kxxx  124u  IPv4 173714      0t0  TCP kelly.kk.com:35908->ec2-35-161-139-221.us-west-2.compute.amazon
aws.com:https (ESTABLISHED)
[root@kelly ~]# 

通信しているもののみが表示されました。

「i」オプションでは、「i:<Port#>」とすることでポート番号を指定することもできます。例えば、HTTP(TCP/80)を指定する場合は、「i:80」と指定します。

以下は、HTTPS(TCP/443)を指定した例となります。

[root@kelly ~]# lsof -i:443 | more
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
firefox 36564 kxxx   56u  IPv4 209042      0t0  TCP kelly.kk.com:49672->239.237.117.34.bc.googleusercontent.com:https 
(ESTABLISHED)
firefox 36564 kxxx  124u  IPv4 173714      0t0  TCP kelly.kk.com:35908->ec2-35-161-139-221.us-west-2.compute.amazonaws
.com:https (ESTABLISHED)
[root@kelly ~]# 

次に「u」オプションを見てみましょう。

「u」オプションでは、指定したユーザー名でフィルターして表示します。以下の例では、root ユーザーを指定しています。

[root@kelly ~]# lsof -u root | more
COMMAND     PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1 root  cwd       DIR              253,0       235        128 /
systemd       1 root  rtd       DIR              253,0       235        128 /
systemd       1 root  txt       REG              253,0   1949240     496091 /usr/lib/systemd/systemd
systemd       1 root  mem       REG              253,0    582323     579363 /etc/selinux/targeted/contexts/files/file_cont
exts.bin
systemd       1 root  mem       REG              253,0     45408   33959961 /usr/lib64/libffi.so.8.1.0
systemd       1 root  mem       REG              253,0    153600   33883645 /usr/lib64/libgpg-error.so.0.32.0
systemd       1 root  mem       REG              253,0     28552   33978142 /usr/lib64/libattr.so.1.1.2501
systemd       1 root  mem       REG              253,0    102568   33871561 /usr/lib64/libz.so.1.2.11
systemd       1 root  mem       REG              253,0     32528   33959999 /usr/lib64/libcap-ng.so.0.0.0
systemd       1 root  mem       REG              253,0     41056   34639057 /usr/lib64/libeconf.so.0.4.1

以下、省略

今度は、kxxx ユーザーを指定してみます。USER の項目が kxxx のもののみが一覧表示されました。

[root@kelly ~]# lsof -u kanta | more
COMMAND     PID  USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd    1828 kxxx  cwd       DIR              253,0       235        128 /
systemd    1828 kxxx  rtd       DIR              253,0       235        128 /
systemd    1828 kxxx  txt       REG              253,0   1949240     496091 /usr/lib/systemd/systemd
systemd    1828 kxxx  mem       REG              253,0    582323     579363 /etc/selinux/targeted/contexts/files/file_con
texts.bin
systemd    1828 kxxx  mem       REG              253,0     45408   33959961 /usr/lib64/libffi.so.8.1.0
systemd    1828 kxxx  mem       REG              253,0    153600   33883645 /usr/lib64/libgpg-error.so.0.32.0
systemd    1828 kxxx  mem       REG              253,0     28552   33978142 /usr/lib64/libattr.so.1.1.2501
systemd    1828 kxxx  mem       REG              253,0    102568   33871561 /usr/lib64/libz.so.1.2.11
systemd    1828 kxxx  mem       REG              253,0     32528   33959999 /usr/lib64/libcap-ng.so.0.0.0
systemd    1828 kxxx  mem       REG              253,0     41056   34639057 /usr/lib64/libeconf.so.0.4.1

以下、省略

この教材を使って学んでます。

posted with カエレバ

関連するブログ:

最近の人気ブログ TOP 10:

最近の記事:

カテゴリー
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年 Cisco EtherChannel QNAP コマンド コンピューター ストレージ 冗長化 技術一般

QNAP でポートトランキング (LAG/EtherChannel) 接続

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

私の自宅では、QNAP NAS を Cisco Catalyst 3750 に接続していますので、是非とも EtherChannel で接続してみたいと思い試してみました。

あまり触らない設定って、しばらく経つと忘れてしまいますので、これもメモとして残しておきたいと思います。

今回、私がやりたいのはこの構成です。Cisco スィッチとQNAPNAS を EtherChannel (LAG) で接続します。

スィッチ側の設定と準備

まずポートチャネルの作成とインターフェースへの適用を行います。

  1. 対象インターフェースを指定
  2. 対象となる VLAN 番号を指定
  3. Switchport のモードを Access に設定
  4. チェネルグループ番号を指定し、モードは “Active” で設定
Cat3750-3F(config)#int range gigabitEthernet 1/0/15 - 16 <<< 1
Cat3750-3F(config-if)#switchport access vlan 100 <<< 2
Cat3750-3F(config-if)#switchport mode access <<< 3
Cat3750-3F(config-if)#channel-group 2 mode active <<< 4
Creating a port-channel interface Port-channel 2
Cat3750-3F(config-if)#spanning-tree portfast
Cat3750-3F(config-if)#no shutdown 
Cat3750-3F(config-if)#end
%Warning: portfast should only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc... to this interface  when portfast is enabled, can cause temporary bridging loops. Use with CAUTION

ポートチェネル2 が作成されたメッセージが出力されましたね。”show run” で設定を見てみます。

Cat3750-3F#sh run 
Building configuration...
.
.
< 省略 >
.
.
!
interface Port-channel1
 switchport access vlan 100
 switchport mode access
!
interface Port-channel2  <<< Port-Channel 2 が作成
!
interface GigabitEthernet1/0/1
 description to NetGear Switch GE0/13
 switchport access vlan 100
 switchport mode access
!

でもまだ、ポートチェネルのインターフェースに、適切な設定が入ってません。

ポートチャネル2 にも以下の設定を入れます。

  1. “switchport mode access”
  2. “switchport access vlan 100”
Cat3750-3F(config)#interface port-channel 2
Cat3750-3F(config-if)#switchport mode access 
Cat3750-3F(config-if)#switchport access vlan 100
Cat3750-3F(config-if)#end
Cat3750-3F#sh run 
Building configuration...
.
.
< 省略 >
.
.
!
interface Port-channel1
 switchport access vlan 100
 switchport mode access
!
interface Port-channel2
 switchport access vlan 100 <<< 1
 switchport mode access <<< 2
!

せっかくインターフェースを2つ使ってポートチャネルしていますので、負荷分散もしましょう。

2つのインターフェースを送信元と宛先のIPアドレスの組み合わせでバランシング します。

Cat3750-3F(config)#port-channel load-balance src-dst-ip
Cat3750-3F(config)#end

宛先だけ指定してしまうと、このポートチャネルの先には QNAP NAS しかいませんので、負荷分散になりません。ここがポイントです。

スィッチ側のインターフェースの確認をしてみます。

  • “show interface port-channel 2 status”
Cat3750-3F#sh int port-channel 2 status 

Port      Name               Status       Vlan       Duplex  Speed Type
Po2                          notconnect   100          auto   auto 

QNAP NAS 側の設定をしていないので、ステータスはまだ「Not Connected」ですね。

QNAP NAS 側の設定

事前準備

DNAP NAS は、DHCP で IPアドレスが取得できるようにしておかないと、Port Trunking の設定をした後に、QNAP NAS の管理画面にアクセスできなくなります。

DHCP で一旦 IPアドレスを割り当てて、それから固定 IPアドレスに変更していきます。

設定

「Network & Virtual Switch」の設定を開きます。

「Network」の中の「Interfaces」をクリックします。

画面右上の「+ Port Trunking」をクリックします。

Port Trunking の設定画面が開きます。

「Add」をクリックします。

「IP アドレスが変更になります」の警告メッセージが出力されますが、「Yes」をクリックします。

アダプターが 2つ見えますので、両方とも選択します。

「Next」をクリックします。

Port Trunking の方式が表示されます。

今回、私が接続するのは、Cisco Catalyst 3750 ですので、「Managed Switch (supports Port Trunking/LACP)」を選択します。

選択するのは「802.3ad Dynamic」です。

「Apply」をクリックして、設定を適用します。

802.3ad のハッシュポリシーが表示されます。

Layer2+3 (MAC + IP)」を選択します。

「OK」をクリックします。

EtherChannel が形成され、インターフェースが 1つのみ表示されます。

右上のステータスで「Adapter 1+ 2 (Auto)」になっていれば成功です。

DHCP で IPアドレスを取得してますね。これを固定に変更します。

対象インターフェース右側のメニューボタンをクリックし、「Configure」を選択します。

IPアドレスの設定画面が表示されます。

今回設定したいのは IPv4 の IPアドレスです。

Use static IP address」を選択します。

右側のテキストボックスが有効化されるので、QNAP NAS で使用したい IPアドレスを設定します。

「Apply」をクリックして、設定を適用します。

「IPアドレスが<設定した値>に変更されます」の警告が表示されますので、「Yes」をクリックします。

表示されている IPアドレスが変更されます。

QNAP NAS の管理画面に、その IPアドレスでログインができれば完了です。

最後の確認

スィッチ側で、ポートチャネルのステータスを確認します。

  • “show interface port-channel 2 status”
  • “show interface port-channel 2”
Cat3750-3F#sh int port-channel 2 status 

Port      Name               Status       Vlan       Duplex  Speed Type
Po2                          connected    100        a-full a-1000 
Cat3750-3F#sh int port-channel 2         
Port-channel2 is up, line protocol is up (connected) 
  Hardware is EtherChannel, address is 0017.0e52.718e (bia 0017.0e52.718e)
  MTU 1500 bytes, BW 2000000 Kbit, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 0/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  Full-duplex, 1000Mb/s, link type is auto, media type is unknown
  input flow-control is off, output flow-control is unsupported 
  Members in this channel: Gi1/0/15 Gi1/0/16 
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input never, 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 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     1074 packets input, 495767 bytes, 0 no buffer
     Received 133 broadcasts (94 multicasts)
     0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 94 multicast, 0 pause input
     0 input packets with dribble condition detected
     1410 packets output, 279723 bytes, 0 underruns
     0 output errors, 0 collisions, 1 interface resets
     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

Connected になってますね。

QNAP NASのポートトランキングの設定は、これで完成です。

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

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

関連する記事:

最近の記事:

カテゴリー
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

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

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

関連する記事

最近の記事:

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

Cisco ルーターでダイナミック DNS を使う

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

自宅のインターネットルーターで Cisco 891F を使用していて、ダイナミック DNS が使いたかったので、設定をまとめてみました。

ちなみに、私が契約しているダイナミック DNS は、Dyndns です。

インターネット上の DNS サーバーを参照できるようにします。

  • ip dns server: DNS サーバー参照を有効化
  • ip name-server: 参照する DNS サーバーの IPアドレス
C892-02# configure terminal
C892-02(config)# ip dns server
C892-02(config)# ip name-server 4.2.2.6

DDNS の設定を入れていきます。

  • ip ddns update method: 契約している DDNS のサービス
  • http: HTTP を使用して更新

この例では、Dyndnsをサービスとして使っています。

C892-02(config)#ip ddns update method DynDNS
C892-02(DDNS-update-method)#http

次に、Dyndns で契約しているサービスのアカウント情報を指定します。Dyndns の場合、構文は以下の内容になります。

https://username:password@members.dyndns.org/nic/update?system=dyndns&hostname=&myip=

C892-02(DDNS-HTTP)# add http://kkinternational:pass-kk@members.dyndns.org/nic/update?system=dyndns&hostname=<h>&myip=<a>

次に、アップデートのインターバルを指定します。

  • interval maximum: DDNS の更新間隔

日 時間 分 秒 の順になります。以下の例だと 5分毎という指定です。このインターバルは時間が短すぎると、サービスによっては拒否されますので、適当な長さで指定した方が良いです。

C892-02(DDNS-HTTP)# interval maximum 0 0 5 0

これで、ダイナミック DNS の設定は完了です。

DDNS として No-IP を使用している場合、こちらが参考になります。

最後に、この設定をインターネットに面しているインターフェースに適用していきます。

  • ip ddns update hostname: 契約している DDNS のホスト名
  • ip ddns update: 契約しているサービス名
C892-02(DDNS-update-method)# interface dialer0
C892-02(config-if)# ip ddns update hostname kkinternational.dyndns.org
C892-02(config-if)# ip ddns update dyndns
C892-02(config-if)# ip address dhcp

動作確認には、このデバッグコマンドが使えます。

C892-02#debug ip ddns update 
Dynamic DNS debugging is on

この設定を使って、リモートからの IPSec VPN 接続を行おうと設定をしています。こちらの設定についても、まとめたら公開していきたいと思います。

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

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

関連する記事:

最近の記事:

カテゴリー
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年 Raspberry Pi ガジェット コマンド コンピューター バックアップ・リストア 技術一般

Raspberry pi 4 バックアップ・リストア

バックアップ

MacOS を使っているなら、DD がおすすめです。ターミナルでの操作になりますが、バックアップイメージの書き出しが非常に速いです。

Windows でも、これを入れれば、DD が使えるようになるみたいです。私は使ったことがないのですが。

MacOS

ターミナルを起動し、df コマンドを実行します。

kma@C02CL3FJMD6R-MAC ~ % df -h
Filesystem                  Size   Used  Avail Capacity    iused       ifree %iused  Mounted on
/dev/disk1s1               1.8Ti   10Gi  1.2Ti     1%     488398 19538540362    0%   /
devfs                      193Ki  193Ki    0Bi   100%        667           0  100%   /dev
/dev/disk1s2               1.8Ti  578Gi  1.2Ti    32%    2598232 19536430528    0%   /System/Volumes/Data
/dev/disk1s5               1.8Ti  4.4Gi  1.2Ti     1%          4 19539028756    0%   /private/var/vm
map auto_home                0Bi    0Bi    0Bi   100%          0           0  100%   /System/Volumes/Data/home
/dev/disk1s4               1.8Ti  505Mi  1.2Ti     1%         57 19539028703    0%   /Volumes/Recovery
//admin@172.16.16.4/share  2.7Ti  1.2Ti  1.5Ti    45% 1284655110  1628797004   44%   /Volumes/share

MicroSD を認識させた後に、もう一度 DF コマンドを実行します。増えているものが、MicroSD のディスク番号です。

私の例ですと、/dev/disk2s1 になってます。これを、メモしておきます。

kma@C02CL3FJMD6R-MAC ~ % df -h
Filesystem                  Size   Used  Avail Capacity    iused       ifree %iused  Mounted on
/dev/disk1s1               1.8Ti   10Gi  1.2Ti     1%     488398 19538540362    0%   /
devfs                      193Ki  193Ki    0Bi   100%        667           0  100%   /dev
/dev/disk1s2               1.8Ti  578Gi  1.2Ti    32%    2598246 19536430514    0%   /System/Volumes/Data
/dev/disk1s5               1.8Ti  4.4Gi  1.2Ti     1%          4 19539028756    0%   /private/var/vm
map auto_home                0Bi    0Bi    0Bi   100%          0           0  100%   /System/Volumes/Data/home
/dev/disk1s4               1.8Ti  505Mi  1.2Ti     1%         57 19539028703    0%   /Volumes/Recovery
//admin@172.16.16.4/share  2.7Ti  1.2Ti  1.5Ti    45% 1284655110  1628797004   44%   /Volumes/share
/dev/disk2s1               252Mi   49Mi  204Mi    20%          0           0  100%   /Volumes/boot

MicroSD をアンマウントします。

kma@C02CL3FJMD6R-MAC ~ % diskutil umountDisk /dev/disk2s1 
Unmount of all volumes on disk2 was successful

MiscoSD の中のデータをコピーします。

sudo dd if=/dev/rdiskX of=./image-name.img bs=1m

「if=」の後に、先ほどのディスク番号を指定します。私の場合は、「/dev/disk2s1」なので、「/dev/disk2」です。

diskの前に「r」を付けるのを忘れないようにしてください。これを忘れると、書き出しが非常に遅くなります。

「of=」の後ろには、書き出した後のイメージの名前を指定します。以下の例では、書き出し先は、カレントディレクトリーです。

最後に「bs=1m」を指定しておきます。これも忘れると、書き出しが非常に遅くなるので注意です。

kma@C02CL3FJMD6R-MAC ~ % sudo dd if=/dev/rdisk2 of=./raspberry-20210606-bak.img bs=1m
Password:

書き出しが始まりました。

別のターミナルを起動して見てみましょう。指定した名前のファイルができてますね。

kma@C02CL3FJMD6R-MAC ~ % ls -la ./*.img
-rw-r--r--  1 root  staff  5622464512 Jun  6 13:11 ./raspberry-20210606-bak.img

書き出しが完了するまで、しばらく待ちます。

32GB の MicroSD からイメージを書き出しましたが、約422秒で完了です。なかなか速いですね。

30145+0 records in
30145+0 records out
31609323520 bytes transferred in 421.862104 secs (74928094 bytes/sec)

これでバックアップは完了です。

ちなみに、このイメージファイルですが、圧縮するとかなりサイズが小さくできるみたいです。32GBのバックアップイメージを圧縮すると、1.9GBくらいまで小さくできます。

バックアップを数世代残しておきたい場合は特に、圧縮して保存しておくと良いかもしれません。

リストア

BelenaEtcher をダウンロードします。使い方も簡単で、個人的におすすめです。

バックアップの時に使用した DD コマンドでもリストアはできるのですが、こちらの方が、書き込み速度が速いです。

Windows 版、MacOS 版、Linux 版があります。

Etcher を起動します。

「Flash from file」をクリックします。

エクスプローラーから、バックアップイメージを指定します。

「Select target」をクリックします。

リストア先の MicroSD を指定し、「Select」をクリックします。

「Flash」を押せば、リストアが開始します。

MicroSD への書き込みが始まります。

使っているパソコンのスペック次第というところもありいますが、32GB のイメージの書き込みで、45分くらいという感じです。

関連する記事:

最近の記事: