いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.059 / 読者数:825名

こんばんは、うすだです。

突然ですが、ひさびさに、メルマガのご紹介です。

再三書いている気がしますが、われわれエンジニアにとって、英語という言語は、 いやでもおつき合いしなければいけない大事なものです。

そう思って、わたしは英語に関するメルマガをいくつか購読しています。
しかし、日常的な会話や新聞などの文面に関するものがほとんどで、 技術的な文書を扱うメルマガは、ぜんぜん見当たりません。

…と思っていましたが、最近、以下のメルマガを見つけました。

Linux英語の達人
http://www.mag2.com/m/0000180265.html

「Linux英語の達人」では、Linux に関する英語のドキュメントの中から、 気になるフレーズを、毎回ていねいに訳してくれます。
また、「小ネタ」というコーナーでは、 辞書だけではわかりにくい言葉を紹介してくれます。 興味深い言葉が紹介されていて、面白いです。

週2回の発行のため、ついていけるかやや不安でしたが、 内容がぎゅっと短くまとめられていますし、もとが Linux の文章ということもあって、 英語の苦手なわたしでも問題なく理解できています。

よーし、これで英語はばっちりだ!!!
…なんてことにはなかなかならないと思いますが、継続は力だと思いますので、 楽しく読み続けようと思っています。

というわけで、紹介だけでおわってしまいましたが、
今週も、はりきってまいりましょう!

今週のお題 - tcpdump でネットワークを盗み見る

いよいよ、禁断の領域に、足を踏み入れたいと思います。

…なんて、意味深に書いてしまいましたが、単に、 ネットワークを流れるパケットを見てみよう! というだけのことです。

みなさんはすでにいろいろと経験されていると思いますが、 ネットワークに絡む諸問題というのは、原因究明と対処方法が、 なかなか難しいのではないかと思います。

そんなとき、原因を突き止めるための堅実な方法として、 ネットワークを流れるパケットを直接見る、という強引殺法があります。
そのマシンにパケットが届いているかどうか、パケットの内容が正しいかどうか、 などなどを、詳しく調べることができます。

なんだか敷居が高そうだなーと思われるかもしれませんが、 やってみるとそれほど難しくはないですよ…たぶん。

そんなわけで、今週は、ネットワークを流れるパケットを眺めるための、 tcpdump というコマンドを使ってみたいと思います。


tcpdump は、ネットワーク・インターフェース上に流れるパケットを表示したり、 ファイルに記録したりするためのコマンドです。
tcpdump を実行するためには、root の権限が必要となりますので、sudo 経由か、 root になって実行しましょう。
では、早速、実行してみます。

  # tcpdump
  tcpdump: verbose output suppressed, use -v or -vv for full protocol \
  decode
  listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
  22:52:39.847532 arp who-has tamabee tell 192.168.1.17
  22:52:39.848130 arp reply tamabee is-at 00:60:08:b2:55:c4
  22:52:39.848150 IP 192.168.1.17.39637 > tamabee.telnet: S \
  2050266091:2050266091(0) win 5840 <mss 1460,sackOK,timestamp \
  124842856 0,nop,wscale 0>
  22:52:39.850081 IP tamabee.telnet > 192.168.1.17.39637: S \
  1481195305:1481195305(0) ack 2050266092 win 17376 <mss 1460,nop,\
  nop,sackOK,nop,wscale 0,nop,nop,timestamp 1012849931 124842856>
  22:52:39.850143 IP 192.168.1.17.39637 > tamabee.telnet: . ack 1 \
  win 5840 <nop,nop,timestamp 124842857 1012849931>
  ...どばばばば...

引数になにも指定しなければ、 インターフェース eth0 に流れるパケットの要約を出力してくれます。
上記から、以下のやりとりが行われたことが、おぼろげにわかります。

  22:52:39.847532 : tamabee の MAC アドレスを問合せる ARP 要求
  22:52:39.848130 : 00:60:08:b2:55:c4 だよという ARP 応答
  22:52:39.848150 : 192.168.1.17 から tamabee の telnet への、接続
                    要求(SYN)
  22:52:39.850081 : tamabee から 192.168.1.17 への接続許可(SYN|ACK)
  22:52:39.850143 : 192.168.1.17 から tamabee への応答(ACK)
                    (以上3つで、TCPのセッションが確立されました)

-i オプションを用いて、インターフェースを指定することもできます。

  # tcpdump -i eth1

上記では、インターフェース eth1 に流れるパケットを対象とします。
また、-v や -vv オプションを用いると、詳細を教えてくれます。

  # tcpdump -vv
  tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture \
  size 96 bytes
  22:57:48.552655 arp who-has tamabee tell 192.168.1.17
  22:57:48.553280 arp reply tamabee is-at 00:60:08:b2:55:c4
  22:57:48.553312 IP (tos 0x10, ttl  64, id 43104, offset 0, flags [DF], \
  length: 60) 192.168.1.17.39639 > tamabee.telnet: S [tcp sum ok] \
  2378875806:2378875806(0) win 5840 <mss 1460,sackOK,timestamp \
  124873726 0,nop,wscale 0>
  22:57:48.586020 IP (tos 0x0, ttl  64, id 13671, offset 0, flags [DF], \
  length: 64) tamabee.telnet > 192.168.1.17.39639: S [tcp sum ok] \
  1300180853:1300180853(0) ack 2378875807 win 17376 <mss 1460,nop,\
  nop,sackOK,nop,wscale 0,nop,nop,timestamp 1012850549 124873726>
  22:57:48.586078 IP (tos 0x10, ttl  64, id 43105, offset 0, flags [DF], \
  length: 52) 192.168.1.17.39639 > tamabee.telnet: . [tcp sum ok] \
  1:1(0) ack 1 win 5840 <nop,nop,timestamp 124873730 1012850549>
  ...どばばばば...

先ほどと内容はほぼ同じ(時刻が違います)ですが、 IPヘッダや TCPヘッダなどの情報も出力してくれています。
(ひとによっては、よりわかりにくくなったかもしれませんが…。)

もっと生の情報が見たいとおっしゃる漢な方は、 -x オプションをつけて実行してください。

  # tcpdump -x
  tcpdump: verbose output suppressed, use -v or -vv for full protocol \
  decode
  listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
  23:12:46.443949 arp who-has tamabee tell 192.168.1.17
    0x0000:  0001 0800 0604 0001 00d0 59ca 5940 c0a8  ..........Y.Y@..
    0x0010:  0111 0000 0000 0000 c0a8 0102            ............
  23:12:46.444540 arp reply tamabee is-at 00:60:08:b2:55:c4
    0x0000:  0001 0800 0604 0002 0060 08b2 55c4 c0a8  .........`..U...
    0x0010:  0102 00d0 59ca 5940 c0a8 0111 0000 0000  ....Y.Y@........
    0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
  23:12:46.444562 IP 192.168.1.17.39648 > tamabee.telnet: S \
  3312762375:3312762375(0) win 5840 <mss 1460,sackOK,timestamp \
  124963513 0,nop,wscale 0>
    0x0000:  4510 003c 74be 4000 4006 428a c0a8 0111  E..<t.@.@.B.....
    0x0010:  c0a8 0102 9ae0 0017 c574 be07 0000 0000  .........t......
    0x0020:  a002 16d0 bd33 0000 0204 05b4 0402 080a  .....3..........
    0x0030:  0772 cab9 0000 0000 0103 0300            .r..........
  ...どばばばば...

ARP や IP パケットの生のデータが、合わせて出力されます。
ただし、デフォルトでは、 1パケットあたり96バイト(オクテットかも)までしか出力してくれません。 もっとたくさん出力して欲しいときには、-s オプションで、 そのサイズを指定します。

  # tcpdump -x -s 300

上記の場合、最大300バイト(オクテット)まで出力してくれます。
上限なく出力して欲しければ、0 を指定してください。

とりあえず今はパケットを取得しておくだけにしておいて、 あとから何度も見直したいとおっしゃる貴兄は、-w オプションを用いて、 ファイルに記録しましょう。

  # tcpdump -s 0 -w tcpdump_20060528.log
  tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture \
  size 65535 bytes

tcpdump_20060528.log というファイルに、 パケットサイズ無制限(65535と言ってますね)で取得した情報を、記録します。
あとから見たいときには、-r オプションでファイルを指定して、 あとはいつものように実行します。

  # tcpdump -x -r tcpdump_20060528.log | less

上記では、パイプで less コマンドに渡して、 less で見られるようにしています。
あとからじっくり確認したいときなどに、便利ですね。


…あ、tcpdump の簡単な使い方で、今週は終わってしまいました。

なんのこっちゃ的なところも多々あったとは思いますが、 わからなくてもぜんぜん構いませんので、オプションをいろいろ組み合わせて実行して、 セレブな(?)気分を味わってみてください。

来週は、ちゃんと応用編をやりたいと思います。(たぶん)

宿題の答え

先週の宿題は、

  シングルユーザモードで起動してください。ただし、起動時にカーネル
  のコマンドラインオプションで指定するのではなく、別の方法で行って
  ください。

でした。

Linux が動き出すときのランレベルは、/etc/inittab の最初のエントリにある、

  id:5:initdefault:
     ↑ココ

で決まります。
5 は、X Window System ありのマルチユーザモードですので、 これを 1 に変えてみましょう。
すると、再起動後に、シングルユーザモードで起動されます。
(毎回シングルユーザモードで起動されると面倒ですので、 試した後はもとに戻しておきましょう。)

ランレベルについては、過去に、以下で取り上げました。
よろしければご覧ください。

Vol.028 - ランレベルを理解する
http://www.usupi.org/sysad/028.html

今週の宿題

今週の宿題は、

  あなたのアカウントが、tcpdump だけを、パスワードなしで実行できる
  ように、sudo の設定を行ってください。

です。

sudo は、ちょっと前にやりました。よね。
root になって tcpdump を実行するよりも楽ですし、 うっかりなリスクも回避できますので、設定して、sudo 経由で使ってみましょう。

あとがき

こう見えても(?)、わたしは、小学校4年生の子を持つ親です。

しかし、子どものすべてを受け入れられる広い心を持っていませんので、 忙しいときにはないがしろにしたり、機嫌の悪いときにはやつあたりなどしてしまう、 よろしくない親です。

それじゃあいけないと思い、よめが持っていた、以下の本を読みました。

子どもが育つ魔法の言葉
http://www.amazon.co.jp/exec/obidos/ASIN/4569660231/usupiorg-22

親の言うことは聞かないし、口ごたえはするし、すぐキレるので、 なんでこんなに扱いにくい子なんだろう? と思っていました。
でも、実は、そういう育て方をしていたんですね。
そうならないためにも、親が間違っていたときは素直に謝る、 子どもの話をしっかり聞く、子どもの手本となる行動を親がするなど、 まあ当たり前のことかもしれませんが、 親子の間の信頼関係をきちんと築いていくことを、地道に実践していこうと思いました。

ですが、わたしがなるほどなと思ったのは、親も子も、 上手に感情を表現しないといけない、というところです。

キレる、ということは、怒りの感情を、 ひどい言葉や行動で表現しているということだと思います。
怒りや悲しみなどの負の感情を、外に出さずに我慢していると、 内にどんどん溜ってしまいます。 これを、上手に表現することで、内に溜めることなく、 そして相手の気分を害することなく、親や子に伝えることができるようになります。 ですので、ぶちっとキレることがなくなります。

そして、同じことが、仕事などに対しても、言えるような気がするのですが、 まだうまく考えを整理できていません。
まあ、焦らず、じっくり考えていきたいと思います。

もし、お子さんをお持ちで、子育てに悩みを抱えられている方は、 上記をぜひ読んでみてください。 税込みでも600円しませんし、600円以上の価値は確実にあると思います。

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−毎日栗の絵を描いています。ギャラリーはまだ観てません。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本