パケットキャプチャにおける敷居の高さ
アットマークITにWiresharkの記事が出ていました。
ITプロ必携の超便利システム管理ツール集(8):使い方をマスターすれば、怖いものなし〜最強のネットワークツール「Wireshark」 - @IT
私自身、Wiresharkは便利に使わせていただいていますが、この手のツールって、いまいちIT技術者の共通言語として遍く普及しているとは言えないのではないかと思います。ハンパなく便利なのにも関わらずです。
具体的にどのくらい便利なのかというと、このツールを使いこなすことが出来ればユーザー企業の情シス部門ではインフラ系のトラブルシュートでほぼ無双できます。
パケットキャプチャはいわばネットワークにおけるデバッグツールであり、in/outが分かればどこに問題があるか切り分けが容易ですし、トライアンドエラーではなく理詰めで問題の原因や解決策まで到達できるからです。
なぜ普及しないのか
パケットキャプチャには通信で流れるデータがすべて出力されます。(意図的に絞らない限り)そのため、余計な情報が山ほど出てくるので、取捨選択しなければいけないのですが、たいていの人はトラブルになったときにキャプチャを取るので、どれが怪しいのか、どこを見なければいけないのかが分からないのではないかと思います。
それを解決するためにはとにかくキャプチャを見慣れて、トラブルシュートの経験を積むと良いのですが、これは鶏が先か卵が先かという問題なわけです。
重要なこと
・わからなくても良いのでとにかく取る
・自分なりに怪しいところを見つけ、その振る舞いが正しいかどうか調べる(ひたすら)
・トラブル解決後、必ず答え合わせをする
・平常時のサンプルを取りためておく(テスト時にやっておくと後で役に立つ)
最後に
この間調べたところ私が過去に取りためた平常時のサンプルは2000件を超えていました。平常時のサンプルと見比べるだけでもトラブルシューティングの難易度は大きく違ってきます。この便利なツールを使いこなしてみませんか。
CentOS7にCactiをインストールする
新しいCentOS7が出たのでCactiを入れてみる。
少しハマッたので備忘。
#yum install -y perl php httpd net-snmp net-snmp-utils php-mysql php-snmp rrdtool mariadb-server
#rpm -ivh http://ftp.iij.ad.jp/pub/linux/fedora/epel//6/x86_64/cacti-0.8.8b-7.el6.noarch.rpm
mysql設定
#systemctl start mariadb.service
#systemctl enable mariadb.service
#mysqladmin -u root -p create password
#mysql -u root -p cacti < /usr/share/doc/cacti-0.8.8b/cacti.sql
mysql -u root -p
>grant all on cacti.* to cactiuser@localhost identified by 'cactiuser';
>flush privileges;
config設定
#vi /etc/httpd/conf.d/cacti.conf
<Directory /usr/share/cacti/> 直下に
Require all granted を追加
#vi /etc/sysconfig/httpd
LANG=ja_JP.UTF-8 を追加
/etc/httpd/conf/httpd.conf の ServerName にホスト名を入れる
ServerName ホスト名
これをやらないとhttpd起動時にエラーメッセージが出る
#vi /usr/share/cacti/include/config.php
$url_path = "/cacti/"; コメントをはずす
#vi /etc/php.ini
date.timezone = Asia/Tokyo を追加
WEBサービスを上げる
#systemctl restart httpd.service
#systemctl enable httpd.service
ファイアーウォールを止める
#systemctl list-unit-files | grep firewall
#systemctl disable firewalld.service
#reboot
できあがり。
にアクセスして初期設定。
VyOSにポートフォワーディングを設定する
VyOSにポートフォワーディングを設定します。
WANから入ってきた2222番のアクセスをLAN側の22番にフォワードする設定です。
#set nat destination rule 20 inbound-interface eth0
#set nat destination rule 20 destination port 2222
#set nat destination rule 20 protocol tcp
#set nat destination rule 20 translation port 22
#set nat destination rule 20 translation address 192.168.1.100
#commit
#save
沢山実験サーバを立てると、わけが分からなくなってきますので、
適宜整頓するといいと思います。(自戒をこめて)
仮想マシンのイメージバックアップをオンラインストレージに転送する
転送方式としてFTPを使うことにする。
通信経路が暗号化されないため、ファイル自体を汎用的にZipで暗号化する。
暗号強度の弱い、Traditional PKEncryptionを使用したとしても、バックアップイメージは単一のファイル且つ容量が大きいので、計算上13桁程度のパスワードで十分のはず。既知平文攻撃対策として2回暗号化する。
zip -P ppaasswwoorrdd /backup/imagebackup.iso.zip /backup/imagebackup.iso
×2(ファイル名は変えて)
予めローカルにコマンドファイルを作成
vi cmdfile
open DestinationServer
user username password
bin
prompt
cd /backup
put imagebackup.iso.zip
quit
ftp -n < cmdfile
でftp完了。
しかし時間がかかるな。。
VMware ESXi 5.5にVyOS1.0.4をインストールしてみました。
Vyatta core は開発が中止されVyOSになりました。
このソフトウェアルータ、鬼便利なのでお勧めです。
使い方を習得しておけば、ものの15分くらいでセットアップできますから、緊急事態の強い味方です。
バイナリは以下から
http://ftp.tsukuba.wide.ad.jp/software/vyos/iso/release/1.0.4/vyos-1.0.4-i586.iso
vyos-1.0.4-i586.isoをダウンロード
CDROMにマウントしてDebianベースのVMを作成
メモリは256M DISKは2Gで作成
初回ログイン時
ユーザー名 vyos
パスワード vyos
$install image
いくつかの質問に答えます。
基本デフォルトのままEnter押します
最後パスワードを再設定して出来上がり。楽勝ですね。
仮想ハイパーバイザの中にVMをいくつも構築すると、ネットワーク的な実験サーバなどは作りづらくなってきます。
そんな時、仮想ルータのNATの内側に実験サーバを作ればネットワークを切り離すことが出来るので簡便且つ安全です。今回はこの構成を作ってみます。
設定モードに入ります。
$configure
#set interfaces ethernet eth0 address 10.0.0.1/24
#set interfaces ethernet eth1 address 192.168.1.1/24
#set service dhcp-server shared-network-name NET1 subnet 192.168.1.0/24 start 192.168.1.100 stop 192.168.1.100
#set service dhcp-server shared-network-name NET1 subnet 192.168.1.0/24 default-router 192.168.1.1
#set service dhcp-server shared-network-name NET1 subnet 192.168.1.0/24 lease 86400
#set nat source rule 1
#set nat source rule 1 outbound-interface eth0
#set nat source rule 1 translation address masquerade
#commit
#save
#run show configuration
設定モードでshowコマンドは使えないので先頭にrunを付けるか、exitで設定モードを抜けましょう。
MTUの問題が出ることがあるので、MSSを小さくするポリシーをLAN側のNICに入れておきます。
#set policy route NET rule 10 destination address 0.0.0.0/0
#set policy route NET rule 10 protocol tcp
#set policy route NET rule 10 tcp flags 'SYN,!ACK,!FIN,!RST'
#set policy route NET rule 10 set tcp-mss 1400
#set interfaces ethernet eth1 policy route NET
この後ハイパーバイザでvSwitchを追加します。
・構成タブの画面右側からネットワークの追加
・接続タイプに仮想マシンを選択
・vsphere標準スイッチの作成で物理NICのチェックをはずします。
・ネットワークラベルを分かりやすい名前に変更します。
・VyOSのeth1に相当するNICのラベルを先ほど作成したラベルに付け替えます。
・今後新しく実験用NETWORKに追加するVMのNICには今回作成したラベルを紐付けます。
以上で簡単にネットワークを分けることが出来ました。
SSHやWEBなどでNATの外側から実験用VMにアクセスしたい場合にはポートフォワーディングを設定します。
機会があれば続きを書きたいと思います。