VPS

初心者のための iptables

投稿日:

iptables とは、Linux に実装されたパケットフィルタリング型のファイアウォール機能です。パケットフィルタリングルールやアドレス変換ルールを適用することができます。今回は、用語の解説からコマンドの使用方法など基礎部分について簡単に解説します。

スポンサーリンク

ファイアウォールの主な機能

パケットフィルタリング

送られてきたパケットを検査して設定した条件に該当する場合、設定したアクション(通過、遮断、転送)を実行します。

アドレス変換

送られてきたパケットを検査して設定した条件に該当する場合、パケットの宛先アドレスや送信元アドレスを別のアドレスに書き換えます。

テーブルとチェイン

テーブル

チェインをグループ化したものを「テーブル」と呼びます。3つのテーブルが用意されています。

テーブル名 説明
filter パケットのフィルタリングに使用
nat アドレス変換に使用
mangle パケットをNAT以外の目的で置き換えるときに使用

チェイン

パケットを検査する条件をリスト化したものを「チェイン」と呼びます。組込みチェインには下表のものがあります。

チェイン名 説明
INPUT 入力(受信)パケットのチェイン
OUTPUT 出力(送信)パケットのチェイン
FORWARD 転送パケットのチェイン
PREROUTING 受信時に変換するチェイン
POSTROUTING 送信時に変換するチェイン

テーブルとチェインの関係

各テーブルで利用できるチェインは、下表のようになります。

テーブル名 filter nat mangle
利用できるチェイン FORWARD PREROUTING PREROUTING
INPUT POSTROUTING OUTPUT
OUTPUT OUTPUT

iptables コマンドのオプション

構文

iptables [-t テーブル] [コマンド] [チェイン] [条件] [ターゲット]

テーブル

目的に一致するテーブルを指定します。省略時は、「filter」が指定されます。

テーブル名 説明
filter パケットフィルタリング
nat アドレス変換
mangle パケット内容の変更

コマンド

チェインを操作するコマンドの代表的なオプションです。

オプション 意味 説明
-A Append チェインにルールを追加
-D Delete チェイン内の指定したルールを削除
-P Policy チェインのポリシーを指定したターゲットに設定
-N New Chain ユーザチェインを作成
-X Delete Chain ユーザチェインを削除
-L List ルールのリスト表示

チェイン

ルールを設定するチェインを指定します。指定したテーブルによって利用できるチェインが決まります。詳しくは、前項の「チェインとテーブル」を参照ください。

条件

  • 代表的なオプション
  • パケットを特定するための条件の代表的なオプションです。

    オプション 意味 説明
    -s address Source 送信元アドレス。IPアドレス、ホスト名で指定可能
    -d address Destination 宛先アドレス。IPアドレス、ホスト名で指定可能
    -p protocol Protocol プロトコル(tcp、udp、icmp、all)
    -i name In Interface パケットが入ってくるインターフェース
    -o name Out Interface パケットが出ていくインターフェース
    -j terget Jump 条件にマッチした時のアクション


  • プロトコル拡張オプション
  • プロトコルにTCP、UDP パケットを指定した場合は、以下の拡張オプションを指定できます。

    オプション 意味 説明
    --sport Source Port 送信元のポート番号
    --dport Destination Port 宛先のポート番号

ターゲット

ターゲットの代表的なアクションです。前述した条件 -j オプションの後に指定します。

アクション 説明
ACCEPT パケットの通過を許可
DROP パケットを破棄
REJECT パケットを破棄して、破棄した旨の ICMPメッセージを送信元に返す
LOG ログを記録
SNAT 送信元アドレスの変換
DNAT 宛先アドレスの変換

ルールの設定例

送信元アドレスが 192.168.10.0/24 の受信を拒否するルールを追加

$ /sbin/iptables -A INPUT -s 192.168.10.0/24 -j DROP

送信元アドレスが 192.168.10.0/24 で プロトコルがTCP 宛先ポートが 20000番のパケットを許可

$ /sbin/iptables -A INPUT -p tcp --dport 20000 -s 192.168.10.0/24 -j ACCEPT

インターフェース eth0 で受信した送信先アドレスが 172.16.1.10 の場合、192.168.1.10 に 転送

$ /sbin/iptables -t nat -A PREROUTING -d 172.16.0.10 -i eth0 -j DNAT --to 192.168.0.10

-VPS
-,

Copyright© 気になるボックス , 2023 AllRights Reserved Powered by AFFINGER4.