「Wireshark」の版間の差分
細 (文字列「[[zh-CN:」を「[[zh-hans:」に置換) |
Kusanaginoturugi (トーク | 投稿記録) (→インストール: 序文を更新) |
||
(5人の利用者による、間の18版が非表示) | |||
5行目: | 5行目: | ||
[[ru:Wireshark]] |
[[ru:Wireshark]] |
||
[[zh-hans:Wireshark]] |
[[zh-hans:Wireshark]] |
||
− | Wireshark はフリーでオープンソースのパケットアナライザです。ネットワークのトラブルシューティングや解析、ソフトウェアと通信プロトコルの開発、または教育などに使われています |
+ | Wireshark はフリーでオープンソースのパケットアナライザです。ネットワークのトラブルシューティングや解析、ソフトウェアと通信プロトコルの開発、または教育などに使われています。 |
==インストール== |
==インストール== |
||
+ | Wireshark GUI の場合は {{Pkg|wireshark-qt}} パッケージを[[インストール]]し、{{man|1|tshark}} CLIの場合は {{Pkg|wireshark-cli}} を[[インストール]]します。 |
||
− | wireshark のパッケージは CLI バージョンと GTK と Qt フロントエンドに分割されています。フロントエンドは CLI に依存しています。 |
||
+ | {{Note|非推奨の GTK インターフェースは Wireshark 3.0 で削除されました。}} |
||
− | {{Warning|Qt フロントエンドは機能が少なくなっており、GTK フロントエンドと比べて安定度が低くなっています。ネットワークインターフェイスを表示するときやモニターモードやパーミッションの有効化で問題が発生する場合、GTK バージョンを使ってみてください。}} |
||
− | + | {{Pkg|termshark}} は代替のターミナル UI です。 |
|
− | * GTK フロントエンド - {{Pkg|wireshark-gtk}} パッケージで[[インストール]]できます。 |
||
− | * Qt フロントエンド - {{Pkg|wireshark-qt}} パッケージで[[インストール]]できます。 |
||
+ | == 特権の取得 == |
||
− | == 通常ユーザーでキャプチャ == |
||
+ | Wireshark を root で実行しないでください。Wireshark は特権分離を実装しています。つまり、Wireshark GUI(または tshark CLI)は通常のユーザとして動作し、dumpcap キャプチャユーティリティは root[https://gitlab.com/wireshark/wireshark/-/wikis/CaptureSetup/CapturePrivileges#most-unixes] として動作します。 |
||
− | root で Wireshark を実行するのは危険です。 |
||
+ | {{Pkg|wireshark-cli}} [[PKGBUILD#install|インストールスクリプト]] は、{{ic|/usr/bin/dumpcap}} 実行ファイルにパケットキャプチャ[[ケイパビリティ]]を設定します。 |
||
− | Arch Linux は |
||
− | [http://wiki.wireshark.org/CaptureSetup/CapturePrivileges#Other_Linux_based_systems_or_other_installation_methods Wireshark wiki の方法] にそって権限を分けています。{{Pkg|wireshark-cli}} のインストール時に、[[PKGBUILD#install|install スクリプト]]によって {{ic|/usr/bin/dumpcap}} にケイパビリティが設定されます。 |
||
+ | {{ic|/usr/bin/dumpcap}} は root と {{ic|wireshark}} グループのメンバーしか実行できないので、通常のユーザーとして Wireshark を使用するには、自分のユーザーを wireshark [[ユーザーとグループ#グループ管理|ユーザーグループ]]に追加する必要があります([[ユーザーとグループ#グループ管理]] を参照)。 |
||
− | {{hc|$ getcap /usr/bin/dumpcap|2= |
||
− | /usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip |
||
− | }} |
||
− | |||
− | {{ic|/usr/bin/dumpcap}} だけがパケットをキャプチャできるプロセスになります。{{ic|/usr/bin/dumpcap}} は root と {{ic|wireshark}} グループのメンバーだけが実行することが可能です。 |
||
− | |||
− | 通常ユーザーでキャプチャする方法は2つあります: |
||
− | === wireshark グループにユーザーを追加=== |
||
− | wireshark を通常ユーザーで使うために、ユーザーを wireshark グループに追加します: |
||
− | |||
− | {{bc|# gpasswd -a ''username'' wireshark}} |
||
− | |||
− | wireshark を起動する前に次のコマンドを実行することで、ログインしなおすことなくセッションに新しいグループを適用することができます: |
||
− | {{bc|$ newgrp wireshark}} |
||
− | |||
− | === sudo を使う === |
||
− | [[sudo]] を使うことで一時的にグループを {{ic|wireshark}} に変更できます。以下の設定をすることで、wheel グループのユーザーが GID が wireshark に設定されたプログラムを実行できるようになります: |
||
− | |||
− | {{bc|1=%wheel ALL=(:wireshark) /usr/bin/wireshark, /usr/bin/tshark}} |
||
− | |||
− | wireshark は次のコマンドで実行します: |
||
− | {{bc|$ sudo -g wireshark wireshark}} |
||
==キャプチャのテクニック== |
==キャプチャのテクニック== |
||
51行目: | 27行目: | ||
フィルターを適用することで Wireshark で見たいパケットだけをキャプチャすることが可能です。 |
フィルターを適用することで Wireshark で見たいパケットだけをキャプチャすることが可能です。 |
||
− | {{Note|フィルターの構文については、{{ |
+ | {{Note|フィルターの構文については、{{man|7|pcap-filter}} や {{man|4|wireshark-filter}} の man ページを見て下さい。}} |
===TCP パケットを抽出=== |
===TCP パケットを抽出=== |
||
67行目: | 43行目: | ||
* 特定のアドレスから送受信されるトラフィックを全て閲覧したい場合、{{ic|<nowiki>ip.addr == 1.2.3.4</nowiki>}} と入力してください。{{ic|1.2.3.4}} は適当な IP アドレスに置き換えて下さい。 |
* 特定のアドレスから送受信されるトラフィックを全て閲覧したい場合、{{ic|<nowiki>ip.addr == 1.2.3.4</nowiki>}} と入力してください。{{ic|1.2.3.4}} は適当な IP アドレスに置き換えて下さい。 |
||
+ | |||
+ | === 特定の IP アドレスのパケットを除外 === |
||
+ | |||
+ | ip.addr != 1.2.3.4 |
||
+ | |||
+ | === LAN へのパケットを抽出 === |
||
+ | |||
+ | LAN トラフィックのみを表示し、インターネットトラフィックを表示しないようにするには、以下のように実行します。 |
||
+ | |||
+ | (ip.src==10.0.0/8 AND ip.dst==10.0.0/8) OR (ip.src==172.16.0.0/12 AND ip.dst==172.16.0.0/12) OR (ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16) |
||
+ | |||
+ | これにより、任意のフライベートネットワークスペース内のトラフィックが抽出フィルタされます。 |
||
+ | |||
+ | === ポート毎にパケットを抽出 === |
||
+ | |||
+ | 2 つ以上のポートのすべてのトラフィックを表示: |
||
+ | |||
+ | tcp.port==80||tcp.port==3306 |
||
+ | tcp.port==80||tcp.port==3306||tcp.port==443 |
||
+ | |||
+ | === dumpcap によるヘッドレスキャプチャ === |
||
+ | |||
+ | ''dumpcap'' は Wireshark の一部であり、GUI を使用せずにパケットをキャプチャするために使用できます。 [[tmux]] と組み合わせて使用すると、切り離されたセッションでパケットをキャプチャできるようになります。 |
||
+ | |||
+ | すべての dumpcap オプションを表示するには、{{ic|-h}} フラグを使用します。 |
||
+ | |||
+ | 次の例では、リングバッファのキャプチャを提供します。それぞれ 100MB の 20 個の {{ic|.pcap}} ファイルをキャプチャし、最も古いファイルを 21 番目のファイルに置き換えるというように続きます。これにより、ディスク容量を使い果たすことなく継続的にキャプチャを行うことができます。 |
||
+ | |||
+ | # dumpcap -i 1 -b filesize:100000 -b files:20 -w ''mycapture''.pcapng |
||
+ | |||
+ | * {{ic|-i}} − interface number (listed from {{ic|dumpcap -D}}) |
||
+ | |||
+ | * {{ic|-b filesize:}} − file size in kB before starting a new {{ic|.pcap}} file |
||
+ | |||
+ | * {{ic|-b files:}} − the number of files to capture before overwriting the oldest |
||
+ | |||
+ | * {{ic|-w}} − write the output to the file {{ic|mycapture''identifier''.pcapng}} |
2023年7月19日 (水) 10:47時点における最新版
Wireshark はフリーでオープンソースのパケットアナライザです。ネットワークのトラブルシューティングや解析、ソフトウェアと通信プロトコルの開発、または教育などに使われています。
目次
インストール
Wireshark GUI の場合は wireshark-qt パッケージをインストールし、tshark(1) CLIの場合は wireshark-cli をインストールします。
termshark は代替のターミナル UI です。
特権の取得
Wireshark を root で実行しないでください。Wireshark は特権分離を実装しています。つまり、Wireshark GUI(または tshark CLI)は通常のユーザとして動作し、dumpcap キャプチャユーティリティは root[1] として動作します。
wireshark-cli インストールスクリプト は、/usr/bin/dumpcap
実行ファイルにパケットキャプチャケイパビリティを設定します。
/usr/bin/dumpcap
は root と wireshark
グループのメンバーしか実行できないので、通常のユーザーとして Wireshark を使用するには、自分のユーザーを wireshark ユーザーグループに追加する必要があります(ユーザーとグループ#グループ管理 を参照)。
キャプチャのテクニック
フィルターを適用することで Wireshark で見たいパケットだけをキャプチャすることが可能です。
TCP パケットを抽出
TCP パケットを全て閲覧したい場合、"Filter" バーに tcp
と入力してください。もしくは CLI 版の場合:
$ tshark -f "tcp"
UDP パケットを抽出
UDP パケットを全て閲覧したい場合、"Filter" バーに udp
と入力してください。もしくは CLI 版の場合:
$ tshark -f "udp"
特定の IP アドレスのパケットを抽出
- 特定のアドレスに送信されるトラフィックを全て閲覧したい場合、
ip.dst == 1.2.3.4
と入力してください。1.2.3.4
はトラフィックの送信先の IP アドレスに置き換えて下さい。
- 特定のアドレスから送られたトラフィックを全て閲覧したい場合、
ip.src == 1.2.3.4
と入力してください。1.2.3.4
はトラフィックの送信元の IP アドレスに置き換えて下さい。
- 特定のアドレスから送受信されるトラフィックを全て閲覧したい場合、
ip.addr == 1.2.3.4
と入力してください。1.2.3.4
は適当な IP アドレスに置き換えて下さい。
特定の IP アドレスのパケットを除外
ip.addr != 1.2.3.4
LAN へのパケットを抽出
LAN トラフィックのみを表示し、インターネットトラフィックを表示しないようにするには、以下のように実行します。
(ip.src==10.0.0/8 AND ip.dst==10.0.0/8) OR (ip.src==172.16.0.0/12 AND ip.dst==172.16.0.0/12) OR (ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16)
これにより、任意のフライベートネットワークスペース内のトラフィックが抽出フィルタされます。
ポート毎にパケットを抽出
2 つ以上のポートのすべてのトラフィックを表示:
tcp.port==80||tcp.port==3306 tcp.port==80||tcp.port==3306||tcp.port==443
dumpcap によるヘッドレスキャプチャ
dumpcap は Wireshark の一部であり、GUI を使用せずにパケットをキャプチャするために使用できます。 tmux と組み合わせて使用すると、切り離されたセッションでパケットをキャプチャできるようになります。
すべての dumpcap オプションを表示するには、-h
フラグを使用します。
次の例では、リングバッファのキャプチャを提供します。それぞれ 100MB の 20 個の .pcap
ファイルをキャプチャし、最も古いファイルを 21 番目のファイルに置き換えるというように続きます。これにより、ディスク容量を使い果たすことなく継続的にキャプチャを行うことができます。
# dumpcap -i 1 -b filesize:100000 -b files:20 -w mycapture.pcapng
-i
− interface number (listed fromdumpcap -D
)
-b filesize:
− file size in kB before starting a new.pcap
file
-b files:
− the number of files to capture before overwriting the oldest
-w
− write the output to the filemycaptureidentifier.pcapng