iptables – Linux パケットフィルタリング設定コマンド

ネットワークセキュリティ
スポンサーリンク

iptables コマンドは、Linux カーネルに組み込まれた netfilter フレームワーク を操作して、パケットフィルタリングや NAT(アドレス変換)を設定するためのコマンドです。
ファイアウォールの構築、ポート制御、IP マスカレードなどに利用されます。

構文(Syntax)

iptables [テーブル] <コマンド> [チェイン] [条件] [-j アクション]

主なテーブル

テーブル用途
filterパケットフィルタリング(デフォルト)
natアドレス変換(NAT, マスカレード, ポートフォワード)
mangleパケットのヘッダ操作(TTL 書き換えなど)
rawコネクショントラッキング前の処理

主なコマンド(チェイン操作)

コマンド説明使用例
-Aルールを追加(append)iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-Iルールを挿入(insert)iptables -I INPUT 1 -p icmp -j DROP
-Dルールを削除(delete)iptables -D INPUT 2
-Rルールを置換(replace)iptables -R INPUT 3 -j ACCEPT
-L現在のルールを一覧表示iptables -L -n -v
-F全ルールを削除(flush)iptables -F
-Pデフォルトポリシーを設定iptables -P INPUT DROP
-N新しいチェインを作成iptables -N LOGGING
-Xユーザー定義チェインを削除iptables -X LOGGING

主な条件(マッチ条件)

条件説明使用例
-p <proto>プロトコル指定(tcp, udp, icmp など)-p tcp
--dport <port>宛先ポート指定--dport 80
--sport <port>送信元ポート指定--sport 22
-s <IP>送信元 IP-s 192.168.1.10
-d <IP>宛先 IP-d 10.0.0.1
-i <iface>受信インターフェース-i eth0
-o <iface>送信インターフェース-o eth1

主なアクション(ターゲット)

アクション説明
ACCEPTパケットを許可
DROPパケットを破棄(応答しない)
REJECTパケットを拒否(エラーを返す)
LOGログに記録
MASQUERADENAT 変換で送信元を外部インターフェースに変更
DNAT宛先アドレスを変換(ポートフォワード)
SNAT送信元アドレスを変換

実行例

現在のルールを表示

iptables -L -n -v

SSH(22番) を許可

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

HTTP(80番) を許可

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

ICMP(ping) を拒否

iptables -A INPUT -p icmp -j DROP

デフォルトポリシーを拒否に設定

iptables -P INPUT DROP

NAT(ポートフォワード)

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

マスカレード(NAT)

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

全ルールを削除

iptables -F

エラー例(root 権限なし)

iptables -L

出力例:

iptables v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)

関連コマンド

  • ip : ネットワーク設定コマンド。
  • nft / nftables : iptables の後継ツール。
  • firewalld : iptables/nftables をラップする管理ツール。

備考

  • iptables は従来の標準ツールですが、近年は nftables に移行しつつあります。
  • ルール変更は再起動で消えるため、恒久化するには iptables-save / iptables-restore を利用します。
  • サーバーを外部公開する場合、ルール設計を誤ると接続不能になるため注意が必要です。

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント