iptablesチート集
チェーン管理・NAT・フィルタ・mangle・保存復元・nftables 移行を含む iptables の運用チート。
- 更新日
- 2026-05-29
- 参照範囲
- 公式ドキュメント / man page / 主要ベンダーCLI
- 対象実装
- 主要 Linux / BSD / ネットワーク機器 CLI の一般的な実装
- 免責
- OS とバージョン差分は実環境で確認してください。
このチートシートの使いどころ
iptables 日本語チートシートとして、Linux の netfilter を使ったフィルタ、NAT、mangle、保存復元、nftables 移行時の確認をまとめています。対象は iptables / iptables-nft / iptables-legacy が混在し得る現行 Linux 環境です。公開前のファイアウォール変更、障害時のパケット通過確認、既存ルール棚卸しで、コマンド例とカテゴリを起点に差分を確認できます。
58 / 58
iptables -L全ルールを一覧表示
sudo iptables -Liptables -L -n数値形式でルールを表示(名前解決なし)
sudo iptables -L -niptables -L -v詳細情報付きでルールを表示
sudo iptables -L -v --line-numbersiptables -L -t natNATテーブルのルールを表示
sudo iptables -L -t natiptables -L -t manglemangleテーブルのルールを表示
sudo iptables -L -t mangleiptables -Sルールをiptables-save形式で表示
sudo iptables -Siptables -F全ルールをフラッシュ(削除)
sudo iptables -Fiptables -Xユーザー定義チェーンを全削除
sudo iptables -Xiptables -Zパケットカウンターをゼロにリセット
sudo iptables -Ziptables -Pチェーンのデフォルトポリシーを設定
sudo iptables -P INPUT DROPiptables -A INPUTINPUTチェーンにルールを追加
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUTOUTPUTチェーンにルールを追加
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPTiptables -A FORWARDFORWARDチェーンにルールを追加
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPTiptables -Iチェーンの先頭にルールを挿入
sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPTiptables -Dチェーンからルールを削除
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPTiptables -D (line)行番号を指定してルールを削除
sudo iptables -D INPUT 3iptables -Rチェーン内のルールを置換
sudo iptables -R INPUT 1 -p tcp --dport 8080 -j ACCEPTiptables -Nユーザー定義チェーンを作成
sudo iptables -N MYCHAINiptables -t nat -A POSTROUTING MASQUERADEIPマスカレード(SNAT)を設定
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEiptables -t nat -A PREROUTING DNAT宛先NAT(ポートフォワード)を設定
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:8080iptables -t nat -A POSTROUTING SNAT送信元NATを設定
sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1iptables -t nat -A OUTPUT REDIRECTローカルポートリダイレクトを設定
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080iptables -t nat -A PREROUTING REDIRECT受信トラフィックのポートリダイレクト
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443iptables -t nat -FNATテーブルのルールを全削除
sudo iptables -t nat -Fiptables -t nat -L PREROUTINGPREROUTINGチェーンのNATルールを表示
sudo iptables -t nat -L PREROUTING -niptables -A INPUT -s (allow IP)特定IPからの接続を許可
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPTiptables -A INPUT -s (deny IP)特定IPからの接続を拒否
sudo iptables -A INPUT -s 10.0.0.5 -j DROPiptables -A INPUT --dport (allow port)特定ポートへの接続を許可
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPTiptables -A INPUT -m multiport複数ポートへの接続を一括許可
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443,8080 -j ACCEPTiptables -A INPUT -m state ESTABLISHED確立済み接続を許可
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -A INPUT -i loループバックインターフェースを許可
sudo iptables -A INPUT -i lo -j ACCEPTiptables -A INPUT -p icmpICMP(ping)を許可/拒否
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPTiptables -A INPUT -m conntrack接続追跡モジュールでフィルタリング
sudo iptables -A INPUT -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -m limitレート制限を設定
sudo iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min -j ACCEPTiptables -A INPUT -j LOGパケットをログに記録
sudo iptables -A INPUT -j LOG --log-prefix 'DROPPED: 'iptables -t mangle -A PREROUTING TOSTOSフィールドを変更
sudo iptables -t mangle -A PREROUTING -p tcp --dport 22 -j TOS --set-tos Minimize-Delayiptables -t mangle -A PREROUTING TTLTTL値を設定
sudo iptables -t mangle -A PREROUTING -j TTL --ttl-set 64iptables -t mangle -A PREROUTING MARKパケットにマークを付与
sudo iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1iptables -t mangle -A POSTROUTING MSSTCP MSSを調整
sudo iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtuiptables -t mangle -A OUTPUT DSCPDSCPフィールドを設定
sudo iptables -t mangle -A OUTPUT -p tcp --dport 5060 -j DSCP --set-dscp-class EFiptables -t mangle -Fmangleテーブルのルールを全削除
sudo iptables -t mangle -Fiptables-save現在のルールを標準出力に保存
sudo iptables-save > /etc/iptables/rules.v4iptables-restoreファイルからルールを復元
sudo iptables-restore < /etc/iptables/rules.v4ip6tables-saveIPv6ルールを保存
sudo ip6tables-save > /etc/iptables/rules.v6ip6tables-restoreIPv6ルールを復元
sudo ip6tables-restore < /etc/iptables/rules.v6netfilter-persistent savenetfilter-persistentで永続化保存
sudo netfilter-persistent savenetfilter-persistent reload保存済みルールを再読み込み
sudo netfilter-persistent reloadiptables-save -cカウンター付きでルールを保存
sudo iptables-save -c > /tmp/rules-with-countersnft list ruleset全ルールセットを表示
sudo nft list rulesetnft list tablesテーブル一覧を表示
sudo nft list tablesnft list table特定テーブルのルールを表示
sudo nft list table inet filternft add tableテーブルを作成
sudo nft add table inet myfilternft add chainチェーンを作成
sudo nft add chain inet myfilter input '{ type filter hook input priority 0; policy accept; }'nft add ruleルールを追加
sudo nft add rule inet myfilter input tcp dport 22 acceptnft delete ruleルールを削除
sudo nft delete rule inet myfilter input handle 4nft flush ruleset全ルールセットをフラッシュ
sudo nft flush rulesetnft -fファイルからルールセットを読み込み
sudo nft -f /etc/nftables.confiptables-translateiptablesルールをnftablesに変換
iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT| Command | Description | Example | Copy |
|---|---|---|---|
iptables -L | 全ルールを一覧表示 | sudo iptables -L | |
iptables -L -n | 数値形式でルールを表示(名前解決なし) | sudo iptables -L -n | |
iptables -L -v | 詳細情報付きでルールを表示 | sudo iptables -L -v --line-numbers | |
iptables -L -t nat | NATテーブルのルールを表示 | sudo iptables -L -t nat | |
iptables -L -t mangle | mangleテーブルのルールを表示 | sudo iptables -L -t mangle | |
iptables -S | ルールをiptables-save形式で表示 | sudo iptables -S | |
iptables -F | 全ルールをフラッシュ(削除) | sudo iptables -F | |
iptables -X | ユーザー定義チェーンを全削除 | sudo iptables -X | |
iptables -Z | パケットカウンターをゼロにリセット | sudo iptables -Z | |
iptables -P | チェーンのデフォルトポリシーを設定 | sudo iptables -P INPUT DROP | |
iptables -A INPUT | INPUTチェーンにルールを追加 | sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT | |
iptables -A OUTPUT | OUTPUTチェーンにルールを追加 | sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT | |
iptables -A FORWARD | FORWARDチェーンにルールを追加 | sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT | |
iptables -I | チェーンの先頭にルールを挿入 | sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT | |
iptables -D | チェーンからルールを削除 | sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT | |
iptables -D (line) | 行番号を指定してルールを削除 | sudo iptables -D INPUT 3 | |
iptables -R | チェーン内のルールを置換 | sudo iptables -R INPUT 1 -p tcp --dport 8080 -j ACCEPT | |
iptables -N | ユーザー定義チェーンを作成 | sudo iptables -N MYCHAIN | |
iptables -t nat -A POSTROUTING MASQUERADE | IPマスカレード(SNAT)を設定 | sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | |
iptables -t nat -A PREROUTING DNAT | 宛先NAT(ポートフォワード)を設定 | sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:8080 | |
iptables -t nat -A POSTROUTING SNAT | 送信元NATを設定 | sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1 | |
iptables -t nat -A OUTPUT REDIRECT | ローカルポートリダイレクトを設定 | sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080 | |
iptables -t nat -A PREROUTING REDIRECT | 受信トラフィックのポートリダイレクト | sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443 | |
iptables -t nat -F | NATテーブルのルールを全削除 | sudo iptables -t nat -F | |
iptables -t nat -L PREROUTING | PREROUTINGチェーンのNATルールを表示 | sudo iptables -t nat -L PREROUTING -n | |
iptables -A INPUT -s (allow IP) | 特定IPからの接続を許可 | sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT | |
iptables -A INPUT -s (deny IP) | 特定IPからの接続を拒否 | sudo iptables -A INPUT -s 10.0.0.5 -j DROP | |
iptables -A INPUT --dport (allow port) | 特定ポートへの接続を許可 | sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT | |
iptables -A INPUT -m multiport | 複数ポートへの接続を一括許可 | sudo iptables -A INPUT -p tcp -m multiport --dports 80,443,8080 -j ACCEPT | |
iptables -A INPUT -m state ESTABLISHED | 確立済み接続を許可 | sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | |
iptables -A INPUT -i lo | ループバックインターフェースを許可 | sudo iptables -A INPUT -i lo -j ACCEPT | |
iptables -A INPUT -p icmp | ICMP(ping)を許可/拒否 | sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT | |
iptables -A INPUT -m conntrack | 接続追跡モジュールでフィルタリング | sudo iptables -A INPUT -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT | |
iptables -A INPUT -m limit | レート制限を設定 | sudo iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min -j ACCEPT | |
iptables -A INPUT -j LOG | パケットをログに記録 | sudo iptables -A INPUT -j LOG --log-prefix 'DROPPED: ' | |
iptables -t mangle -A PREROUTING TOS | TOSフィールドを変更 | sudo iptables -t mangle -A PREROUTING -p tcp --dport 22 -j TOS --set-tos Minimize-Delay | |
iptables -t mangle -A PREROUTING TTL | TTL値を設定 | sudo iptables -t mangle -A PREROUTING -j TTL --ttl-set 64 | |
iptables -t mangle -A PREROUTING MARK | パケットにマークを付与 | sudo iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1 | |
iptables -t mangle -A POSTROUTING MSS | TCP MSSを調整 | sudo iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu | |
iptables -t mangle -A OUTPUT DSCP | DSCPフィールドを設定 | sudo iptables -t mangle -A OUTPUT -p tcp --dport 5060 -j DSCP --set-dscp-class EF | |
iptables -t mangle -F | mangleテーブルのルールを全削除 | sudo iptables -t mangle -F | |
iptables-save | 現在のルールを標準出力に保存 | sudo iptables-save > /etc/iptables/rules.v4 | |
iptables-restore | ファイルからルールを復元 | sudo iptables-restore < /etc/iptables/rules.v4 | |
ip6tables-save | IPv6ルールを保存 | sudo ip6tables-save > /etc/iptables/rules.v6 | |
ip6tables-restore | IPv6ルールを復元 | sudo ip6tables-restore < /etc/iptables/rules.v6 | |
netfilter-persistent save | netfilter-persistentで永続化保存 | sudo netfilter-persistent save | |
netfilter-persistent reload | 保存済みルールを再読み込み | sudo netfilter-persistent reload | |
iptables-save -c | カウンター付きでルールを保存 | sudo iptables-save -c > /tmp/rules-with-counters | |
nft list ruleset | 全ルールセットを表示 | sudo nft list ruleset | |
nft list tables | テーブル一覧を表示 | sudo nft list tables | |
nft list table | 特定テーブルのルールを表示 | sudo nft list table inet filter | |
nft add table | テーブルを作成 | sudo nft add table inet myfilter | |
nft add chain | チェーンを作成 | sudo nft add chain inet myfilter input '{ type filter hook input priority 0; policy accept; }' | |
nft add rule | ルールを追加 | sudo nft add rule inet myfilter input tcp dport 22 accept | |
nft delete rule | ルールを削除 | sudo nft delete rule inet myfilter input handle 4 | |
nft flush ruleset | 全ルールセットをフラッシュ | sudo nft flush ruleset | |
nft -f | ファイルからルールセットを読み込み | sudo nft -f /etc/nftables.conf | |
iptables-translate | iptablesルールをnftablesに変換 | iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT |