iptables-saveの出力形式の詳細解説
iptablesはLinuxシステムにおいてnetfilterサブシステムを設定するためのクライアントツールです。関連する主要コマンドには以下のようなものがあります:
iptables - テーブル、チェーン、ルールの設定を行う
iptables-save - 設定済みのルールをダンプし、> を使ってファイルにリダイレクトできます
iptables-restore - 以前にエクスポートしたiptablesルール設定ファイルからルールを読み込みます。
本稿では主にiptables-saveの出力形式の読み方について説明します: (関連情報をネットで探しましたが見つからなかったため、自力でまとめました...)
形式の詳細解説
Controller@localhost # iptables-save -t nat -c
説明:-t はダンプするテーブルを指定します(指定しない場合はすべてのテーブルの設定をダンプします)。-c は各ルールの現在のパケットカウントを表示します。
# iptables-save v1.4.21によって生成 Tue Jan 15 15:42:32 2019<br></br>--これはコメント行<br></br>*nat<br></br>-- 以下はnatテーブルの設定です<br></br>:PREROUTING ACCEPT [5129516:445315174]<br></br>-- :PREROUTING ACCEPTは、natテーブルのPREROUTINGチェーンのデフォルトパケットポリシーが許可であることを示します(ルールに一致しない場合は継続)<br></br><br></br>-- [5129516:445315174]は[packet, bytes]を意味し、natテーブルのPREROUTINGチェーンを通過したパケット数(445315174バイト)を示します<br></br>:INPUT ACCEPT [942957:151143842]<br></br>:OUTPUT ACCEPT [23898:3536261]<br></br>:POSTROUTING ACCEPT [23898:3536261]<br></br>-- 上記と同様の解釈<br></br>:DOCKER - [0:0]<br></br>-- 上記と同様の解釈(これはカスタムチェーンです)<br></br>---------- 以下、すべてのルールを個別に出力します----------<br></br>[4075:366986] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER<br></br>-- [4075:366986]は[packet, bytes]を意味し、このルールを通過したパケット数とバイト数を示します。後続部分はiptablesコマンドでこのルールを設定したコマンドです(詳細なオプションはiptablesのヘルプを参照)。<br></br>[0:0] -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER<br></br>[0:0] -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE<br></br>[2:188] -A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN<br></br>[0:0] -A POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN<br></br>[0:0] -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535<br></br>[0:0] -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535<br></br>[0:0] -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE<br></br>[0:0] -A DOCKER -i docker0 -j RETURN<br></br>--上記のルールは最初のルールの解釈と同じです<br></br>COMMIT<br></br>-- 上記の設定を適用します<br></br># Tue Jan 15 15:42:32 2019に完了<br></br>
簡単そうに見えますよね:)
まとめ
実際、iptables-saveの出力はiptablesルールの現在の設定であり、設定の観点から出力されています(iptables-restoreが解析して再設定しやすい形式です)。(-cパラメータを使用するとパケットカウント情報も出力できます)
現在のルールの状態を確認したい場合は、iptablesコマンドの方がより明確で分かりやすいです。
例:
Controller@localhost # iptables --table filter --list VXLAN-INPUT --line-numbers -n -v
Chain VXLAN-INPUT (1 references)<br></br>num pkts bytes target prot opt in out source destination <br></br>1 0 0 DROP all -- storage_data0 * 0.0.0.0/0 0.0.0.0/0 <br></br>2 0 0 DROP all -- storage_data1 * 0.0.0.0/0 0.0.0.0/0 <br></br>3 0 0 DROP all -- brcps * 0.0.0.0/0 0.0.0.0/0 <br></br>4 0 0 DROP all -- external_api * 0.0.0.0/0 0.0.0.0/0 <br></br>5 0 0 DROP all -- external_om * 0.0.0.0/0 0.0.0.0/0 <br></br>6 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0<br></br>
-- この出力は説明不要でしょう、ヘッダーがあり、非常に明確です!
iptables --table filter --list VXLAN-INPUT --line-numbers -n -v コマンドのパラメータ解説:
--table filter --list VXLAN-INPUT:filterテーブルのVXLAN-INPUTチェーンの下にあるすべてのルールを出力します。--line-numbers:ルール番号を表示します(ルール番号でルールを削除するのは非常に便利です)。-v:トラフィック統計情報を表示します。