tcpdumpコマンドでプロミスキャスモードになった場合の対処法。
駆け出しインフラエンジニアの備忘録です。
施工管理職から転職し2年目になります。
施工管理職から転職し2年目になります。
関連記事
実現したいこと:Let's Encryptの証明書を自動更新したい。 シャチ 駆け出しインフラエンジニアの備忘録です。施工管理職から転職し2年目になります。 ネットワークエンジニア始めるならネットビジョン[…]
経緯
先日、tcpdumpコマンドを使用していた時に、誤ってプロミスキャスモードとなってしまいました。
気づいた時にはサーバー負荷やメモリ使用率が増大し焦ったため、同じ事象に陥った際に早期対処できるよう、備忘録として記述します。
目次
プロミスキャスモードになった場合の解除方法
ip link コマンド ※man ip link抜粋。
ip link set { DEVICE | group GROUP } [ promisc { on | off } ] ex) ip link set eth0 promisc off
ifconfig コマンド ※man ifconfig抜粋。
SYNOPSIS ifconfig [-v] [-a] [-s] [interface] ifconfig [-v] interface [aftype] options | address ... OPTIONS [-]promisc Enable or disable the promiscuous mode of the interface. If selected, all packets on the network will be received by the interface. ex)ifconfig eth0 -promisc
早く解除したかったのですが、なかなか解除コマンドが探せなかったため、冒頭に載せておきます。
コマンド実行後、CPU使用率が下がったため解除されたようでした。
このときメモリ使用率が95%だったため、相当焦りました。
なぜプロミスキャスモードになったことに気づいたのか
対象サーバーで作業をしようとした際に、以下の流れで気付きました。
- サーバーの状態を見た時に、CPU使用率60%超、メモリ使用率95%となっていた。
- ログを確認するために、syslogを見たときにログが膨大になっていた。
- /var/logで”ls -lh”を叩いたところ、kern.logとsyslogの容量が突出していた。
- kern.logを確認すると、”Promiscuous mode enabled.”で埋め尽くされていた。
プロミスキャスモードは、”wireshark”でチェックして使用するイメージだったので、まさかtcpdumpでなるとはという感じでした。
参考ですが、wiresharkでのプロミスキャスモードの設定箇所は以下のとおり。
デフォルトでプロミスキャスモードONとなっている認識です。
tcpdumpでプロミスキャスモードになることを防ぐには
man tcpdumpを実行した後、”promiscuous”で検索してみると、以下のとおりです。
-p --no-promiscuous-mode Don't put the interface into promiscuous mode. Note that the interface might be in promiscuous mode for some other reason; hence, `-p' cannot be used as an abbreviation for `ether host {local-hw-addr} or ether broad‐cast'.
tcpdumpオプションに”-p”を使用すればよいようなので、今後は基本的にtcpdump -pを使うように心掛けます。
まとめ:tcpdumpでプロミスキャスモードになった話|回避オプション・解除方法の備忘録
[重要]
tcpdumpをオプションなしで実行しない。
tcpdumpをオプションなしで実行しない。
解除方法 ※インタフェースは任意。
ip link set eth0 promisc off ifconfig eth0 -promisc
念のため、tcpdumpコマンドを実行した後には、”ip link”や”ifconfig”コマンドでインタフェース状態に「promisc」が表示されていないことを確認しておきましょう!
この膨大なkern.logとsyslogどうするんだ…