[重要]tcpdumpでプロミスキャスモードになった話|回避オプション・解除方法の備忘録

tcpdumpコマンドでプロミスキャスモードになった場合の対処法。
 
シャチ
駆け出しインフラエンジニアの備忘録です。
施工管理職から転職し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%だったため、相当焦りました。

なぜプロミスキャスモードになったことに気づいたのか

対象サーバーで作業をしようとした際に、以下の流れで気付きました。

  1.  サーバーの状態を見た時に、CPU使用率60%超、メモリ使用率95%となっていた。
  2.  ログを確認するために、syslogを見たときにログが膨大になっていた。
  3.  /var/logで”ls -lh”を叩いたところ、kern.logとsyslogの容量が突出していた。
  4.  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をオプションなしで実行しない。

解除方法 ※インタフェースは任意。

ip link set eth0 promisc off
ifconfig eth0 -promisc

 

念のため、tcpdumpコマンドを実行した後には、”ip link”や”ifconfig”コマンドでインタフェース状態に「promisc」が表示されていないことを確認しておきましょう!

シャチ
この膨大なkern.logとsyslogどうするんだ…

>
CTR IMG