iptablesのログを出力して確認する方法
仕事でiptablesのログを出して調査する機会がありました。
過去何回か同じような機会があったんですが、その度に過去のissue確認したり、ウェブで検索したり同じことやっているので、どうせならここに書いとこう。
過去何回か同じような機会があったんですが、その度に過去のissue確認したり、ウェブで検索したり同じことやっているので、どうせならここに書いとこう。
ログを出力する方法は、filter,natなど共通で、ターゲットにLOGを指定します。
インフラの人たいへんだなーと思いながら消耗した一日でした。
おわり。
-j LOGこんな感じです
iptables -A INPUT -p tcp -j LOGUbuntsu Linuxで試したところ、/var/log/kern.logにログが出力されました。 INとOUTが別れており、IPアドレス、ネットワークインタフェースの情報、長さなどの情報が確認できます。
Jul 7 14:21:45 localhost kernel: [9999.999999] IN=eth0 OUT= MAC=- SRC=99.99.99.99 DST=88.88.88.88 LEN=52 TOS=0x00 PREC=0x00 TTL=51 ID=999 DF PROTO=TCP SPT=99999 DPT=80 WINDOW=666 RES=0x00 ACK FIN URGP=0 Jul 7 14:21:45 localhost kernel: [9999.999999] IN= OUT=eth1 SRC=99.99.99.99 DST=192.168.1.1 LEN=52 TOS=0x00 PREC=0x00 TTL=50 ID=99999 DF PROTO=TCP SPT=99999 DPT=80 WINDOW=99999 RES=0x00 SYN URGP=0色々なオプションが指定できるようです。 NATのPOSTROUTINGに対してログを出力する。ログの先頭に、”NAT “のプレフィックスを付与する。
iptables -t nat -I POSTROUTING 1 -j LOG --log-prefix "NAT "特定のポートのみ出力する
-A INPUT -p tcp --dport 80 -j LOG今回、内部ネットワークのどの地点まで到達しているかの調査だったのですが、ログの情報がとても役に立ちました。
インフラの人たいへんだなーと思いながら消耗した一日でした。
おわり。