スマホで通信した内容のパケットキャプチャをしたかった。通信経路上に何かを仕込まないといけない。自宅LAN〜てきとうなLinuxマシン〜てきとうなWi-fi AP〜スマホ、みたいな経路を用意して、間に挟まったLinuxマシンに、IPフォワードとかDHCPとかやって、ルータとして振る舞うようにしてやれば、そこでパケットキャプチャすれば良さそう。
…というところまで考えて、そう言えば、自宅LANのルータにEdgeRouter Xを使ってるんだから、絶対ここでもできるでしょう…ということで、その記録。
本題
やることは簡単で、sshで鍵ログインできるようにした上で、EdgeRouter Xのtcpdumpを実行し、その結果をWiresharkで読み込ませる。
sshで鍵ログインできるようにする
- まずは手元で鍵を生成
1
$ ssh-keygen -t rsa -b 4096
- 公開鍵をER-Xに転送
1
$ scp ./.ssh/id_rsa.pub USER@192.168.0.1:/tmp # ここではパスワード認証
- 公開鍵をER-Xに登録
1 2 3 4 5 6
$ ssh USER@192.168.0.1 # ここではパスワード認証 $ configure # loadkey USER /tmp/id_rsa.pub # commit # save # exit
- ホームディレクトリの所持ユーザが壊れてるので、ログインユーザに変更
1 2 3 4
$ cd $ pwd /home/USER $ sudo chown -R USER .
- 公開鍵認証でログインできることを確認してから、パスワード認証をオフにする
1 2 3 4
$ configure # set service ssh disable-password-authentication # commit # save
Wiresharkからキャプチャ!
Server, Authenticationはよしなに設定すれば良い。
Captureは以下のような感じで。
- Remote interface
- 今回はWi-fi APをeth4に接続していたのでeth4にした
- Remote capture command
/usr/sbin/tcpdump -U -w -
ちなみに/usr/sbinはPATH通ってないっぽい。どこかPATHが通っている場所にln -sしても良いかも?
おわり
後は煮るなり焼くなり、てきとうに。