◾️はじめに
https://dk521123.hatenablog.com/entry/2025/03/17/005508
で、昨日、iptablesコマンドについて軽く扱ったが、 今日、早速、kube-proxyでiptables モードってのを扱ったので 今回は、iptablesコマンドを深掘りしてみる
目次
【1】iptablesコマンド 【2】基本構成 1)Tables 2)Chains 3)Rules 【3】構文 1)オプション 2)拡張パラメータ 【4】コマンド例
【1】iptablesコマンド
* パケットフィルタリングとNATを実現するためのコマンド * 送受信パケットの廃棄/許可等のルールをnetfilterに設定/削除するコマンド
【2】基本構成
Tables -> Chains -> Rules
1)Tables
Table names | Explanations |
---|---|
filterテーブル | パケットの許可/廃棄/拒否といったフィルタリング |
natテーブル | ネットワークアドレス変換 |
mangleテーブル | パケットのTOSフィールドやTTLフィールドを変更したり、パケットに特別なマークを付ける時に使用 |
rawテーブル | コネクション追跡で扱われないよう特定のパケットにマークを付ける時に使用 |
2)Chains
Chains | Explanations |
---|---|
PREROUTING | ルーティング前に実行 |
INPUT | サーバに入ってくるパケットを制御 |
OUTPUT | サーバに出ているパケットを制御 |
FORWARD | サーバを経由するパケットの制御 |
POSTROUTING | ルーティングの後に実行される |
3)Rules
* コマンドでは、オプション「-j」で指定する
Rules | Explanations |
---|---|
DROP | ルールに一致するパケットを破棄 |
ACCEPT | ルールに一致するパケットを受け入れる |
REJECT | ルールに一致するパケットを破棄し、送信元にエラーメッセージを返す |
RETURN | チェイン内のルール評価を終了 |
REDIRECT | パケットを特定のポートにリダイレクト |
SNAT | 送信元アドレスを変更 |
DNAT | 送信先アドレスを変更 |
MASQUERADE | プライベートIPアドレスを公開IPアドレスに変換 |
LOG | パケットをログに記録 |
【3】構文
iptables -t {TableName} -コマンド {ChainName} {Rules}
例:PostgreSQLのポートを開ける(下記はデフォルトのポート「5432」の例)
iptables -I OUTPUT -p tcp --sport 5432 -m state --state ESTABLISHED -j ACCEPT # -I (--insert): チェーンの先頭にルールを追加 # --sport 5432 : Source Port。送信側のポート番号を指定 # -m (--match) : ルールに一致するための条件を指定
1)オプション
Options | Explanations |
---|---|
-A (--append) | チェーンの最後にルールを追加 |
-D (--delete) | チェーンからルールを削除 |
-I (--insert) | チェーンの先頭にルールを追加 |
-R (--replace) | チェーン内の既存のルールを置換 |
-L (--list) | ルールを表示 |
-n (--numeric) | アドレスとポートを数字で表示 |
--line-numbers | 行数表示 |
-F (--flush) | チェーン内のすべてのルールを削除 |
-N (--new-chain) | 新しいチェーンを作成 |
-P (--policy) | チェーンのデフォルトポリシーを設定 |
-s (--source) | 送信元IPアドレスを指定 |
-d (--destination) | 宛先IPアドレスを指定 |
-p (--protocol) | プロトコルを指定 |
-j (--jump) | ルールに一致した場合に実行するアクションを指定 |
-m (--match) | ルールに一致するための条件を指定 |
-i (--in-interface) | パケットの入力インターフェイスを指定 |
-o (--out-interface) | パケットの出力インターフェイスを指定 |
2)拡張パラメータ
オプション「-p」で指定可能なパラメータ
指定方法 | 内容 |
---|---|
--sport | Source Port。送信側のポート番号を指定 |
--dport | Destination Port。受信側のポート番号を指定 |
--tcp-flags | TCP のときだけ指定(--tcp-flags SYN,RST,ACK SYN) |
--syn | TCP のときだけ指定 |
--icmp-type | ICMP のタイプを指定。pingに限定した指定をする際などに指定 |
state拡張で指定可能なパラメータ
指定方法 | 内容 |
---|---|
NEW | 全くの新参の接続 |
ESTABLISHED | 既に許可された接続 |
RELATED | 新参ではあるが許可された接続 |
INVALID | パラメータの不明な無効な接続 |
【4】コマンド例
iptables -I INPUT -p tcp --dport [ポート番号] -j ACCESPT
現在のNATの設定を表示
# -n (--numeric):アドレスとポートを数字で表示 # -L (--list):ルールを表示 iptables -n -t nat -L
参考文献
https://christina04.hatenablog.com/entry/iptables-outline
関連記事
ネットワーク系コマンド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2016/07/27/214633
ネットワーク系コマンド ~ firewall編 ~
https://dk521123.hatenablog.com/entry/2025/03/17/005508
ホストOSの pgAdmin III からゲストOS / Debian のPostgreSQLにアクセスできるようにする
https://dk521123.hatenablog.com/entry/2015/04/14/214802
tcpdumpコマンド 〜 パケットキャプチャ 〜
https://dk521123.hatenablog.com/entry/2017/07/03/233336
Wireshark ~パケットキャプチャ~
https://dk521123.hatenablog.com/entry/2013/04/18/234813