Manpages

名 前

iptables−extensions — 標 準 の iptables に 含 ま れ る 拡 張 モ ジ ュ ー ル の リ ス ト

書 式

ip6tables [−m name [module−options...]] [−j target−name [target−options...]

iptables [−m name [module−options...]] [−j target−name [target−options...]

マ ッ チ ン グ の 拡 張

iptables は 拡 張 さ れ た パ ケ ッ ト マ ッ チ ン グ モ ジ ュ ー ル を 使 う こ と が で き る 。 使 用 す る モ ジ ュ ー ル は −m−−match の 後 ろ に モ ジ ュ ー ル 名 に 続 け て 指 定 す る 。 モ ジ ュ ー ル 名 の 後 ろ に は 、 モ ジ ュ ー ル に 応 じ て 他 の い ろ い ろ な コ マ ン ド ラ イ ン オ プ シ ョ ン を 指 定 す る こ と が で き る 。 複 数 の 拡 張 マ ッ チ ン グ モ ジ ュ ー ル を 一 行 で 指 定 す る こ と が で き る 。 モ ジ ュ ー ル の 指 定 よ り 後 ろ で −h−−help を 指 定 す る と 、 モ ジ ュ ー ル 固 有 の ヘ ル プ が 表 示 さ れ る 。 拡 張 マ ッ チ ン グ モ ジ ュ ー ル は ル ー ル で 指 定 さ れ た 順 序 で 評 価 さ れ る 。

−p−−protocol が 指 定 さ れ 、 か つ 未 知 の オ プ シ ョ ン だ け が 指 定 さ れ て い た 場 合 に の み 、 iptables は プ ロ ト コ ル と 同 じ 名 前 の マ ッ チ モ ジ ュ ー ル を ロ ー ド し 、 そ の オ プ シ ョ ン を 使 え る よ う に し よ う と す る 。

addrtype こ の モ ジ ュ ー ル は 、 ア ド レ ス 種 別 (address type) に 基 づ い て パ ケ ッ ト マ ッ チ ン グ を 行 う 。 ア ド レ ス 種 別 は カ ー ネ ル の ネ ッ ト ワ ー ク ス タ ッ ク 内 で 使 わ れ て お り 、 ア ド レ ス は い く つ か グ ル ー プ に 分 類 さ れ る 。 厳 密 な グ ル ー プ の 定 義 は 個 々 の レ イ ヤ 3 プ ロ ト コ ル に 依 存 す る 。 以 下 の ア ド レ ス タ イ プ が 利 用 で き る 。

UNSPEC ア ド レ ス を 指 定 し な い

(つ ま り ア ド レ ス 0.0.0.0)

UNICAST ユ ニ キ ャ ス ト ア ド レ ス

LOCAL ロ ー カ ル ア ド レ ス

BROADCAST ブ ロ ー ド キ ャ ス ト ア ド レ ス
ANYCAST
エ ニ ー キ ャ ス ト ア ド レ ス
MULTICAST
マ ル チ キ ャ ス ト ア ド レ ス
BLACKHOLE
ブ ラ ッ ク ホ ー ル ア ド レ ス
UNREACHABLE
到 達 で き な い ア ド レ ス
PROHIBIT
禁 止 さ れ た ア ド レ ス

THROW 要 修 正

NAT 要 修 正

XRESOLVE
[!] −−src−type type 送 信 元 ア ド レ ス が 指 定 さ れ た 種 類 の 場 合 に マ ッ チ す る 。
[!] −−dst−type type 宛 先 ア ド レ ス が 指 定 さ れ た 種 類 の 場 合 に マ ッ チ す る 。
−−limit−iface−in
ア ド レ ス 種 別 の チ ェ ッ ク を そ の パ ケ ッ ト が 受 信 さ れ た イ ン タ ー フ ェ ー ス に 限 定 す る 。 こ の オ プ シ ョ ン は PREROUTING, INPUT, FORWARD チ ェ イ ン で の み 利 用 で き る 。 −−limit−iface−out オ プ シ ョ ン と 同 時 に 指 定 す る こ と は で き な い 。
−−limit−iface−out
ア ド レ ス 種 別 の チ ェ ッ ク を そ の パ ケ ッ ト が 出 力 さ れ る イ ン タ ー フ ェ ー ス に 限 定 す る 。 こ の オ プ シ ョ ン は POSTROUTING, OUTPUT, FORWARD チ ェ イ ン で の み 利 用 で き る 。 −−limit−iface−in オ プ シ ョ ン と 同 時 に 指 定 す る こ と は で き な い 。

ah (IPv6 の み ) こ の モ ジ ュ ー ル は IPsec パ ケ ッ ト の 認 証 ヘ ッ ダ ー の パ ラ メ ー タ に マ ッ チ す る 。
[!] −−ahspi spi[:spi]

SPI に マ ッ チ す る 。

[!] −−ahlen length こ の ヘ ッ ダ ー の 全 体 の 長 さ (8進 数 )。
−−ahres
予 約 フ ィ ー ル ド が 0 で 埋 め ら れ て い る 場 合 に マ ッ チ す る 。

ah (IPv4 の 場 合 ) こ の モ ジ ュ ー ル は IPsec パ ケ ッ ト の 認 証 ヘ ッ ダ ー (AH) の SPI 値 に マ ッ チ す る 。
[!] −−ahspi spi[:spi]

bpf
Linux Socket Filter を 使 っ て マ ッ チ を 行 う 。 BPF プ ロ グ ラ ム を 10 進 数 形 式 で 指 定 す る 。 こ れ は nfbpf_compile ユ ー テ ィ リ テ ィ に よ り 生 成 さ れ る フ ォ ー マ ッ ト で あ る 。
−−bytecode
code

BPF バ イ ト コ ー ド フ ォ ー マ ッ ト を 渡 す (フ ォ ー マ ッ ト に つ い て は 下 記 の 例 で 説 明 )。 コ ー ド の フ ォ ー マ ッ ト は tcpdump の −ddd コ マ ン ド の 出 力 に 似 て い る 。 最 初 に 命 令 数 が 入 っ た 行 が 1 行 あ り 、 1 行 1 命 令 が こ れ に 続 く 。 命 令 行 は ’u16 u8 u8 u32’ の パ タ ー ン で 10 進 数 で 指 定 す る 。 各 フ ィ ー ル ド は 、 命 令 、 true 時 の ジ ャ ン プ オ フ セ ッ ト 、 false 時 の ジ ャ ン プ オ フ セ ッ ト 、 汎 用 で 様 々 な 用 途 に 使 用 す る フ ィ ー ル ド ’K’ で あ る 。 コ メ ン ト は サ ポ ー ト さ れ て い な い 。 例 え ば ’ip proto 6’ に マ ッ チ す る パ ケ ッ ト の み を 読 み 込 む に は 、 以 下 を 挿 入 す れ ば よ い (コ ム と 末 尾 の ホ ワ イ ト ス ペ ー ス は 含 め ず に )。

4 # 命 令 数
48 0 0 9 # load byte ip−>proto
21 0 1 6 # jump equal IPPROTO_TCP
6 0 0 1 # return pass (non−zero)
6 0 0 0 # return fail (zero) こ の フ ィ ル タ ー を bpf マ ッ チ に 渡 す に は 以 下 の コ マ ン ド の よ う に す る 。

iptables −A OUTPUT −m bpf −−bytecode ’4,48 0 0 9,21 0 1 6,6 0 0 1,6 0 0 0’ −j ACCEPT 代 わ り に 、 nfbpf_compile ユ ー テ ィ リ テ ィ を 使 う 方 法 も あ る 。

iptables −A OUTPUT −m bpf −−bytecode "’nfbpf_compile RAW ’ip proto 6’’" −j ACCEPT

BPF に つ い て も っ と 詳 し く 知 る に は FreeBSD の bpf(4) manpage を 見 る と い い だ ろ う 。

cluster こ の モ ジ ュ ー ル を 使 う と 、 負 荷 分 散 装 置 な し で 、 ゲ ー ト ウ ェ イ と バ ッ ク エ ン ド の 負 荷 分 散 ク ラ ス タ ー を 配 備 で き る 。

This match requires that all the nodes see the same packets. Thus, the cluster match decides if this node has to handle a packet given the following options:
−−cluster−total−nodes
num ク ラ ス タ ー の 総 ノ ー ド 数 を 設 定 す る 。
[!] −−cluster−local−node num ロ ー カ ル ノ ー ド の 数 字 の ID を 設 定 す る 。
[!] −−cluster−local−nodemask mask ロ ー カ ル ノ ー ド の ID マ ス ク を 設 定 す る 。 こ の オ プ シ ョ ン は −−cluster−local−node の 代 わ り に 使 う こ と が で き る 。
−−cluster−hash−seed
value

Jenkins ハ ッ シ ュ の シ ー ド 値 を 設 定 す る 。 例 :

iptables −A PREROUTING −t mangle −i eth1 −m cluster −−cluster−total−nodes 2 −−cluster−local−node 1 −−cluster−hash−seed 0xdeadbeef −j MARK −−set−mark 0xffff

iptables −A PREROUTING −t mangle −i eth2 −m cluster −−cluster−total−nodes 2 −−cluster−local−node 1 −−cluster−hash−seed 0xdeadbeef −j MARK −−set−mark 0xffff

iptables −A PREROUTING −t mangle −i eth1 −m mark ! −−mark 0xffff −j DROP

iptables −A PREROUTING −t mangle −i eth2 −m mark ! −−mark 0xffff −j DROP 以 下 の コ マ ン ド で 、 す べ て の ノ ー ド に 同 じ パ ケ ッ ト を 届 け る こ と が で き る 。

ip maddr add 01:00:5e:00:01:01 dev eth1

ip maddr add 01:00:5e:00:01:02 dev eth2

arptables −A OUTPUT −o eth1 −−h−length 6 −j mangle −−mangle−mac−s 01:00:5e:00:01:01

arptables −A INPUT −i eth1 −−h−length 6 −−destination−mac 01:00:5e:00:01:01 −j mangle −−mangle−mac−d 00:zz:yy:xx:5a:27

arptables −A OUTPUT −o eth2 −−h−length 6 −j mangle −−mangle−mac−s 01:00:5e:00:01:02

arptables −A INPUT −i eth2 −−h−length 6 −−destination−mac 01:00:5e:00:01:02 −j mangle −−mangle−mac−d 00:zz:yy:xx:5a:27

NOTE: the arptables commands above use mainstream syntax. If you are using arptables−jf included in some RedHat, CentOS and Fedora versions, you will hit syntax errors. Therefore, you’ll have to adapt these to the arptables−jf syntax to get them working.

TCP 接 続 の 場 合 に は 、 応 答 方 向 で 受 信 し た TCP ACK パ ケ ッ ト が 有 効 と マ ー ク さ れ な い よ う に す る た め 、 ピ ッ ク ア ッ プ (pickup) 機 能 を 無 効 す る 必 要 が あ る 。

echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

comment ル ー ル に コ メ ン ト (最 大 256 文 字 ) を 付 け る こ と が で き る 。
−−comment
comment

例 :

iptables −A INPUT −i eth1 −m comment −−comment "my local LAN"

connbytes 一 つ の コ ネ ク シ ョ ン (も し く は そ の コ ネ ク シ ョ ン を 構 成 す る 2 つ の フ ロ ー の 一 方 ) で そ れ ま で に 転 送 さ れ た バ イ ト 数 や パ ケ ッ ト 数 、 も し く は パ ケ ッ ト あ た り の 平 均 バ イ ト 数 に マ ッ チ す る 。 カ ウ ン タ ー は 64 ビ ッ ト で あ り 、 し た が っ て オ ー バ ー フ ロ ー す る こ と は 考 え ら れ て い な い ;) 主 な 利 用 方 法 は 、 長 時 間 存 在 す る ダ ウ ン ロ ー ド を 検 出 し 、 こ れ ら に 印 を 付 け る こ と で 、 ト ラ フ ィ ッ ク 制 御 に お い て 艇 優 先 帯 域 を 使 う よ う に ス ケ ジ ュ ー リ ン グ で き る よ う に す る こ と で あ る 。 コ ネ ク シ ョ ン あ た り の 転 送 バ イ ト 数 は 、 ’conntrack −L’ 経 由 で 見 る こ と が で き 、 ctnetlink 経 由 で も ア ク セ ス す る こ と も で き る 。 ア カ ウ ン ト 情 報 を 持 っ て い な い コ ネ ク シ ョ ン で は 、 こ の マ ッ チ ン グ は 常 に false を 返 す 点 に 注 意 す る こ と 。 "net.netfilter.nf_conntrack_acct" sysctl フ ラ グ で 、 新 規 コ ネ ク シ ョ ン で バ イ ト 数 /パ ケ ッ ト 数 の 計 測 が 行 わ れ る か が 制 御 で き る 。 sysctl フ ラ グ が 変 更 さ れ て も 、 既 存 の コ ネ ク シ ョ ン の ア カ ウ ン ト 情 報 は 影 響 を 受 け な い 。
[!] −−connbytes from[:to] パ ケ ッ ト 数 /バ イ ト 数 /平 均 パ ケ ッ ト サ イ ズ が FROM バ イ ト /パ ケ ッ ト よ り 大 き く TO バ イ ト /パ ケ ッ ト よ り も 小 さ い コ ネ ク シ ョ ン の パ ケ ッ ト に マ ッ チ す る 。 TO が 省 略 し た 場 合 は FROM の み が チ ェ ッ ク さ れ る 。 "!" を 使 う と 、 こ の 範 囲 に な い パ ケ ッ ト に マ ッ チ す る 。
−−connbytes−dir
{original|reply|both} ど の パ ケ ッ ト を 計 測 す る か を 指 定 す る
−−connbytes−mode
{packets|bytes|avgpkt} パ ケ ッ ト 総 数 、 転 送 バ イ ト 数 、 こ れ ま で に 受 信 し た 全 パ ケ ッ ト の 平 均 サ イ ズ (バ イ ト 単 位 ) の ど れ を チ ェ ッ ク す る か を 指 定 す る 。 "both" と "avgpkt" を 組 み 合 わ せ て 使 っ た 場 合 で 、 (HTTP の よ う に ) デ ー タ が (主 に ) 片 方 向 で の み 転 送 さ れ る 場 合 、 平 均 パ ケ ッ ト サ イ ズ は 実 際 の デ ー タ パ ケ ッ ト の 約 半 分 に な る 点 に 注 意 す る こ と 。

例 :

iptables .. −m connbytes −−connbytes 10000:100000 −−connbytes−dir both −−connbytes−mode bytes ...

connlimit 一 つ の サ ー バ ー に 対 す る 、 一 つ の ク ラ イ ア ン ト IP ア ド レ ス (ま た は ク ラ イ ア ン ト ア ド レ ス ブ ロ ッ ク ) か ら の 同 時 接 続 数 を 制 限 す る こ と が で き る 。
−−connlimit−upto
n 既 存 の 接 続 数 が n 以 下 の 場 合 に マ ッ チ す る 。
−−connlimit−above
n 既 存 の 接 続 数 が n よ り 多 い 場 合 に マ ッ チ す る 。
−−connlimit−mask
prefix_length プ レ フ ィ ッ ク ス 長 を 使 っ て ホ ス ト の グ ル ー ピ ン グ を 行 う 。 IPv4 の 場 合 に は 、 プ レ フ ィ ッ ク ス 長 は 0 以 上 32 以 下 の 値 で な け れ ば な ら な い 。 IPv6 の 場 合 に は 0 以 上 128 以 下 で な け れ ば な ら な い 。 指 定 し な か っ た 場 合 、 そ の プ ロ ト コ ル で 使 わ れ る 最 も 長 い プ レ フ ィ ッ ク ス 長 が 使 用 さ れ る 。
−−connlimit−saddr
送 信 元 グ ル ー プ に 対 し て 制 限 を 適 用 す る 。 こ れ が −−connlimit−daddr が 指 定 さ れ な か っ た 場 合 の デ フ ォ ル ト で あ る 。
−−connlimit−daddr
宛 先 グ ル ー プ に 対 し て 制 限 を 適 用 す る 。 例 :
# ク ラ イ ア ン ト ホ ス ト あ た り 2 つ の telnet 接 続 を 許 可 す る

iptables −A INPUT −p tcp −−syn −−dport 23 −m connlimit −−connlimit−above 2 −j REJECT

# 同 じ こ と の に 行 う 別 の マ ッ チ 方 法

iptables −A INPUT −p tcp −−syn −−dport 23 −m connlimit −−connlimit−upto 2 −j ACCEPT

# ク ラ ス C の 送 信 元 ネ ッ ト ワ ー ク (ネ ッ ト マ ス ク が 24 ビ ッ ト ) あ た り の 同 時
HTTP リ ク エ ス ト 数 を 16 ま で に 制 限 す る

iptables −p tcp −−syn −−dport 80 −m connlimit −−connlimit−above 16 −−connlimit−mask 24 −j REJECT

# リ ン ク ロ ー カ ル ネ ッ ト ワ ー ク か ら の 同 時 HTTP リ ク エ ス ト 数 を 16 ま で に 制 限 す る

(ipv6) ip6tables −p tcp −−syn −−dport 80 −s fe80::/64 −m connlimit −−connlimit−above 16 −−connlimit−mask 64 −j REJECT

# 特 定 の ホ ス ト 宛 の コ ネ ク シ ョ ン 数 を 制 限 す る

ip6tables −p tcp −−syn −−dport 49152:65535 −d 2001:db8::1 −m connlimit −−connlimit−above 100 −j REJECT

connmark こ の モ ジ ュ ー ル は コ ネ ク シ ョ ン に 関 連 づ け ら れ た netfilter の mark フ ィ ー ル ド に マ ッ チ す る (こ の フ ィ ー ル ド は 、 以 下 の CONNMARK タ ー ゲ ッ ト で 設 定 さ れ る )。
[!] −−mark value[/mask] 指 定 さ れ た mark 値 を 持 つ コ ネ ク シ ョ ン の パ ケ ッ ト に マ ッ チ す る (mask が 指 定 さ れ る と 、 比 較 の 前 に mask と の 論 理 積 (AND) が と ら れ る )。

conntrack コ ネ ク シ ョ ン 追 跡 (connection tracking) と 組 み 合 わ せ て 使 用 し た 場 合 に 、 こ の モ ジ ュ ー ル を 使 う と 、 パ ケ ッ ト や コ ネ ク シ ョ ン の 追 跡 状 態 を 知 る こ と が で き る 。
[!] −−ctstate statelist

statelist は マ ッ チ す る コ ネ ク シ ョ ン 状 態 (connection state) の リ ス ト で 、 コ ン マ 区 切 り で 指 定 す る 。 指 定 で き る 状 態 の リ ス ト は 後 述 。

[!] −−ctproto l4proto 指 定 さ れ た レ イ ヤ 4 の プ ロ ト コ ル に マ ッ チ す る 。 プ ロ ト コ ル は 名 前 ま た は 数 値 で 指 定 す る 。
[!] −−ctorigsrc address[/mask]
[!] −−ctorigdst address[/mask]
[!] −−ctreplsrc address[/mask]
[!] −−ctrepldst address[/mask] 順 方 向 /反 対 方 向 の コ ネ ク シ ョ ン の 送 信 元 /宛 先 ア ド レ ス に マ ッ チ す る 。
[!] −−ctorigsrcport port[:port]
[!] −−ctorigdstport port[:port]
[!] −−ctreplsrcport port[:port]
[!] −−ctrepldstport port[:port] 順 方 向 /反 対 方 向 の コ ネ ク シ ョ ン の (TCP/UDPな ど の ) 送 信 元 /宛 先 ポ ー ト ア ド レ ス 、 も し く は GRE キ ー に マ ッ チ す る 。 ポ ー ト の 範 囲 指 定 は カ ー ネ ル 2.6.38 以 降 で の み サ ポ ー ト さ れ て い る 。
[!] −−ctstatus statelist

statuslist は マ ッ チ す る コ ネ ク シ ョ ン 状 況 (connection status) の リ ス ト で 、 コ ン マ 区 切 り で 指 定 す る 。 指 定 で き る 状 況 の リ ス ト は 後 述 。

[!] −−ctexpire time[:time] 有 効 期 間 の 残 り 秒 数 、 ま た は そ の 範 囲 (両 端 を 含 む )に マ ッ チ す る 。
−−ctdir
{ORIGINAL|REPLY} 指 定 し た 方 向 に 流 れ る パ ケ ッ ト に マ ッ チ す る 。 こ の フ ラ グ が 全 く 指 定 さ れ な か っ た 場 合 、 両 方 向 の パ ケ ッ ト が マ ッ チ す る 。

−−ctstate に 指 定 で き る 状 態 は 以 下 の 通 り 。
INVALID
そ の パ ケ ッ ト は ど の 既 知 の コ ネ ク シ ョ ン と も 関 連 付 け ら れ て い な い 。

NEW そ の パ ケ ッ ト が 新 し い コ ネ ク シ ョ ン を 開 始 し よ う と し て い る 。 も し く は 、 両 方 の 方 向 で パ ケ ッ ト が 観 測 さ れ て い な い コ ネ ク シ ョ ン に 関 連 付 け ら れ る 。

ESTABLISHED そ の パ ケ ッ ト が 、 両 方 向 の パ ケ ッ ト が 観 測 さ れ た コ ネ ク シ ョ ン に 関 連 付 け ら れ る 。
RELATED
そ の パ ケ ッ ト は 、 新 し い コ ネ ク シ ョ ン を 開 始 し よ う と し て い る が 、 既 存 の コ ネ ク シ ョ ン と 関 連 付 け ら れ る 。 FTP デ ー タ 転 送 や ICMP エ ラ ー な ど が 該 当 す る 。
UNTRACKED
そ の パ ケ ッ ト は 全 く 追 跡 さ れ て い な い 。 こ の 状 態 は 、 raw テ ー ブ ル で −j CT −−notrack を 使 っ て 明 示 的 に そ の パ ケ ッ ト を 追 跡 し な い よ う に し て い る 場 合 に 起 こ る 。

SNAT 元 の 送 信 元 ア ド レ ス が 応 答 の 宛 先 ア ド レ ス と 異 な る 場 合 に マ ッ チ す る 仮 想 的 な 状 態 。

DNAT 元 の 宛 先 ア ド レ ス が 応 答 の 送 信 元 ア ド レ ス と 異 な る 場 合 に マ ッ チ す る 仮 想 的 な 状 態 。

−−ctstatus に 指 定 で き る 値 は 以 下 の 通 り 。

NONE 以 下 の い ず れ で も な い 。

EXPECTED 期 待 通 り の コ ネ ク シ ョ ン で あ る (つ ま り conntrack の ヘ ル パ ー が コ ネ ク シ ョ ン を セ ッ ト ア ッ プ し た )。
SEEN_REPLY

conntrack が 両 方 の 方 向 で パ ケ ッ ト を 観 測 済 で あ る 。

ASSURED

conntrack エ ン ト リ が early−expired さ れ る こ と は な い 。

CONFIRMED

Connection is confirmed: originating packet has left box.

cpu
[!] −−cpu number こ の パ ケ ッ ト を 処 理 す る CPU に マ ッ チ す る 。 CPU に は 0 か ら NR_CPUS−1 の 番 号 が 振 ら れ る 。 ネ ッ ト ワ ー ク ト ラ フ ィ ッ ク を 複 数 の キ ュ ー に 分 散 さ せ る た め に RPS (Remote Packet Steering) や マ ル チ キ ュ ー NIC と 組 み 合 わ せ て 使 用 で き る 。 例 :

iptables −t nat −A PREROUTING −p tcp −−dport 80 −m cpu −−cpu 0 −j REDIRECT −−to−port 8080

iptables −t nat −A PREROUTING −p tcp −−dport 80 −m cpu −−cpu 1 −j REDIRECT −−to−port 8081

Linux 2.6.36 以 降 で 利 用 可 能 。

dccp
[!] −−source−port,−−sport port[:port]
[!] −−destination−port,−−dport port[:port]
[!] −−dccp−types mask

DCCP パ ケ ッ ト タ イ プ が mask の い ず れ か で あ れ ば マ ッ チ す る 。 mask は カ ン マ 区 切 り の パ ケ ッ ト タ イ プ の リ ス ト で あ る 。 指 定 で き る パ ケ ッ ト タ イ プ は REQUEST RESPONSE DATA ACK DATAACK CLOSEREQ CLOSE RESET SYNC SYNCACK INVALID で あ る 。

[!] −−dccp−option number

DCCP オ プ シ ョ ン が 設 定 さ れ て い る 場 合 に マ ッ チ す る 。

devgroup パ ケ ッ ト の 受 信 /送 信 イ ン タ ー フ ェ ー ス の デ バ イ ス グ ル ー プ に マ ッ チ す る 。
[!] −−src−group name 受 信 デ バ イ ス の デ バ イ ス グ ル ー プ に マ ッ チ す る
[!] −−dst−group name 送 信 デ バ イ ス の デ バ イ ス グ ル ー プ に マ ッ チ す る

dscp こ の モ ジ ュ ー ル は 、 IP ヘ ッ ダ ー の TOS フ ィ ー ル ド 内 に あ る 、 6 bit の DSCP フ ィ ー ル ド に マ ッ チ す る 。 IETF で は DSCP が TOS に 取 っ て 代 わ っ た 。
[!] −−dscp value

(10 進 ま た は 16 進 の ) 数 値 [0−63] に マ ッ チ す る 。

[!] −−dscp−class class

DiffServ ク ラ ス に マ ッ チ す る 。 値 は BE, EF, AFxx, CSx ク ラ ス の い ず れ か で あ る 。 対 応 す る 数 値 に 変 換 さ れ る 。

dst (IPv6 の み ) こ の モ ジ ュ ー ル は 宛 先 オ プ シ ョ ン ヘ ッ ダ ー の パ ラ メ ー タ に マ ッ チ す る 。
[!] −−dst−len length こ の ヘ ッ ダ ー の 全 体 の 長 さ (8進 数 )。
−−dst−opts
type[:length][,type[:length]...] 数 値 の オ プ シ ョ ン タ イ プ と オ プ シ ョ ン デ ー タ の オ ク テ ッ ト 単 位 の 長 さ 。

ecn
IPv4/IPv6 と TCP ヘ ッ ダ ー の ECN ビ ッ ト に マ ッ チ ン グ を 行 う 。 ECN と は RFC3168 で 規 定 さ れ た Explicit Congestion Notification (明 示 的 な 輻 輳 通 知 ) 機 構 の こ と で あ る 。
[!] −−ecn−tcp−cwr

TCP ECN CWR (Congestion Window Received) ビ ッ ト が セ ッ ト さ れ て い る 場 合 に マ ッ チ す る 。

[!] −−ecn−tcp−ece

TCP ECN ECE (ECN Echo) ビ ッ ト が セ ッ ト さ れ て い る 場 合 に マ ッ チ す る 。

[!] −−ecn−ip−ect num 特 定 の IPv4/IPv6 ECT (ECN−Capable Transport) に マ ッ チ す る 。 ’0’ 以 上 ’3’ 以 下 の 値 を 指 定 し な け れ ば な ら な い 。

esp こ の モ ジ ュ ー ル は IPsec パ ケ ッ ト の ESP ヘ ッ ダ ー の SPI 値 に マ ッ チ す る 。
[!] −−espspi spi[:spi]

eui64 (IPv6 の み ) こ の モ ジ ュ ー ル は stateless の 自 動 で 設 定 さ れ た IPv6 ア ド レ ス の EUI−64 の 部 分 に マ ッ チ す る 。 Ethernet の 送 信 元 MAC ア ド レ ス に 基 づ く EUI−64 と IPv6 送 信 元 ア ド レ ス の 下 位 64 ビ ッ ト の 比 較 が 行 わ れ る 。 た だ し "Universal/Local" ビ ッ ト は 比 較 さ れ な い 。 こ の モ ジ ュ ー ル は 他 の リ ン ク 層 フ レ ー ム に は マ ッ チ し な い 。 こ の モ ジ ュ ー ル は PREROUTING, INPUT, FORWARD チ ェ イ ン で の み 有 効 で あ る 。

frag (IPv6 の み ) こ の モ ジ ュ ー ル は フ ラ グ メ ン ト ヘ ッ ダ ー の パ ラ メ ー タ に マ ッ チ す る 。
[!] −−fragid id[:id] 指 定 さ れ た 値 も し く は 範 囲 の ID に マ ッ チ す る 。
[!] −−fraglen length こ の オ プ シ ョ ン は バ ー ジ ョ ン 2.6.10 以 降 の カ ー ネ ル で は 使 用 で き な い 。 フ ラ グ メ ン ト ヘ ッ ダ ー 長 は 変 化 し な い の で 、 こ の オ プ シ ョ ン は 意 味 を 持 た な い 。
−−fragres
予 約 フ ィ ー ル ド に 0 が 入 っ て い る 場 合 に マ ッ チ す る 。
−−fragfirst
最 初 の フ ラ グ メ ン ト に マ ッ チ す る 。
−−fragmore
さ ら に フ ラ グ メ ン ト が 続 く 場 合 に マ ッ チ す る 。
−−fraglast
最 後 の フ ラ グ メ ン ト の 場 合 に マ ッ チ す る 。

hashlimit
hashlimit
uses hash buckets to express a rate limiting match (like the limit match) for a group of connections using a single iptables rule. Grouping can be done per−hostgroup (source and/or destination address) and/or per−port. It gives you the ability to express "N packets per time quantum per group" or "N bytes per seconds" (see below for some examples).

hash limit オ プ シ ョ ン (−−hashlimit−upto, −−hashlimit−above) と −−hashlimit−name は 必 須 で あ る 。
−−hashlimit−upto
amount[/second|/minute|/hour|/day] 単 位 時 間 あ た り の 平 均 マ ッ チ 回 数 の 最 大 値 。 数 値 で 指 定 さ れ 、 添 字 ’/second’, ’/minute’, ’/hour’, ’/day’ を 付 け る こ と も で き る 。 デ フ ォ ル ト は 3/hour で あ る 。
−−hashlimit−above
amount[/second|/minute|/hour|/day] レ ー ト が 指 定 さ れ た 区 間 で の amount よ り 大 き い 場 合 に マ ッ チ す る 。
−−hashlimit−burst
amount パ ケ ッ ト が マ ッ チ す る 回 数 の 最 大 初 期 値 : 上 の オ プ シ ョ ン で 指 定 し た 制 限 に 達 し な け れ ば 、 マ ッ チ す る ご と に 、 こ の 数 値 に な る ま で 1 個 ず つ 増 や さ れ る 。 デ フ ォ ル ト は 5 で あ る 。 バ イ ト で の レ ー ト 照 合 が 要 求 さ れ た 場 合 、 こ の オ プ シ ョ ン は 指 定 レ ー ト を 超 過 で き る バ イ ト 数 を 規 定 す る 。 こ の オ プ シ ョ ン を 使 用 す る 際 に は 注 意 が 必 要 で あ る −− エ ン ト リ が タ イ ム ア ウ ト で 削 除 さ れ る 際 に 、 バ ー ス ト 値 も リ セ ッ ト さ れ る 。
−−hashlimit−mode
{srcip|srcport|dstip|dstport},... 対 象 と す る 要 素 の カ ン マ 区 切 り の リ ス ト 。 −−hashlimit−mode オ プ シ ョ ン が 指 定 さ れ な か っ た 場 合 、 hashlimit は limit と 同 じ 動 作 を す る が 、 ハ ッ シ ュ の 管 理 を 行 う コ ス ト が か か る 。
−−hashlimit−srcmask
prefix

When −−hashlimit−mode srcip is used, all source addresses encountered will be grouped according to the given prefix length and the so−created subnet will be subject to hashlimit. prefix must be between (inclusive) 0 and 32. Note that −−hashlimit−srcmask 0 is basically doing the same thing as not specifying srcip for −−hashlimit−mode, but is technically more expensive.

−−hashlimit−dstmask prefix

Like −−hashlimit−srcmask, but for destination addresses.

−−hashlimit−name foo

/proc/net/ipt_hashlimit/foo エ ン ト リ の 名 前 。

−−hashlimit−htable−size buckets ハ ッ シ ュ テ ー ブ ル の バ ケ ッ ト 数 。
−−hashlimit−htable−max
entries ハ ッ シ ュ の 最 大 エ ン ト リ 数 。
−−hashlimit−htable−expire
msec ハ ッ シ ュ エ ン ト リ が 何 ミ リ 秒 後 に 削 除 さ れ る か 。
−−hashlimit−htable−gcinterval
msec ガ ベ ー ジ コ レ ク シ ョ ン の 間 隔 (ミ リ 秒 )。 例 : 送 信 元 ホ ス ト に 対 す る マ ッ チ

"192.168.0.0/16 の 各 ホ ス ト に 対 し て 1000 パ ケ ッ ト /秒 " => −s 192.168.0.0/16 −−hashlimit−mode srcip −−hashlimit−upto 1000/sec 送 信 元 ポ ー ト に 対 す る マ ッ チ
"192.168.1.1 の 各 サ ー ビ ス に 対 し て 100 パ ケ ッ ト /秒 " => −s 192.168.1.1 −−hashlimit−mode srcport −−hashlimit−upto 100/sec サ ブ ネ ッ ト に 対 す る マ ッ チ
"10.0.0.0/8 内 の /28 サ ブ ネ ッ ト (ア ド レ ス 8 個 の グ ル ー プ ) そ れ ぞ れ に 対 し て 10000 パ ケ ッ ト /秒 " => −s 10.0.0.0/8 −−hashlimit−mask 28 −−hashlimit−upto 10000/min バ イ ト

/秒 に よ る マ ッ チ

"512kbyte/s を 超 過 し た フ ロ ー " => −−hashlimit−mode srcip,dstip,srcport,dstport −−hashlimit−above 512kb/s バ イ ト

/秒 に よ る マ ッ チ

"512kbyte/s を 超 過 す る と マ ッ チ す る が 、 1 メ ガ バ イ ト に 達 す る ま で は マ ッ チ せ ず 許 可 す る " −−hashlimit−mode dstip −−hashlimit−above 512kb/s −−hashlimit−burst 1mb

hbh (IPv6 の み ) こ の モ ジ ュ ー ル は Hop−by−Hop オ プ シ ョ ン ヘ ッ ダ ー の パ ラ メ ー タ に マ ッ チ す る 。
[!] −−hbh−len length こ の ヘ ッ ダ ー の 全 体 の 長 さ (8進 数 )。
−−hbh−opts
type[:length][,type[:length]...] 数 値 の オ プ シ ョ ン タ イ プ と オ プ シ ョ ン デ ー タ の オ ク テ ッ ト 単 位 の 長 さ 。

helper こ の モ ジ ュ ー ル は 、 指 定 さ れ た コ ネ ク シ ョ ン 追 跡 ヘ ル パ ー モ ジ ュ ー ル に 関 連 す る パ ケ ッ ト に マ ッ チ す る 。
[!] −−helper string 指 定 さ れ た コ ネ ク シ ョ ン 追 跡 ヘ ル パ ー モ ジ ュ ー ル に 関 連 す る パ ケ ッ ト に マ ッ チ す る 。 デ フ ォ ル ト の ポ ー ト を 使 っ た ftp−セ ッ シ ョ ン に 関 連 す る パ ケ ッ ト で は 、 string に "ftp" と 書 け る 。 他 の ポ ー ト で は "−ポ ー ト 番 号 " を 値 に 付 け 加 え る 。 す な わ ち "ftp−2121" と な る 。 他 の コ ネ ク シ ョ ン 追 跡 ヘ ル パ ー で も 同 じ ル ー ル が 適 用 さ れ る 。

hl (IPv6 の み ) こ の モ ジ ュ ー ル は IPv6 ヘ ッ ダ ー の Hop Limit フ ィ ー ル ド に マ ッ チ す る 。
[!] −−hl−eq value

Hop Limit が value と 同 じ 場 合 に マ ッ チ す る 。

−−hl−lt value

Hop Limit が value よ り 小 さ い 場 合 に マ ッ チ す る 。

−−hl−gt value

Hop Limit が value よ り 大 き い 場 合 に マ ッ チ す る 。

icmp (IPv4 の 場 合 ) こ の 拡 張 は ’−−protocol icmp’ が 指 定 さ れ た 場 合 に 使 用 で き 、 以 下 の オ プ シ ョ ン が 提 供 さ れ る :
[!] −−icmp−type {type[/code]|typename}

ICMP タ イ プ を 指 定 で き る 。 タ イ プ 指 定 に は 、 数 値 の ICMP タ イ プ 、 タ イ プ /コ ー ド の 組 、 ま た は 以 下 の コ マ ン ド で 表 示 さ れ る ICMP タ イ プ 名 を 指 定 で き る 。
iptables −p icmp −h

icmp6 (IPv6 の み ) こ れ ら の 拡 張 は ’−−protocol ipv6−icmp’ ま た は ’−−protocol icmpv6’ が 指 定 さ れ た 場 合 に 使 用 で き 、 以 下 の オ プ シ ョ ン が 提 供 さ れ る :
[!] −−icmpv6−type type[/code]|typename

ICMPv6 タ イ プ を 指 定 で き る 。 タ イ プ 指 定 に は 、 数 値 の ICMP typetypecode、 ま た は 以 下 の コ マ ン ド で 表 示 さ れ る ICMPv6 タ イ プ 名 を 指 定 で き る 。
ip6tables −p ipv6−icmp −h

iprange こ の モ ジ ュ ー ル は 指 定 さ れ た 任 意 の 範 囲 の IP ア ド レ ス に マ ッ チ す る 。
[!] −−src−range from[to] 指 定 さ れ た 範 囲 の 送 信 元 IP に マ ッ チ す る 。
[!] −−dst−range from[to] 指 定 さ れ た 範 囲 の 宛 先 IP に マ ッ チ す る 。

ipv6header (IPv6 の み ) こ の モ ジ ュ ー ル は IPv6 拡 張 ヘ ッ ダ ー 、 上 位 レ イ ヤ の ヘ ッ ダ ー 、 も し く は そ の 両 方 に マ ッ チ す る 。

−−soft パ ケ ッ ト が

−−header で 指 定 さ れ た ヘ ッ ダ ー の い ず れ か を 含 む 場 合 に

マ ッ チ す る 。

[!] −−header header[,header...]

Matches the packet which EXACTLY includes all specified headers. The headers encapsulated with ESP header are out of scope. Possible header types can be:

hop|hop−by−hop

Hop−by−Hop オ プ シ ョ ン ヘ ッ ダ ー

dst 宛 先 オ プ シ ョ ン ヘ ッ ダ ー

route ル ー テ ィ ン グ ヘ ッ ダ ー

frag フ ラ グ メ ン ト ヘ ッ ダ ー

auth 認 証 ヘ ッ ダ ー

(AH)

esp

ESP (Encapsulating Security Payload) ヘ ッ ダ ー

none

No Next header which matches 59 in the ’Next Header field’ of IPv6 header or any IPv6 extension headers

proto

which matches any upper layer protocol header. A protocol name from /etc/protocols and numeric value also allowed. The number 255 is equivalent to proto.

ipvs
IPVS コ ネ ク シ ョ ン 属 性 に マ ッ チ す る 。
[!] −−ipvs

IPVS コ ネ ク シ ョ ン に 属 す パ ケ ッ ト 以 下 の オ プ シ ョ ン で は

−−ipvs も 暗 黙 の う ち に 指 定 さ れ る (否 定 の 場 合 も 含 む )
[!] −−vproto protocol マ ッ チ す る VIP プ ロ ト コ ル (数 値 か 名 前 (例 え ば "tcp") で 指 定 す る )
[!] −−vaddr address[/mask] マ ッ チ す る VIP ア ド レ ス
[!] −−vport port マ ッ チ す る VIP プ ロ ト コ ル (数 値 か 名 前 (例 え ば
−−vdir
{ORIGINAL|REPLY} パ ケ ッ ト フ ロ ー の 方 向
[!] −−vmethod {GATE|IPIP|MASQ} 使 用 す る IPVS の 転 送 方 法
[!] −−vportctl port マ ッ チ す る 制 御 用 コ ネ ク シ ョ ン の VIP ポ ー ト (例 え ば FTP で あ れ ば 21)

length こ の モ ジ ュ ー ル は 、 パ ケ ッ ト の レ イ ヤ 3 ペ イ ロ ー ド (例 え ば レ イ ヤ 4 パ ケ ッ ト ) の 長 さ が 、 指 定 さ れ た 値 、 ま た は 値 の 範 囲 に あ れ ば マ ッ チ す る 。
[!] −−length length[:length]

limit こ の モ ジ ュ ー ル は 、 ト ー ク ン バ ケ ッ ト フ ィ ル タ を 使 っ て 制 限 レ ー ト の マ ッ チ を 行 う 。 こ の 拡 張 を 使 っ た ル ー ル は 、 指 定 さ れ た 制 限 に 達 す る ま で マ ッ チ す る 。 例 え ば 、 こ の モ ジ ュ ー ル は ロ グ 記 録 を 制 限 す る た め に LOG タ ー ゲ ッ ト と 組 み 合 わ せ て 使 う こ と が で き る 。

xt_limit has no negation support − you will have to use −m hashlimit ! −−hashlimit rate in this case whilst omitting −−hashlimit−mode.
−−limit
rate[/second|/minute|/hour|/day] 単 位 時 間 あ た り の 平 均 マ ッ チ 回 数 の 最 大 値 。 数 値 で 指 定 さ れ 、 添 字 ’/second’, ’/minute’, ’/hour’, ’/day’ を 付 け る こ と も で き る 。 デ フ ォ ル ト は 3/hour で あ る 。
−−limit−burst
number パ ケ ッ ト が マ ッ チ す る 回 数 の 最 大 初 期 値 : 上 の オ プ シ ョ ン で 指 定 し た 制 限 に 達 し な け れ ば 、 マ ッ チ す る ご と に 、 こ の 数 値 に な る ま で 1 個 ず つ 増 や さ れ る 。 デ フ ォ ル ト は 5 で あ る 。

mac
[!] −−mac−source address 送 信 元 MAC ア ド レ ス に マ ッ チ す る 。 address は XX:XX:XX:XX:XX:XX と い う 形 式 で な け れ ば な ら な い 。 イ ー サ ー ネ ッ ト デ バ イ ス か ら 入 っ て く る パ ケ ッ ト で 、 PREROUTING, FORWARD, INPUT チ ェ イ ン に 入 る パ ケ ッ ト に し か 意 味 が な い 。

mark こ の モ ジ ュ ー ル は パ ケ ッ ト に 関 連 づ け ら れ た netfilter の mark フ ィ ー ル ド に マ ッ チ す る (こ の フ ィ ー ル ド は 、 以 下 の MARK タ ー ゲ ッ ト で 設 定 さ れ る )。
[!] −−mark value[/mask] 指 定 さ れ た 符 号 な し の mark 値 を 持 つ パ ケ ッ ト に マ ッ チ す る (mask が 指 定 さ れ る と 、 比 較 の 前 に mask と の 論 理 積 (AND) が と ら れ る )。

mh (IPv6 の み ) こ の 拡 張 は ’−−protocol ipv6−mh’ ま た は ’−−protocol mh’ が 指 定 さ れ た 場 合 に ロ ー ド さ れ る 。 以 下 の オ プ シ ョ ン が 提 供 さ れ る 。
[!] −−mh−type type[:type]

Mobility Header (MH) タ イ プ を 指 定 で き る 。 タ イ プ 指 定 に は 、 数 値 の MH タ イ プ か 、 以 下 の コ マ ン ド で 表 示 さ れ る MH タ イ プ 名 を 指 定 で き る 。
ip6tables −p mh −h

multiport こ の モ ジ ュ ー ル は 送 信 元 ポ ー ト や 宛 先 ポ ー ト の 集 合 に マ ッ チ す る 。 ポ ー ト は 15 個 ま で 指 定 で き る 。 ポ ー ト の 範 囲 指 定 (port:port) は 2 ポ ー ト と カ ウ ン ト さ れ る 。 こ の モ ジ ュ ー ル が 使 用 で き る の は tcp, udp, udplite, dccp, sctp の い ず れ か と 組 み 合 わ せ た 場 合 だ け で あ る 。
[!] −−source−ports,−−sports port[,port|,port:port]... 送 信 元 ポ ー ト が 指 定 さ れ た ポ ー ト の い ず れ に マ ッ チ す る 。 フ ラ グ −−sports は こ の オ プ シ ョ ン の 便 利 な 別 名 で あ る 。 複 数 の ポ ー ト や ポ ー ト 範 囲 が カ ン マ 区 切 り で 指 定 で き る 。 ポ ー ト 範 囲 は コ ロ ン 区 切 り で 指 定 す る 。 し た が っ て 53,1024:65535 は ポ ー ト 53 お よ び 1024 か ら 65535 ま で の 全 ポ ー ト に マ ッ チ す る 。
[!] −−destination−ports,−−dports port[,port|,port:port]... 宛 先 ポ ー ト が 指 定 さ れ た ポ ー ト の う ち の い ず れ か で あ れ ば マ ッ チ す る 。 フ ラ グ −−dports は 、 こ の オ プ シ ョ ン の 便 利 な 別 名 で あ る 。
[!] −−ports port[,port|,port:port]... 送 信 元 ポ ー ト と 宛 先 ポ ー ト の 一 方 が 指 定 さ れ た ポ ー ト の い ず れ か 一 つ と 等 し け れ ば 、 マ ッ チ す る 。

nfacct
nfacct マ ッ チ ン グ は iptable に 拡 張 ア カ ウ ン テ ィ ン グ 機 構 を 提 供 す る 。 こ の マ ッ チ ン グ モ ジ ュ ー ル は ユ ー ザ ー 空 間 ス タ ン ド ア ロ ン ユ ー テ ィ リ テ ィ nfacct(8) と 一 緒 に 使 う 必 要 が あ る 。 以 下 の オ プ シ ョ ン だ け が こ の マ ッ チ ン グ で 使 用 で き る 。
−−nfacct−name
name こ の ル ー ル セ ッ ト が マ ッ チ す る ト ラ フ ィ ッ ク 量 を 記 録 す る の に 使 用 す る 既 存 の オ ブ ジ ェ ク ト 名 を 指 定 す る 。 こ の 拡 張 を 使 用 す る に は 、 ア カ ウ ン テ ィ ン グ オ ブ ジ ェ ク ト を 作 成 す る 必 要 が あ り ま す 。

nfacct add http−traffic そ れ か ら 、 iptables を 使 っ て ア カ ウ ン テ ィ ン グ オ ブ ジ ェ ク ト に ト ラ フ ィ ッ ク を 関 連 付 け ま す 。

iptables −I INPUT −p tcp −−sport 80 −m nfacct −−nfacct−name http−traffic

iptables −I OUTPUT −p tcp −−dport 80 −m nfacct −−nfacct−name http−traffic そ う す る と 、 ル ー ル に マ ッ チ し た ト ラ フ ィ ッ ク 量 を チ ェ ッ ク で き る 。

nfacct get http−traffic

{ pkts = 00000000000000000156, bytes = 00000000000000151786 } = http−traffic;

nfacct(8)http://www.netfilter.org も し く は git.netfilter.org リ ポ ジ ト リ か ら 入 手 で き る 。

osf
osf モ ジ ュ ー ル は 受 動 的 な OS (オ ペ レ ー テ ィ ン グ シ ス テ ム ) フ ィ ン ガ ー プ リ ン テ ィ ン グ を 行 う 。 こ の モ ジ ュ ー ル は SYN ビ ッ ト が セ ッ ト さ れ た パ ケ ッ ト の い く つ か の デ ー タ (Window Size, MSS, オ プ シ ョ ン と そ の 順 序 , TTL, DF な ど ) を 比 較 す る 。
[!] −−genre string 受 動 的 フ ィ ン ガ ー プ リ ン テ ィ ン グ で マ ッ チ さ せ る オ ペ レ ー テ ィ ン グ シ ス テ ム の ジ ャ ン ル 。
−−ttl
level パ ケ ッ ト に 対 し て 、 オ ペ レ ー テ ィ ン グ シ ス テ ム を 判 定 す る た め の 追 加 の TTL チ ェ ッ ク を 行 う 。 level に は 以 下 の 値 の い ず れ を 指 定 で き る 。

0 − 本 当 の IP ア ド レ ス と フ ィ ン ガ ー プ リ ン ト TTL の 比 較 を 行 う 。 一 般 に LAN で 有 効 で あ る 。

1 − IP ヘ ッ ダ ー の TTL が フ ィ ン ガ ー プ リ ン ト TTL よ り 小 さ い か チ ェ ッ ク す る 。 グ ロ ー バ ル に ル ー テ ィ ン グ 可 能 な ア ド レ ス で 有 効 で あ る 。

2 − TTL の 比 較 を 全 く 行 わ な い 。

−−log level 判 別 し た ジ ャ ン ル が 期 待 す る も の と 違 う 場 合 で も ロ ギ ン グ す る か ど う か 。 level に は 以 下 の い ず れ か を 指 定 で き る 。

• マ ッ チ し た シ グ ネ チ ャ ー と 不 明 な シ グ ネ チ ャ ー を す べ て 記 録 す る

1 − 最 初 に マ ッ チ し た も の の み を 記 録 す る

2 − マ ッ チ し た 既 知 の シ グ ネ チ ャ ー を す べ て 記 録 す る

syslog に 以 下 の よ う な メ ッ セ ー ジ が 記 録 さ れ る 。

Windows [2000:SP3:Windows XP Pro SP1, 2000 SP3]: 11.22.33.55:4024 −> 11.22.33.44:139 hops=3 Linux [2.5−2.6:] : 1.2.3.4:42624 −> 1.2.3.5:22 hops=4

OS フ ィ ン ガ ー プ リ ン ト は nfnl_osf プ ロ グ ラ ム を 使 っ て ロ ー ド で き る 。 フ ァ イ ル か ら フ ィ ン ガ ー プ リ ン ト を ロ ー ド す る に は 以 下 の よ う に す る 。

nfnl_osf −f /usr/share/xtables/pf.os 再 度 削 除 す る に は 以 下 の よ う に す る 。

nfnl_osf −f /usr/share/xtables/pf.os −d フ ィ ン ガ ー プ リ ン ト デ ー タ ベ ー ス は http://www.openbsd.org/cgi−bin/cvsweb/src/etc/pf.os か ら ダ ウ ン ロ ー ド で き る 。

owner こ の モ ジ ュ ー ル は 、 ロ ー カ ル で 生 成 さ れ た パ ケ ッ ト に 対 し て 、 パ ケ ッ ト 生 成 者 の 様 々 な 特 性 に 対 す る マ ッ チ を 行 う 。 こ の マ ッ チ は OUTPUT チ ェ イ ン か POSTROUTING チ ェ イ ン で の み 有 効 で あ る 。 転 送 パ ケ ッ ト は ど の ソ ケ ッ ト と も 関 連 付 け ら れ て い な い 。 カ ー ネ ル ス レ ッ ド か ら の パ ケ ッ ト に は 対 応 す る ソ ケ ッ ト が あ る が 、 通 常 ソ ケ ッ ト の 所 有 者 は い な い 。
[!] −−uid−owner username
[!] −−uid−owner userid[userid] そ の パ ケ ッ ト の ソ ケ ッ ト の フ ァ イ ル 構 造 体 が 存 在 し 、 ソ ケ ッ ト の 所 有 者 が 指 定 さ れ た ユ ー ザ ー の 場 合 に マ ッ チ す る 。 数 値 の UID や UID の 範 囲 を 指 定 す る こ と も で き る 。
[!] −−gid−owner groupname
[!] −−gid−owner groupid[groupid] そ の パ ケ ッ ト の ソ ケ ッ ト の フ ァ イ ル 構 造 体 の 所 有 者 が 指 定 さ れ た グ ル ー プ の 場 合 に マ ッ チ す る 。 数 値 の GID や GID の 範 囲 を 指 定 す る こ と も で き る 。
[!] −−socket−exists パ ケ ッ ト が ソ ケ ッ ト に 関 連 付 け ら れ て い る 場 合 に マ ッ チ す る 。

physdev こ の モ ジ ュ ー ル は 、 ブ リ ッ ジ デ バ イ ス の ス レ ー ブ に さ れ た 、 ブ リ ッ ジ ポ ー ト の 入 出 力 デ バ イ ス に マ ッ チ す る 。 こ の モ ジ ュ ー ル は 、 ブ リ ッ ジ に よ る 透 過 的 な IP フ ァ イ ア ウ ォ ー ル の 基 盤 の 一 部 で あ り 、 カ ー ネ ル バ ー ジ ョ ン 2.5.44 以 降 で の み 有 効 で あ る 。
[!] −−physdev−in name パ ケ ッ ト が 受 信 さ れ る ブ リ ッ ジ の ポ ー ト 名 (INPUT, FORWARD, PREROUTING チ ェ イ ン に 入 る パ ケ ッ ト の み )。 イ ン タ ー フ ェ ー ス 名 が "+" で 終 っ て い る 場 合 、 そ の 名 前 で 始 ま る 任 意 の イ ン タ ー フ ェ ー ス 名 に マ ッ チ す る 。 ブ リ ッ ジ デ バ イ ス を 通 し て 受 け 取 ら れ な か っ た パ ケ ッ ト は 、 ’!’ が 指 定 さ れ て い な い 限 り 、 こ の オ プ シ ョ ン に マ ッ チ し な い 。
[!] −−physdev−out name パ ケ ッ ト を 送 信 す る こ と に な る ブ リ ッ ジ の ポ ー ト 名 (FORWARD, OUTPUT, POSTROUTING チ ェ イ ン に 入 る パ ケ ッ ト の み )。 イ ン タ ー フ ェ ー ス 名 が "+" で 終 っ て い る 場 合 、 そ の 名 前 で 始 ま る 任 意 の イ ン タ ー フ ェ ー ス 名 に マ ッ チ す る 。 natmangle テ ー ブ ル の OUTPUT チ ェ イ ン で は ブ リ ッ ジ の 出 力 ポ ー ト に マ ッ チ さ せ る こ と が で き な い が 、 filter テ ー ブ ル の OUPUT チ ェ イ ン で は マ ッ チ 可 能 で あ る 。 パ ケ ッ ト が ブ リ ッ ジ デ バ イ ス か ら 送 ら れ な か っ た 場 合 、 ま た は パ ケ ッ ト の 出 力 デ バ イ ス が 不 明 で あ っ た 場 合 は 、 ’!’ が 指 定 さ れ て い な い 限 り 、 パ ケ ッ ト は こ の オ プ シ ョ ン に マ ッ チ し な い 。
[!] −−physdev−is−in パ ケ ッ ト が ブ リ ッ ジ イ ン タ ー フ ェ ー ス に 入 っ た 場 合 に マ ッ チ す る 。
[!] −−physdev−is−out パ ケ ッ ト が ブ リ ッ ジ イ ン タ ー フ ェ ー ス か ら 出 よ う と し た 場 合 に マ ッ チ す る 。
[!] −−physdev−is−bridged パ ケ ッ ト が ブ リ ッ ジ さ れ る こ と に よ り 、 ル ー テ ィ ン グ さ れ な か っ た 場 合 に マ ッ チ す る 。 こ れ は FORWARD, POSTROUTING チ ェ イ ン に お い て の み 役 立 つ 。

pkttype こ の モ ジ ュ ー ル は 、 リ ン ク 層 の パ ケ ッ ト タ イ プ に マ ッ チ す る 。
[!] −−pkt−type {unicast|broadcast|multicast}

policy こ の モ ジ ュ ー ル は パ ケ ッ ト を 処 理 す る IPsec が 使 用 す る ポ リ シ ー に マ ッ チ す る 。
−−dir
{in|out} 復 号 (decapsulation) に 使 用 す る ポ リ シ ー に マ ッ チ す る か 、 カ プ セ ル 化 (encapsulation) に 使 用 す る ポ リ シ ー に マ ッ チ す る か を 指 定 す る 。 in は チ ェ イ ン PREROUTING, INPUT, FORWARD で 有 効 で 、 out は チ ェ イ ン POSTROUTING, OUTPUT, FORWARD で 有 効 で あ る 。
−−pol
{none|ipsec} パ ケ ッ ト が IPsec 処 理 対 象 で あ れ ば マ ッ チ す る 。 −−pol none−−strict と 一 緒 に 使 用 で き な い 。
−−strict
ポ リ シ ー が 正 確 に マ ッ チ す る か 、 指 定 し た ポ リ シ ー が ポ リ シ ー の い ず れ か の ル ー ル に マ ッ チ す る か を 指 定 す る 。 そ れ ぞ れ の ポ リ シ ー 要 素 を 定 義 す る の に 、 以 下 の オ プ シ ョ ン (複 数 可 ) を 使 用 す る こ と が で き る 。 −−strict が 有 効 に な っ て い る 場 合 、 各 要 素 に つ き 少 な く と も オ プ シ ョ ン を 一 つ 指 定 し な け れ ば な ら な い 。
[!] −−reqid id ポ リ シ ー ル ー ル の reqid に マ ッ チ す る 。 reqid は setkey(8) で レ ベ ル と し て unique:id を 使 っ て 指 定 で き る 。
[!] −−spi spi

SA の SPI に マ ッ チ す る 。

[!] −−proto {ah|esp|ipcomp} カ プ セ ル 化 プ ロ ト コ ル に マ ッ チ す る 。
[!] −−mode {tunnel|transport} カ プ セ ル 化 モ ー ド に マ ッ チ す る 。
[!] −−tunnel−src addr[/mask] ト ン ネ ル モ ー ド SA の 送 信 元 エ ン ド ポ イ ン ト ア ド レ ス に マ ッ チ す る 。 −−mode tunnel と の 組 み 合 わ せ で の み 有 効 。
[!] −−tunnel−dst addr[/mask] ト ン ネ ル モ ー ド SA の 宛 先 エ ン ド ポ イ ン ト ア ド レ ス に マ ッ チ す る 。 −−mode tunnel と の 組 み 合 わ せ で の み 有 効 。

−−next ポ リ シ ー 定 義 の 次 の 要 素 か ら 開 始 す る 。

−−strict と の 組 み 合 わ せ で の

み 使 用 で き る 。

quota
Implements network quotas by decrementing a byte counter with each packet. The condition matches until the byte counter reaches zero. Behavior is reversed with negation (i.e. the condition does not match until the byte counter reaches zero).
[!] −−quota bytes バ イ ト 単 位 の ク ォ ー タ 。

rateest レ ー ト 推 測 器 (rate estimator) は RATEEST タ ー ゲ ッ ト で 収 集 さ れ た 推 定 レ ー ト に マ ッ チ す る 。 bps/pps の 絶 対 値 に 対 す る マ ッ チ ン グ 、 2 つ の レ ー ト 推 測 器 の 比 較 、 2 つ の レ ー ト 推 測 器 の 差 分 に 対 す る マ ッ チ ン グ を サ ポ ー ト し て い る 。 利 用 可 能 な オ プ シ ョ ン が 分 か り や す い よ う に 、 す べ て の 可 能 な 組 み 合 わ せ を 以 下 に 示 す 。

rateest operator rateest−bps

rateest operator rateest−pps

(rateest minus rateest−bps1) operator rateest−bps2

(rateest minus rateest−pps1) operator rateest−pps2

rateest1 operator rateest2 rateest−bps(without rate!)

rateest1 operator rateest2 rateest−pps(without rate!)

(rateest1 minus rateest−bps1) operator (rateest2 minus rateest−bps2)

(rateest1 minus rateest−pps1) operator (rateest2 minus rateest−pps2)

−−rateest−delta

(絶 対 モ ー ド で も 相 対 モ ー ド で も ) 各 レ ー ト 推 測 器 に つ い て 、 レ ー ト 推 測 器 が 推 測 し た フ ロ ー レ ー ト と BPS/PPS オ プ シ ョ ン で 指 定 さ れ た 固 定 値 の 差 分 を 計 算 す る 。 フ ロ ー レ ー ト が 指 定 さ れ た BPS/PPS よ り も 大 き い 場 合 、 負 の 値 で は な く 0 が 代 わ り に 使 用 さ れ る 。 つ ま り "max(0, rateest#_rate − rateest#_bps)" が 使 用 さ れ る 。

[!] −−rateest−lt レ ー ト が 指 定 さ れ た レ ー ト か レ ー ト 推 測 器 の レ ー ト よ り も 低 い 場 合 に マ ッ チ す る 。
[!] −−rateest−gt レ ー ト が 指 定 さ れ た レ ー ト か レ ー ト 推 測 器 の レ ー ト よ り も 高 い 場 合 に マ ッ チ す る 。
[!] −−rateest−eq レ ー ト が 指 定 さ れ た レ ー ト か レ ー ト 推 測 器 の レ ー ト と 等 し い 場 合 に マ ッ チ す る 。 い わ ゆ る 「 絶 対 モ ー ド 」 で は 、 使 用 で き る レ ー ト 推 測 器 は 一 つ だ け で あ り 、 固 定 値 に 対 す る 比 較 だ け が で き る 。 一 方 、 「 相 対 モ ー ド 」 で は 、 2 つ の レ ー ト 推 測 器 が 使 用 で き 、 レ ー ト 推 測 器 ど う し の 比 較 が で き る 。
−−rateest
name 絶 対 モ ー ド で 使 用 す る レ ー ト 推 測 器 の 名 前
−−rateest1
name
−−rateest2
name 相 対 モ ー ド で 使 用 す る 2 つ レ ー ト 推 測 器 の 名 前
−−rateest−bps
[value]
−−rateest−pps
[value]
−−rateest−bps1
[value]
−−rateest−bps2
[value]
−−rateest−pps1
[value]
−−rateest−pps2
[value] レ ー ト 推 測 器 と 指 定 し た 値 を 、 秒 間 の バ イ ト 数 ま た は パ ケ ッ ト 数 で 比 較 す る 。 ど の オ プ シ ョ ン が ど の 場 合 に 使 用 で き る か は 上 の 箇 条 書 き の リ ス ト を 見 て ほ し い 。 単 位 を 示 す 接 尾 辞 を 付 け る こ と が で き る 。 bit, [kmgt]bit, [KMGT]ibit, Bps, [KMGT]Bps, [KMGT]iBps が 使 用 で き る 。 例 : こ の 機 能 を 、 デ ー タ コ ネ ク シ ョ ン の 開 始 時 に 利 用 可 能 帯 域 に 基 づ い て 、 FTP サ ー バ ー か ら の 出 力 デ ー タ コ ネ ク シ ョ ン を 2 つ の 回 線 に 振 り 分 け る の に 使 用 す る 場 合 。

# 出 力 レ ー ト を 推 定 す る

iptables −t mangle −A POSTROUTING −o eth0 −j RATEEST −−rateest−name eth0 −−rateest−interval 250ms −−rateest−ewma 0.5s

iptables −t mangle −A POSTROUTING −o ppp0 −j RATEEST −−rateest−name ppp0 −−rateest−interval 250ms −−rateest−ewma 0.5s

# 利 用 可 能 帯 域 に 基 づ い て マ ー キ ン グ を 行 う

iptables −t mangle −A balance −m conntrack −−ctstate NEW −m helper −−helper ftp −m rateest −−rateest−delta −−rateest1 eth0 −−rateest−bps1 2.5mbit −−rateest−gt −−rateest2 ppp0 −−rateest−bps2 2mbit −j CONNMARK −−set−mark 1

iptables −t mangle −A balance −m conntrack −−ctstate NEW −m helper −−helper ftp −m rateest −−rateest−delta −−rateest1 ppp0 −−rateest−bps1 2mbit −−rateest−gt −−rateest2 eth0 −−rateest−bps2 2.5mbit −j CONNMARK −−set−mark 2

iptables −t mangle −A balance −j CONNMARK −−restore−mark

realm (IPv4 の 場 合 )
This matches the routing realm. Routing realms are used in complex routing setups involving dynamic routing protocols like BGP.
[!] −−realm value[/mask]

Matches a given realm number (and optionally mask). If not a number, value can be a named realm from /etc/iproute2/rt_realms (mask can not be used in that case).

recent
IP ア ド レ ス の リ ス ト を 動 的 に 作 成 し 、 こ の リ ス ト に 対 す る マ ッ チ ン グ を い く つ か の 方 法 で 行 う 。 例 え ば 、 あ な た の フ ァ イ ア ウ ォ ー ル の 139 番 ポ ー ト に 接 続 し よ う と し た 「 悪 ガ キ 」 リ ス ト を 作 成 し 、 そ の ア ド レ ス か ら の こ れ 以 降 の す べ て の パ ケ ッ ト を 「 廃 棄 」 す る 。

−−set, −−rcheck, −−update, −−remove は 同 時 に 使 用 で き な い 。
−−name
name コ マ ン ド で 使 用 す る リ ス ト を 指 定 す る 。 名 前 が 指 定 さ れ な か っ た 場 合 DEFAULT が 使 用 さ れ る 。
[!] −−set リ ス ト に パ ケ ッ ト の 送 信 元 ア ド レ ス を 追 加 す る 。 そ の 送 信 元 ア ド レ ス が す で に リ ス ト に あ る 場 合 は 、 既 存 の エ ン ト リ ー を 更 新 す る 。 常 に 成 功 を 返 す (! が 指 定 さ れ て い る 場 合 は 常 に 失 敗 を 返 す )。
−−rsource

recent リ ス ト の テ ー ブ ル の 照 合 /保 存 で 、 各 パ ケ ッ ト の 送 信 元 ア ド レ ス を 使 う 。 こ れ が デ フ ォ ル ト で あ る 。

−−rdest

recent リ ス ト の テ ー ブ ル の 照 合 /保 存 で 、 各 パ ケ ッ ト の 宛 先 ア ド レ ス を 使 う 。

−−mask netmask こ の recent リ ス ト に 適 用 す る ネ ッ ト マ ス ク 。
[!] −−rcheck こ の パ ケ ッ ト の 送 信 元 ア ド レ ス が 現 在 リ ス ト に 含 ま れ る か を チ ェ ッ ク す る 。
[!] −−update

−−rcheck と 同 じ だ が 、 こ の オ プ シ ョ ン で は マ ッ チ し た 場 合 に "last seen" タ イ ム ス タ ン プ を 更 新 す る 。

[!] −−remove パ ケ ッ ト の 送 信 元 ア ド レ ス が 現 在 リ ス ト に 含 ま れ て い る か を チ ェ ッ ク し 、 含 ま れ て い る 場 合 、 そ の ア ド レ ス を リ ス ト か ら 削 除 し 、 ル ー ル は true を 返 す 。 ア ド レ ス が 含 ま れ な い 場 合 、 false を 返 す 。
−−seconds
seconds こ の オ プ シ ョ ン は −−rcheck−−update と の 組 み 合 わ せ で の み 使 用 で き る 。 使 用 さ れ た 場 合 、 ア ド レ ス が リ ス ト に 含 ま れ 、 か つ そ の ア ド レ ス が 直 近 の 指 定 さ れ た 秒 数 以 内 に 観 測 さ れ た 場 合 に の み 、 マ ッ チ す る よ う に な る 。

−−reap こ の オ プ シ ョ ン は

−−seconds と の 組 み 合 わ せ で の み 使 用 で き る 。 使 用

さ れ た 場 合 、 最 後 に 指 定 さ れ た 秒 数 よ り 古 い エ ン ト リ ー を 破 棄 す る 。

−−hitcount hits こ の オ プ シ ョ ン は −−rcheck−−update と の 組 み 合 わ せ て 使 用 し な け れ ば な ら な い 。 使 用 さ れ た 場 合 、 ア ド レ ス が リ ス ト に 含 ま れ 、 受 信 さ れ た パ ケ ッ ト 数 が 指 定 し た 値 以 上 の 場 合 に の み マ ッ チ す る よ う に な る 。 こ の オ プ シ ョ ン は −−seconds と 共 に 使 用 す る こ と も で き 、 そ の 場 合 は 指 定 さ れ た 時 間 内 の ヒ ッ ト 数 に 対 し て 照 合 を 行 う 。 hitcount パ ラ メ ー タ の 最 大 値 は xt_recent カ ー ネ ル モ ー ド の "ip_pkt_list_tot" パ ラ メ ー タ で 規 定 さ れ る 。 こ の コ マ ン ド リ ス ト で こ の 値 よ り も 大 き な 値 を 指 定 す る と 、 そ の ル ー ル は 拒 否 さ れ る 。

−−rttl こ の オ プ シ ョ ン は

−−rcheck−−update と の 組 み 合 わ せ で の み 使 用 で

き る 。 使 用 さ れ た 場 合 、 ア ド レ ス が リ ス ト に 含 ま れ 、 か つ 現 在 の パ ケ ッ ト の TTL が −−set ル ー ル に ヒ ッ ト し た パ ケ ッ ト の TTL に マ ッ チ す る 場 合 に の み マ ッ チ す る よ う に な る 。 こ の オ プ シ ョ ン は 、 送 信 元 ア ド レ ス を 偽 装 す る 人 が 偽 り の パ ケ ッ ト を 送 信 し て 、 こ の モ ジ ュ ー ル を 使 っ て あ な た の サ イ ト へ の 他 の ア ク セ ス が で き な い よ う に す る DoS 攻 撃 が あ る 場 合 な ど に 役 に 立 つ か も し れ な い 。 例 :

iptables −A FORWARD −m recent −−name badguy −−rcheck −−seconds 60 −j DROP

iptables −A FORWARD −p tcp −i eth0 −−dport 139 −m recent −−name badguy −−set −j DROP

/proc/net/xt_recent/* は 現 在 の ア ド レ ス の リ ス ト と 各 リ ス ト の 各 エ ン ト リ ー の 情 報 で あ る 。

/proc/net/xt_recent/ の 各 フ ァ イ ル は 、 読 み 出 し て 現 在 の リ ス ト を 確 認 す る こ と が で き る 。 ま た 、 以 下 の コ マ ン ド を 使 っ て 、 こ れ ら の フ ァ イ ル に 書 き 込 ん で リ ス ト を 変 更 す る こ と が で き る 。
echo +
addr >/proc/net/xt_recent/DEFAULT

DEFAULT リ ス ト に addr を 追 加 す る

echo −addr >/proc/net/xt_recent/DEFAULT

DEFAULT リ ス ト か ら addr を 削 除 す る

echo / >/proc/net/xt_recent/DEFAULT

DEFAULT リ ス ト を フ ラ ッ シ ュ (全 エ ン ト リ ー を 削 除 ) す る モ ジ ュ ー ル 自 体 も パ ラ メ ー タ ー を 取 り 、 デ フ ォ ル ト は 以 下 の 通 り で あ る 。

ip_list_tot=100 テ ー ブ ル 単 位 の 記 録 ア ド レ ス 数 。
ip_pkt_list_tot
=20 ア ド レ ス 単 位 の 記 録 パ ケ ッ ト 数 。
ip_list_hash_size
=0 ハ ッ シ ュ テ ー ブ ル サ イ ズ 。 0 は ip_list_tot に 基 づ い て 計 算 す る こ と を 意 味 す る 。 デ フ ォ ル ト は 512。
ip_list_perms
=0644

/proc/net/xt_recent/* フ ァ イ ル の ア ク セ ス 許 可 モ ー ド 。

ip_list_uid=0

/proc/net/xt_recent/* フ ァ イ ル の 数 値 ID で の 所 有 者 。

ip_list_gid=0

/proc/net/xt_recent/* フ ァ イ ル の 数 値 ID で の グ ル ー プ 所 有 者 。

rpfilter パ ケ ッ ト に 対 し て reverse path フ ィ ル タ ー テ ス ト を 行 う 。 パ ケ ッ ト に 対 す る 応 答 が パ ケ ッ ト が 到 着 し た イ ン タ ー フ ェ ー ス と 同 じ イ ン タ ー フ ェ ー ス か ら 送 信 さ れ る 場 合 、 そ の パ ケ ッ ト に マ ッ チ す る 。 カ ー ネ ル 内 の rp_filter と 異 な り 、 IPsec で 保 護 さ れ た パ ケ ッ ト が 特 別 扱 い さ れ な い 点 に 注 意 す る こ と 。 必 要 な 場 合 は 、 こ の マ ッ チ を ポ リ シ ー マ ッ チ と 組 み 合 わ せ て 使 う こ と 。 ま た 、 ル ー プ バ ッ ク イ ン タ ー フ ェ ー ス 経 由 で 到 着 し た パ ケ ッ ト は 常 に 許 可 さ れ る 。 こ の マ ッ チ は raw テ ー ブ ル ま た は mangle テ ー ブ ル の PREROUTING チ ェ イ ン で の み 使 用 で き る 。
−−loose
選 択 さ れ た 出 力 デ バ イ ス が 期 待 さ れ た も の で は な い 場 合 で あ っ て も 、 reverse path フ ィ ル タ ー テ ス ト の マ ッ チ を 行 う こ と を 指 示 す る 。
−−validmark

reverse path の 経 路 検 索 実 行 時 に そ の パ ケ ッ ト の nfmark 値 も 使 用 す る 。

−−accept−local ロ ー カ ル マ シ ン に も 割 り 当 て ら れ て い る 送 信 元 ア ド レ ス を 持 つ ネ ッ ト ワ ー ク か ら 到 着 し た パ ケ ッ ト を 許 可 す る 。
−−invert
マ ッ チ の 意 味 を 逆 に す る 。 reverse path フ ィ ル タ ー テ ス ト に 合 格 し た パ ケ ッ ト に マ ッ チ す る の で は な く 、 テ ス ト に 失 敗 し た パ ケ ッ ト に マ ッ チ す る 。

reverse path フ ィ ル タ ー テ ス ト に 失 敗 し た パ ケ ッ ト を ロ ギ ン グ し 破 棄 す る 例

iptables −t raw −N RPFILTER

iptables −t raw −A RPFILTER −m rpfilter −j RETURN

iptables −t raw −A RPFILTER −m limit −−limit 10/minute −j NFLOG −−nflog−prefix "rpfilter drop"

iptables −t raw −A RPFILTER −j DROP

iptables −t raw −A PREROUTING −j RPFILTER 失 敗 し た パ ケ ッ ト を ド ロ ッ プ す る が 、 ロ ギ ン グ を 行 わ な い 例

iptables −t raw −A RPFILTER −m rpfilter −−invert −j DROP

rt (IPv6 の み )
IPv6 ル ー テ ィ ン グ ヘ ッ ダ ー に 対 し て マ ッ チ す る 。
[!] −−rt−type type 指 定 し た タ イ プ (数 値 ) に マ ッ チ す る 。
[!] −−rt−segsleft num[:num]

’segments left’ フ ィ ー ル ド (範 囲 ) に マ ッ チ す る 。

[!] −−rt−len length こ の ヘ ッ ダ ー の 長 さ に マ ッ チ す る 。
−−rt−0−res
予 約 フ ィ ー ル ド (type=0) に も マ ッ チ す る 。
−−rt−0−addrs
addr[,addr...]

type=0 の ア ド レ ス (リ ス ト ) に マ ッ チ す る 。

−−rt−0−not−strict

type=0 の ア ド レ ス の リ ス ト は 厳 密 な リ ス ト で は な い 。

sctp
[!] −−source−port,−−sport port[:port]
[!] −−destination−port,−−dport port[:port]
[!] −−chunk−types {all|any|only} chunktype[:flags] [...] 大 文 字 の フ ラ グ 文 字 は そ の フ ラ グ が セ ッ ト さ れ て い る 場 合 に マ ッ チ し 、 小 文 字 の フ ラ グ 文 字 は セ ッ ト さ れ て い な い 場 合 に マ ッ チ す る こ と を 指 示 す る 。 チ ャ ン ク 種 別 : DATA INIT INIT_ACK SACK HEARTBEAT HEARTBEAT_ACK ABORT SHUTDOWN SHUTDOWN_ACK ERROR COOKIE_ECHO COOKIE_ACK ECN_ECNE ECN_CWR SHUTDOWN_COMPLETE ASCONF ASCONF_ACK FORWARD_TSN チ ャ ン ク 種 別 で 利 用 可 能 な フ ラ グ

DATA I U B E i u b e
ABORT T t
SHUTDOWN_COMPLETE T t

(小 文 字 は フ ラ グ を 「 オ フ 」 に す る こ と を 、 大 文 字 は 「 オ ン 」 に す る こ と を 意 味 す る ) 例 :

iptables −A INPUT −p sctp −−dport 80 −j DROP

iptables −A INPUT −p sctp −−chunk−types any DATA,INIT −j DROP

iptables −A INPUT −p sctp −−chunk−types any DATA:Be −j ACCEPT

set こ の モ ジ ュ ー ル は ipsec(8) で 定 義 で き る IP 集 合 に マ ッ チ す る 。
[!] −−match−set setname flag[,flag]...

where flags are the comma separated list of src and/or dst specifications and there can be no more than six of them. Hence the command

iptables −A FORWARD −m set −−match−set test src,dst

will match packets, for which (if the set type is ipportmap) the source address and destination port pair can be found in the specified set. If the set type of the specified set is single dimension (for example ipmap), then the command will match packets for which the source address can be found in the specified set.

−−return−nomatch

If the −−return−nomatch option is specified and the set type supports the nomatch flag, then the matching is reversed: a match with an element flagged with nomatch returns true, while a match with a plain element returns false.

! −−update−counters

If the −−update−counters flag is negated, then the packet and byte counters of the matching element in the set won’t be updated. Default the packet and byte counters are updated.

! −−update−subcounters

If the −−update−subcounters flag is negated, then the packet and byte counters of the matching element in the member set of a list type of set won’t be updated. Default the packet and byte counters are updated.

[!] −−packets−eq value

If the packet is matched an element in the set, match only if the packet counter of the element matches the given value too.

−−packets−lt value

If the packet is matched an element in the set, match only if the packet counter of the element is less than the given value as well.

−−packets−gt value

If the packet is matched an element in the set, match only if the packet counter of the element is greater than the given value as well.

[!] −bytes−eq value

If the packet is matched an element in the set, match only if the byte counter of the element matches the given value too.

−−bytes−lt value

If the packet is matched an element in the set, match only if the byte counter of the element is less than the given value as well.

−−bytes−gt value

If the packet is matched an element in the set, match only if the byte counter of the element is greater than the given value as well.

The packet and byte counters related options and flags are ignored when the set was defined without counter support.

The option −−match−set can be replaced by −−set if that does not clash with an option of other extensions.

Use of −m set requires that ipset kernel support is provided, which, for standard kernels, is the case since Linux 2.6.39.

socket
This matches if an open TCP/UDP socket can be found by doing a socket lookup on the packet. It matches if there is an established or non−zero bound listening socket (possibly with a non−local address). The lookup is performed using the packet tuple of TCP/UDP packets, or the original TCP/UDP header embedded in an ICMP/ICPMv6 error packet.
−−transparent
非 透 過 (non−transparent) ソ ケ ッ ト を 無 視 す る 。
−−nowildcard

Do not ignore sockets bound to ’any’ address. The socket match won’t accept zero−bound listeners by default, since then local services could intercept traffic that would otherwise be forwarded. This option therefore has security implications when used to match traffic being forwarded to redirect such packets to local machine with policy routing. When using the socket match to implement fully transparent proxies bound to non−local addresses it is recommended to use the −−transparent option instead.

Example (assuming packets with mark 1 are delivered locally):

−t mangle −A PREROUTING −m socket −−transparent −j MARK −−set−mark 1

state
"state" 拡 張 は "conntrack" モ ジ ュ ー ル の サ ブ セ ッ ト で あ る 。 "state" を 使 う と 、 パ ケ ッ ト に つ い て の コ ネ ク シ ョ ン 追 跡 状 態 を 参 照 で き る 。
[!] −−state state

state は マ ッ チ す る コ ネ ク シ ョ ン 状 態 の カ ン マ 区 切 り の リ ス ト で あ る 。 "conntrack" が 理 解 で き る 状 態 の 一 部 だ け が 指 定 で き る 。 指 定 で き る の は INVALID, ESTABLISHED, NEW, RELATED, UNTRACKED で あ る 。 こ れ ら の 説 明 は こ の マ ニ ュ ア ル ペ ー ジ の "conntrack" の 説 明 を 参 照 の こ と 。

statistic こ の モ ジ ュ ー ル は 統 計 的 な 条 件 に 基 づ い た パ ケ ッ ト の マ ッ チ ン グ を 行 う 。 二 つ の モ ー ド が サ ポ ー ト さ れ て お り 、 −−mode オ プ シ ョ ン で 設 定 で き る 。 サ ポ ー ト さ れ て い る オ プ シ ョ ン :
−−mode
mode マ ッ チ ン グ ル ー ル の マ ッ チ ン グ モ ー ド を 設 定 す る 。 サ ポ ー ト さ れ て い る モ ー ド は randomnth で あ る 。
[!] −−probability p ラ ン ダ ム に パ ケ ッ ト が マ ッ チ す る 確 率 を 設 定 す る 。 random モ ー ド で の み 機 能 す る 。 p は 0.0 と 1.0 の 範 囲 で な け れ ば な ら な い 。 サ ポ ー ト さ れ て い る 粒 度 は 1/2147483648 で あ る 。
[!] −−every n

n パ ケ ッ ト に 1 つ マ ッ チ す る 。 nth モ ー ド で の み 機 能 す る (−−packet オ プ シ ョ ン も 参 照 )。

−−packet p

nth モ ー ド で カ ウ ン タ ー の 初 期 値 を 設 定 す る (0 <= p <= n−1, デ フ ォ ル ト は 0)。

string こ の モ ジ ュ ー ル は 、 い く つ か の パ タ ー ン マ ッ チ 手 法 を 用 い て 指 定 さ れ た 文 字 列 と の マ ッ チ を 行 う 。 Linux カ ー ネ ル 2.6.14 以 上 が 必 要 で あ る 。
−−algo
{bm|kmp} パ タ ー ン マ ッ チ ン グ 手 法 を 選 択 す る (bm = Boyer−Moore, kmp = Knuth−Pratt−Morris)
−−from
offset マ ッ チ ン グ の 検 索 を 開 始 す る オ フ セ ッ ト を 設 定 す る 。 指 定 さ れ な か っ た 場 合 の デ フ ォ ル ト は 0 で あ る 。
−−to
offset 検 索 を 終 了 す る オ フ セ ッ ト を 設 定 す る 。 バ イ ト offset−1 (バ イ ト 番 号 は 0 か ら 開 始 ) が 検 索 範 囲 の 最 終 バ イ ト と な る 。 指 定 さ れ な か っ た 場 合 、 デ フ ォ ル ト は パ ケ ッ ト サ イ ズ で あ る 。
[!] −−string pattern 指 定 さ れ た パ タ ー ン に マ ッ チ す る 。
[!] −−hex−string pattern 指 定 さ れ た 16 進 表 記 の パ タ ー ン に マ ッ チ す る 。

例 :

# 文 字 列 パ タ ー ン は 単 純 な テ キ ス ト 文 字 を 探 す の に 使 用 で き る 。

iptables −A INPUT −p tcp −−dport 80 −m string −−algo bm −−string ’GET /index.html’ −j LOG

16 進 数 文 字 列 の パ タ ー ン は 表 示 可 能 文 字 以 外 を 検 索 す る の に 使 用 で き る 。 |0D 0A| や |0D0A| な ど 。
iptables −p udp −−dport 53 −m string −−algo bm −−from 40 −−to 57 −−hex−string ’|03|www|09|netfilter|03|org|00|’

tcp こ れ ら の 拡 張 は ’−−protocol tcp’ が 指 定 さ れ 場 合 に 使 用 で き る 。 以 下 の オ プ シ ョ ン が 提 供 さ れ る :
[!] −−source−port,−−sport port[:port] 送 信 元 ポ ー ト ま た は ポ ー ト 範 囲 の 指 定 。 サ ー ビ ス 名 ま た は ポ ー ト 番 号 を 指 定 で き る 。 first:last と い う 形 式 で 、 2 つ の 番 号 を 含 む 範 囲 を 指 定 す る こ と も で き る 。 最 初 の ポ ー ト を 省 略 し た 場 合 、 "0" を 仮 定 す る 。 最 後 の ポ ー ト を 省 略 し た 場 合 、 "65535" を 仮 定 す る 。 最 初 の ポ ー ト が 最 後 の ポ ー ト よ り 大 き い 場 合 、 2 つ は 入 れ 換 え ら れ る 。 フ ラ グ −−sport は 、 こ の オ プ シ ョ ン の 便 利 な 別 名 で あ る 。
[!] −−destination−port,−−dport port[:port] 宛 先 ポ ー ト ま た は ポ ー ト 範 囲 の 指 定 。 フ ラ グ −−dport は 、 こ の オ プ シ ョ ン の 便 利 な 別 名 で あ る 。
[!] −−tcp−flags mask comp

TCP フ ラ グ が 指 定 さ れ た も の と 等 し い 場 合 に マ ッ チ す る 。 第 1 引 き 数 mask は 評 価 対 象 と す る フ ラ グ で 、 コ ン マ 区 切 り の リ ス ト で あ る 。 第 2 引 き 数 comp は 必 ず 設 定 し な け れ ば な ら な い フ ラ グ で 、 コ ン マ 区 切 り の リ ス ト で あ る 。 指 定 で き る フ ラ グ は SYN ACK FIN RST URG PSH ALL NONE で あ る 。 よ っ て 、 コ マ ン ド
iptables −A FORWARD −p tcp −−tcp−flags SYN,ACK,FIN,RST SYN は 、 SYN フ ラ グ が 設 定 さ れ ACK, FIN, RST フ ラ グ が 設 定 さ れ て い な い パ ケ ッ ト に の み マ ッ チ す る 。

[!] −−syn

SYN ビ ッ ト が 設 定 さ れ ACK, RST, FIN ビ ッ ト が ク リ ア さ れ て い る TCP パ ケ ッ ト に の み マ ッ チ す る 。 こ の よ う な パ ケ ッ ト は TCP コ ネ ク シ ョ ン の 開 始 要 求 に 使 わ れ る 。 例 え ば 、 あ る イ ン タ ー フ ェ ー ス に 入 っ て く る こ の よ う な パ ケ ッ ト を ブ ロ ッ ク す れ ば 、 内 側 へ の TCP コ ネ ク シ ョ ン は 禁 止 さ れ る が 、 外 側 へ の TCP コ ネ ク シ ョ ン に は 影 響 し な い 。 こ れ は −−tcp−flags SYN,RST,ACK,FIN SYN と 等 し い 。 "−−syn" の 前 に "!" フ ラ グ を 置 く と 、 SYN ビ ッ ト が ク リ ア さ れ ACK と RST ビ ッ ト が 設 定 さ れ て い る TCP パ ケ ッ ト に の み マ ッ チ す る 。

[!] −−tcp−option number

TCP オ プ シ ョ ン が 設 定 さ れ て い る 場 合 に マ ッ チ す る 。

tcpmss
TCP ヘ ッ ダ ー の TCP MSS (maximum segment size) フ ィ ー ル ド に マ ッ チ す る 。 TCP の SYN パ ケ ッ ト か SYN/ACK パ ケ ッ ト に 対 し て の み 利 用 で き る 。 MSS の ネ ゴ シ エ ー シ ョ ン は コ ネ ク シ ョ ン 開 始 時 の TCP ハ ン ド シ ェ イ ク 中 だ け だ か ら で あ る 。
[!] −−mss value[:value] 指 定 さ れ た TCP MSS 値 か 範 囲 に マ ッ チ す る 。

time こ の モ ジ ュ ー ル は パ ケ ッ ト の 到 着 時 刻 /日 付 が 指 定 さ れ た 範 囲 内 の 場 合 に マ ッ チ す る 。 す べ て の オ プ シ ョ ン が 任 意 オ プ シ ョ ン で 、 複 数 指 定 し た 場 合 は AND と 解 釈 さ れ る 。 デ フ ォ ル ト で は す べ て の 時 刻 は UTC と 解 釈 さ れ る 。
−−datestart
YYYY[MM[DD[Thh[:mm[:ss]]]]]
−−datestop
YYYY[MM[DD[Thh[:mm[:ss]]]]] 指 定 さ れ た 時 刻 (日 付 も 含 む ) の 範 囲 に あ る 場 合 に マ ッ チ す る 。 時 刻 は ISO 8601 "T" 表 記 で な け れ ば な ら な い 。 指 定 可 能 な 範 囲 は 1970−01−01T00:00:00 か ら 2038−01−19T04:17:07 で あ る 。

−−datestart と −−datestop は 、 指 定 さ れ な か っ た 場 合 、 そ れ ぞ れ 1970−01−01 と 2038−01−19 と み な さ れ ま す 。

−−timestart hh:mm[:ss]
−−timestop
hh:mm[:ss] 指 定 さ れ た 時 刻 (日 付 は 含 ま な い ) の 範 囲 に あ る 場 合 に マ ッ チ す る 。 指 定 可 能 な 範 囲 は 00:00:00 か ら 23:59:59 で あ る 。 ("06:03" の よ う に ) 先 頭 に 0 を 付 け て も よ い 。 こ の 場 合 も 10 進 数 と し て 正 し く 解 釈 さ れ る 。
[!] −−monthdays day[,day...] 指 定 さ れ た 月 の 日 付 に マ ッ チ す る 。 指 定 可 能 な 値 は 1 か ら 31 で あ る 。 も ち ろ ん 31 を 指 定 し た 場 合 31 日 が な い 月 で は マ ッ チ し な い 。 同 じ こ と が 2 月 29 日 に つ い て も 言 え る 。
[!] −−weekdays day[,day...] 指 定 し た 曜 日 に マ ッ チ す る 。 指 定 可 能 な 値 は Mon, Tue, Wed, Thu, Fri, Sat, Sun お よ び 1 か ら 7 の 値 で あ る 。 ま た 、 2 文 字 の 曜 日 指 定 (Mo, Tu な ど ) も 使 用 で き る 。
−−contiguous

−−timestop−−timestart よ り も 小 さ い 場 合 、 複 数 の 期 間 で は な く 、 一 つ の 時 間 帯 と し て マ ッ チ す る よ う に す る 。 例 を 参 照 。

−−kerneltz パ ケ ッ ト が 時 刻 指 定 に マ ッ チ す る か を 判 定 す る 際 に UTC で は な く カ ー ネ ル タ イ ム ゾ ー ン を 使 用 す る 。

About kernel timezones: Linux keeps the system time in UTC, and always does so. On boot, system time is initialized from a referential time source. Where this time source has no timezone information, such as the x86 CMOS RTC, UTC will be assumed. If the time source is however not in UTC, userspace should provide the correct system time and timezone to the kernel once it has the information.

Local time is a feature on top of the (timezone independent) system time. Each process has its own idea of local time, specified via the TZ environment variable. The kernel also has its own timezone offset variable. The TZ userspace environment variable specifies how the UTC−based system time is displayed, e.g. when you run date(1), or what you see on your desktop clock. The TZ string may resolve to different offsets at different dates, which is what enables the automatic time−jumping in userspace. when DST changes. The kernel’s timezone offset variable is used when it has to convert between non−UTC sources, such as FAT filesystems, to UTC (since the latter is what the rest of the system uses).

The caveat with the kernel timezone is that Linux distributions may ignore to set the kernel timezone, and instead only set the system time. Even if a particular distribution does set the timezone at boot, it is usually does not keep the kernel timezone offset − which is what changes on DST − up to date. ntpd will not touch the kernel timezone, so running it will not resolve the issue. As such, one may encounter a timezone that is always +0000, or one that is wrong half of the time of the year. As such, using −−kerneltz is highly discouraged. 例 を い く つ か 。 週 末 に マ ッ チ さ せ る 場 合 :

−m time −−weekdays Sa,Su 国 の 祝 日 に (一 度 だ け ) マ ッ チ さ せ る 場 合 :

−m time −−datestart 2007−12−24 −−datestop 2007−12−27 終 了 時 刻 も 実 際 に は 含 ま れ る の で 、 新 年 の 最 初 の 1 秒 に マ ッ チ し な い よ う に 終 了 時 刻 を 以 下 の よ う に 指 定 す る 必 要 が あ る :

−m time −−datestart 2007−01−01T17:00 −−datestop 2007−01−01T23:59:59 昼 御 飯 の 時 間 帯 :

−m time −−timestart 12:30 −−timestop 13:30 第 4 金 曜 日 :

−m time −−weekdays Fr −−monthdays 22,23,24,25,26,27,28

(こ れ は 数 学 的 な 性 質 を 利 用 し て い る 点 に 留 意 す る こ と 。 一 つ の ル ー ル で 「 第 4 木 曜 日 ま た は 第 4 金 曜 日 」 と 指 定 す る こ と は で き な い 。 複 数 ル ー ル で 指 定 す る こ と は で き る が 。 ) 日 を ま た ぐ マ ッ チ ン グ は 期 待 す る よ う に は 動 か な い だ ろ う 。 例 え ば 、

−m time −−weekdays Mo −−timestart 23:00 −−timestop 01:00 は 、 月 曜 日 の 0 時 か ら 午 前 1 時 の 1 時 間 に マ ッ チ し 、 そ の 後 さ ら に 23 時 か ら の 1 時 間 に も マ ッ チ す る 。 こ れ が 希 望 通 り で な い 場 合 、 例 え ば 、 月 曜 日 23 時 か ら 2 時 間 に マ ッ チ さ せ た い 場 合 は 、 上 記 に 追 加 で −−contiguous オ プ シ ョ ン も 指 定 す る 必 要 が あ る 。

tos こ の モ ジ ュ ー ル は IPv4 ヘ ッ ダ ー の 8 ビ ッ ト の Type of Service フ ィ ー ル ド (す な わ ち 上 位 ビ ッ ト を 含 ま れ る ) も し く は IPv6 ヘ ッ ダ ー の (8 ビ ッ ト の ) Priority フ ィ ー ル ド に マ ッ チ す る 。
[!] −−tos value[/mask] 指 定 さ れ た TOS マ ー ク 値 を 持 つ パ ケ ッ ト に マ ッ チ す る 。 mask が 指 定 さ れ る と 、 比 較 の 前 に TOS マ ー ク 値 と の 論 理 積 (AND) が と ら れ る )。
[!] −−tos symbol

IPv4 の tos フ ィ ー ル ド に 対 す る マ ッ チ を 指 定 す る 際 に シ ン ボ ル 名 を 使 う こ と が で き る 。 iptables を −m tos −h で 呼 び 出 す と 、 利 用 可 能 な TOS 名 の 一 覧 を 得 る こ と が で き る 。 シ ン ボ ル 名 を 使 っ た 場 合 、 mask と し て 0x3F が 使 用 さ れ る (0x3F は ECN ビ ッ ト 以 外 の 全 ビ ッ ト で あ る )。

ttl (IPv4 の 場 合 ) こ の モ ジ ュ ー ル は IP ヘ ッ ダ ー の time to live フ ィ ー ル ド に マ ッ チ す る 。
[!] −−ttl−eq ttl 指 定 さ れ た TTL 値 に マ ッ チ す る 。
−−ttl−gt
ttl

TTL が 指 定 さ れ た TTL 値 よ り 大 き け れ ば マ ッ チ す る 。

−−ttl−lt ttl

TTL が 指 定 さ れ た TTL 値 よ り 小 さ け れ ば マ ッ チ す る 。

u32
U32 は 、 パ ケ ッ ト か ら 最 大 4 バ イ ト の 数 値 を 取 り 出 し て 、 指 定 し た 値 を 持 つ か の 検 査 を 行 う 。 ど こ を 取 り 出 す か の 指 定 は 汎 用 的 に な っ て お り 、 TCP ヘ ッ ダ ー や ペ イ ロ ー ド か ら 指 定 し た オ フ セ ッ ト の デ ー タ を 取 り 出 す こ と が で き る 。
[!] −−u32 tests 引 き 数 は 、 以 下 で 説 明 す る 小 さ な 言 語 の プ ロ グ ラ ム に な る 。

tests := location "=" value | tests "&&" location "=" value

value := range | value "," range

range := number | number ":" number 数 字 1 個 nn:n と 同 じ も の と 解 釈 さ れ る 。 n:m>=n か つ <=m の 範 囲 の 数 字 と 解 釈 さ れ る 。

location := number | location operator number

operator := "&" | "<<" | ">>" | "@" オ ペ レ ー タ ー &, <<, >>, && は C と 同 じ 意 味 で あ る 。 = は 集 合 の 所 属 を 検 査 す る オ ペ レ ー タ ー で 、 値 は 集 合 と し て 記 述 す る 。 @ オ ペ レ ー タ ー は 、 次 の ヘ ッ ダ ー へ の 移 動 に 使 う オ ペ レ ー タ ー で 、 後 で 詳 し く 説 明 す る 。 現 在 の と こ ろ 、 テ ス ト の 大 き さ に は い く つ か 実 装 か ら 来 る 制 約 が あ る 。

*

u32 引 き 数 あ た り の "=" は 最 大 10 個 ま で ("&&" は 9 個 ま で )

*

value あ た り の range は 10 個 ま で (カ ン マ は 9 個 ま で )

*

一 つ の location あ た り の number は 最 大 10 個 ま で (operator は 9 個 ま で )

location の 意 味 を 説 明 す る た め に 、 location を 解 釈 す る 以 下 の よ う な マ シ ン を 考 え て み る 。 3 つ の レ ジ ス タ ー が あ る 。

A は char * 型 で 、 最 初 は IP ヘ ッ ダ ー の ア ド レ ス が 入 っ て い る 。

B と C は 32 ビ ッ ト 整 数 で 、 最 初 は 0 で あ る 。 命 令 は 以 下 の 通 り 。

number B = number;

C = (*(A+B)<<24) + (*(A+B+1)<<16) + (*(A+B+2)<<8) + *(A+B+3)

&number C = C & number

<< number C = C << number >> number C = C >> number

@number A = A + C; こ の 後 、 命 令 の 数 字 を 実 行 す る

[skb−>data,skb−>end] 以 外 へ の メ モ リ ア ク セ ス は す べ て マ ッ チ 失 敗 と な る 。 そ れ 以 外 の 場 合 、 計 算 の 結 果 が C の 最 終 的 な 値 と な る 。 ホ ワ イ ト ス ペ ー ス を 入 れ る こ と は で き る が 、 テ ス ト で は 必 須 で は な い 。 し た だ し 、 テ ス ト に 含 ま れ る 文 字 は シ ェ ル で の ク ォ ー ト が 必 要 な 場 合 も よ く あ る の で 、 引 き 数 全 体 を ク ォ ー ト で 囲 ん で お く と よ い だ ろ う 。 例 : ト ー タ ル 長 が 256 以 上 の IP パ ケ ッ ト に マ ッ チ す る

IP ヘ ッ ダ ー で は バ イ ト 2−3 に ト ー タ ル 長 フ ィ ー ル ド が あ る 。

−−u32 "0 & 0xFFFF = 0x100:0xFFFF" バ イ ト 0−3 を 読 み 出 し 、

0xFFFF (バ イ ト 2−3 に 対 応 ) の 論 理 積 (AND) を 取 り 、 そ の 値 が 範 囲 [0x100:0xFFFF] に あ る か 検 査 す る 。 例 : (も っ と 実 用 的 な 、 し た が っ て も っ と 複 雑 な 例 )

ICMP タ イ プ が 0 の ICMP パ ケ ッ ト に マ ッ チ す る ま ず ICMP パ ケ ッ ト か ど う か 検 査 す る 。 バ イ ト 9 (プ ロ ト コ ル ) = 1 で あ れ ば 真 。

−−u32 "6 & 0xFF = 1 && ... バ イ ト 6−9 を 読 み 出 し 、 & を 使 っ て バ イ ト 6−8 を 取 り 除 き 、 得 ら れ た 値 を 1 と 比 較 す る 。 次 に 、 フ ラ グ メ ン ト で は な い こ と を 検 査 す る (フ ラ グ メ ン ト の 場 合 、 パ ケ ッ ト は ICMP パ ケ ッ ト の 一 部 か も し れ な い が 、 常 に そ う だ と は 言 え な い )。 注 意 : 一 般 的 に IP ヘ ッ ダ ー よ り 先 に あ る も の と マ ッ チ を 行 う 場 合 に は こ の 検 査 は 必 要 で あ る 。 こ の パ ケ ッ ト が (フ ラ グ メ ン ト で は な い ) 完 全 な パ ケ ッ ト で あ れ ば 、 バ イ ト 6 の 最 後 の 6 ビ ッ ト と バ イ ト 7 の 全 ビ ッ ト が 0 で あ る 。 代 わ り に 、 バ イ ト 6 の 最 後 の 5 ビ ッ ト を 検 査 す る だ け で 最 初 の フ ラ グ メ ン ト を 許 可 す る こ と が で き る 。

... 4 & 0x3FFF = 0 && ... 最 後 の 検 査 と し て 、 IP ヘ ッ ダ ー 直 後 の バ イ ト (ICMP タ イ プ ) が 0 か を 確 認 す る 。 こ こ で @ 記 法 を 使 う 必 要 が あ る 。 IP ヘ ッ ダ ー の 長 さ (IHL) は IP ヘ ッ ダ ー 自 身 の バ イ ト 0 の 右 半 分 に 32 ビ ッ ト ワ ー ド で 格 納 さ れ て い る 。

... 0 >> 22 & 0x3C @ 0 >> 24 = 0" 最 初 の 0 は バ イ ト 0−3 を 読 み 出 し 、 >>22 は そ の 値 を 22 ビ ッ ト 右 に シ フ ト す る こ と を 意 味 す る 。 24 ビ ッ ト シ フ ト す る と 最 初 の バ イ ト が 得 ら れ る の で 、 22 ビ ッ ト だ け シ フ ト す る と (少 し 余 計 な ビ ッ ト が 付 い て い る が ) そ の 4 倍 の 値 が 得 ら れ る 。 &3C で 右 側 の 余 計 な 2 ビ ッ ト と 最 初 の バ イ ト の 先 頭 4 ビ ッ ト を 取 り 除 く 。 例 え ば 、 IHL が 5 の 場 合 IP ヘ ッ ダ ー は 20 バ イ ト (4 x 5) で あ る 。 こ の 場 合 、 バ イ ト 0−1 は (バ イ ナ リ で ) xxxx0101 yyzzzzzz で あ り 、 >>22 に よ り 10 ビ ッ ト の 値 xxxx0101yy が 得 ら れ 、 &3C で 010100 が 得 ら れ る 。 @ は 、 こ の 数 字 を パ ケ ッ ト の 新 し い オ フ セ ッ ト と し て 使 用 し 、 こ の 地 点 か ら 始 ま る 4 バ イ ト を 読 み 出 す こ と を 意 味 す る 。 こ の 4 バ イ ト は ICMP ペ イ ロ ー ド の 最 初 の 4 バ イ ト で あ り 、 バ イ ト 0 が ICMP タ イ プ で あ る 。 し た が っ て 、 こ の 値 を 24 ビ ッ ト 右 に シ フ ト し て 、 最 初 の バ イ ト 以 外 を す べ て 取 り 除 き 、 そ の 結 果 を 0 と 比 較 す る だ け で よ い 。 例 :

TCP ペ イ ロ ー ド の バ イ ト 8−12 が 1, 2, 5, 8 の い ず れ か か を 検 査 す る ま ず 、 パ ケ ッ ト が TCP パ ケ ッ ト で あ る か を 検 査 す る (ICMP と 同 様 )。

−−u32 "6 & 0xFF = 6 && ... 次 に 、 フ ラ グ メ ン ト で な い こ と を 検 査 す る (上 記 と 同 じ )。

... 0 >> 22 & 0x3C @ 12 >> 26 & 0x3C @ 8 = 1,2,5,8" 上 で 説 明 し た 通 り 0>>22&3C で IP ヘ ッ ダ ー の バ イ ト 数 を 計 算 す る 。 @ で こ の 値 を パ ケ ッ ト の 新 し い オ フ セ ッ ト と し 、 こ れ は TCP ヘ ッ ダ ー の 先 頭 で あ る 。 TCP ヘ ッ ダ ー 長 (こ れ も 32 ビ ッ ト ワ ー ド ) は TCP ヘ ッ ダ ー の バ イ ト 12 の 左 半 分 に あ る 。 12>>26&3C で TCP ヘ ッ ダ ー の バ イ ト 数 を 計 算 す る (IP ヘ ッ ダ ー の 場 合 と 同 様 )。 "@" を 使 っ て こ れ を 新 し い オ フ セ ッ ト に 設 定 す る 。 こ の 時 点 で TCP ペ イ ロ ー ド の 先 頭 を 指 し て い る 。 最 後 に 、 8 で ペ イ ロ ー ド の バ イ ト 8−12 を 読 み 出 し 、 = を 使 っ て 取 り 出 し た 値 が 1, 2, 5, 8 の い ず れ か で あ る か チ ェ ッ ク す る 。

udp こ れ ら の 拡 張 は ’−−protocol udp’ が 指 定 さ れ た 場 合 に 利 用 で き る 。 以 下 の オ プ シ ョ ン が 提 供 さ れ る 。
[!] −−source−port,−−sport port[:port] 送 信 元 ポ ー ト ま た は ポ ー ト 範 囲 の 指 定 。 詳 細 は TCP 拡 張 の −−source−port オ プ シ ョ ン の 説 明 を 参 照 す る こ と 。
[!] −−destination−port,−−dport port[:port] 宛 先 ポ ー ト ま た は ポ ー ト 範 囲 の 指 定 。 詳 細 は TCP 拡 張 の −−destination−port オ プ シ ョ ン の 説 明 を 参 照 す る こ と 。

unclean (IPv4 の 場 合 ) こ の モ ジ ュ ー ル に は オ プ シ ョ ン が な い が 、 お か し く 正 常 で な い よ う に 見 え る パ ケ ッ ト に マ ッ チ す る 。 こ れ は 実 験 的 な も の と し て 扱 わ れ て い る 。

タ ー ゲ ッ ト の 拡 張

iptables は 拡 張 タ ー ゲ ッ ト モ ジ ュ ー ル を 使 う こ と が で き る : 以 下 の も の が 、 標 準 的 な デ ィ ス ト リ ビ ュ ー シ ョ ン に 含 ま れ て い る 。

AUDIT こ の タ ー ゲ ッ ト を 使 う と 、 こ の タ ー ゲ ッ ト に ヒ ッ ト し た パ ケ ッ ト に 対 す る 監 査 (audit) レ コ ー ド を 作 成 す る こ と が で き る 。 許 可 /廃 棄 /拒 否 さ れ た パ ケ ッ ト を 記 録 す る の に 使 用 で き る 。 詳 細 に つ い て は auditd(8) を 参 照 。
−−type
{accept|drop|reject} 監 査 レ コ ー ド 種 別 を 設 定 す る 。 例 :

iptables −N AUDIT_DROP

iptables −A AUDIT_DROP −j AUDIT −−type drop

iptables −A AUDIT_DROP −j DROP

CHECKSUM こ の タ ー ゲ ッ ト は 、 お か し い ア プ リ ケ ー シ ョ ン や 古 い ア プ リ ケ ー シ ョ ン に 対 す る 選 択 的 な 対 処 を 可 能 に す る 。 mangle テ ー ブ ル で の み 使 用 で き る 。
−−checksum−fill

Compute and fill in the checksum in a packet that lacks a checksum. This is particularly useful, if you need to work around old applications such as dhcp clients, that do not work well with checksum offloads, but don’t want to disable checksum offload in your device.

CLASSIFY こ の モ ジ ュ ー ル を 使 う と skb−>priority の 値 を 設 定 で き る (そ の 結 果 、 そ の パ ケ ッ ト を 特 定 の CBQ ク ラ ス に 分 類 で き る )。
−−set−class
major:minor メ ジ ャ ー ク ラ ス と マ イ ナ ー ク ラ ス の 値 を 設 定 す る 。 値 は 常 に 16 進 数 と し て 解 釈 さ れ る 。 0x が 前 に 付 い て い な い 場 合 で あ っ て も 16 進 数 と 解 釈 さ れ る 。

CLUSTERIP (IPv4 の 場 合 ) こ の モ ジ ュ ー ル を 使 う と 、 ノ ー ド の 前 段 に 明 示 的 に 負 荷 分 散 装 置 を 置 か ず に 、 特 定 の IP ア ド レ ス と MAC ア ド レ ス を 共 有 す る ノ ー ド の 簡 単 な ク ラ ス タ ー を 構 成 す る こ と が で き る 。 コ ネ ク シ ョ ン は 、 こ の ク ラ ス タ ー の ノ ー ド 間 で 静 的 に 分 散 さ れ る 。

−−new 新 し い

ClusterIP を 作 成 す る 。 こ の オ プ シ ョ ン は 、 こ こ で 指 定 す る

ClusterIP を 使 う ル ー ル の 中 で 一 番 最 初 に 設 定 し な け れ ば な ら な い 。

−−hashmode mode ハ ッ シ ュ モ ー ド を 指 定 す る 。 sourceip, sourceip−sourceport, sourceip−sourceport−destport の い ず れ か で な け れ ば な ら な い 。
−−clustermac
mac

ClusterIP の MAC ア ド レ ス を 指 定 す る 。 リ ン ク 層 の マ ル チ キ ャ ス ト ア ド レ ス で な け れ ば な ら な い 。

−−total−nodes num こ の ク ラ ス タ ー の 総 ノ ー ド 数 。
−−local−node
num こ の ク ラ ス タ ー の ロ ー カ ル ノ ー ド 番 号 。
−−hash−init
rnd ハ ッ シ ュ の 初 期 化 に 使 用 さ れ る 乱 数 シ ー ド 値 を 指 定 す る 。

CONNMARK こ の モ ジ ュ ー ル は 、 コ ネ ク シ ョ ン に 関 連 付 け ら れ た netfilter の mark 値 を 設 定 す る 。 mark は 32 ビ ッ ト 幅 で あ る 。
−−set−xmark
value[/mask]

mask で 指 定 さ れ た ビ ッ ト を 0 に し 、 value と ctmark の XOR を 取 る 。

−−save−mark [−−nfmask nfmask] [−−ctmask ctmask] 指 定 さ れ た マ ス ク を 使 っ て 、 パ ケ ッ ト マ ー ク (nfmark) を コ ネ ク シ ョ ン マ ー ク (ctmark) に コ ピ ー す る 。 新 し い ctmark 値 は 以 下 の よ う に 決 定 さ れ る 。

ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask)

ctmask は ど の ビ ッ ト を ク リ ア す る か を 規 定 し 、 nfmask は nfmark の ど の ビ ッ ト を ctmark と XOR す る か を 規 定 す る 。 ctmasknfmask の デ フ ォ ル ト 値 は 0xFFFFFFFF で あ る 。

−−restore−mark [−−nfmask nfmask] [−−ctmask ctmask] 指 定 さ れ た マ ス ク を 使 っ て 、 コ ネ ク シ ョ ン マ ー ク (ctmark) を パ ケ ッ ト マ ー ク (nfmark) に コ ピ ー す る 。 新 し い nfmark 値 は 以 下 の よ う に 決 定 さ れ る 。

nfmark = (nfmark & ~nfmask) ^ (ctmark & ctmask);

nfmask は ど の ビ ッ ト を ク リ ア す る か を 規 定 し 、 ctmask は ctmark の ど の ビ ッ ト を nfmark と XOR す る か を 規 定 す る 。 ctmasknfmask の デ フ ォ ル ト 値 は 0xFFFFFFFF で あ る 。

−−restore−markmangle テ ー ブ ル で の み 有 効 で あ る 。 以 下 の 簡 易 表 現 が −−set−xmark の 代 わ り に 利 用 で き る 。

−−and−mark bits

ctmark と bits の ビ ッ ト 論 理 積 (AND) を 取 る (−−set−xmark 0/invbits の 簡 易 表 現 、 invbitsbits の ビ ッ ト 単 位 の 否 定 で あ る )。

−−or−mark bits

ctmark と bits の ビ ッ ト 論 理 和 (OR) を 取 る (−−set−xmark bits/bits の 簡 易 表 現 )。

−−xor−mark bits

ctmark と bits の ビ ッ ト XOR を 取 る (−−set−xmark bits/0 の 簡 易 表 現 )。

−−set−mark value[/mask] コ ネ ク シ ョ ン マ ー ク を 設 定 す る 。 mask が 指 定 さ れ た 場 合 、 mask で 指 定 さ れ た ビ ッ ト だ け が 変 更 さ れ る 。
−−save−mark
[−−mask mask]

nfmark を ctmark へ コ ピ ー す る 。 mask が 指 定 さ れ た 場 合 、 そ の ビ ッ ト だ け が コ ピ ー さ れ る 。

−−restore−mark [−−mask mask]

ctmark を nfmark に コ ピ ー す る 。 mask が 指 定 さ れ る と 、 指 定 さ れ た ビ ッ ト だ け が コ ピ ー さ れ る 。 mangle テ ー ブ ル の み で 有 効 で あ る 。

CONNSECMARK
This module copies security markings from packets to connections (if unlabeled), and from connections back to packets (also only if unlabeled). Typically used in conjunction with SECMARK, it is valid in the security table (for backwards compatibility with older kernels, it is also valid in the mangle table).

−−save

If the packet has a security marking, copy it to the connection if the connection is not marked.

−−restore

If the packet does not have a security marking, and the connection does, copy the security marking from the connection to the packet.

CT
The CT target allows to set parameters for a packet or its associated connection. The target attaches a "template" connection tracking entry to the packet, which is then used by the conntrack core when initializing a new ct entry. This target is thus only valid in the "raw" table.
−−notrack
こ の パ ケ ッ ト に 対 す る コ ネ ク シ ョ ン 追 跡 を 無 効 に す る 。
−−helper
name

name で 指 定 さ れ る ヘ ル パ ー を こ の コ ネ ク シ ョ ン で 使 用 す る 。 こ の 方 法 は 、 あ ら か じ め 設 定 し た ポ ー ト に 対 し て conntrack ヘ ル パ ー モ ジ ュ ー ル を ロ ー ド す る よ り も 柔 軟 性 が あ る 。

−−ctevents event[,...]

Only generate the specified conntrack events for this connection. Possible event types are: new, related, destroy, reply, assured, protoinfo, helper, mark (this refers to the ctmark, not nfmark), natseqinfo, secmark (ctsecmark).

−−expevents event[,...]

Only generate the specified expectation events for this connection. Possible event types are: new.

−−zone id

Assign this packet to zone id and only have lookups done in that zone. By default, packets have zone 0.

−−timeout name

Use the timeout policy identified by name for the connection. This is provides more flexible timeout policy definition than global timeout values available at /proc/sys/net/netfilter/nf_conntrack_*_timeout_*.

DNAT こ の タ ー ゲ ッ ト は nat テ ー ブ ル の PREROUTING, OUTPUT チ ェ イ ン 、 こ れ ら の チ ェ イ ン か ら 呼 び 出 さ れ る ユ ー ザ ー 定 義 チ ェ イ ン の み で 有 効 で あ る 。 こ の タ ー ゲ ッ ト は パ ケ ッ ト の 宛 先 ア ド レ ス を 修 正 す る (こ の コ ネ ク シ ョ ン の 以 降 の パ ケ ッ ト も 修 正 し て 分 か ら な く (mangle) す る )。 さ ら に 、 ル ー ル に よ る チ ェ ッ ク を 止 め さ せ る 。 こ の タ ー ゲ ッ ト は 以 下 の オ プ シ ョ ン を 取 る 。
−−to−destination
[ipaddr[ipaddr]][:port[port]]

1 つ の 新 し い 宛 先 IP ア ド レ ス 、 ま た は IP ア ド レ ス の 範 囲 が 指 定 で き る 。 ま た 、 ル ー ル で プ ロ ト コ ル と し て tcp, udp, dccp, sctp の い ず れ が 指 定 さ れ て い る 場 合 は 、 ポ ー ト の 範 囲 を 指 定 す る こ と も で き る 。 ポ ー ト の 範 囲 が 指 定 さ れ て い な い 場 合 、 宛 先 ポ ー ト は 変 更 さ れ な い 。 IP ア ド レ ス が 指 定 さ れ な か っ た 場 合 は 、 宛 先 ポ ー ト だ け が 変 更 さ れ る 。 2.6.10 以 前 の カ ー ネ ル で は 、 複 数 の −−to−destination オ プ シ ョ ン を 指 定 す る こ と が で き る 。 こ れ ら の カ ー ネ ル で は 、 ア ド レ ス の 範 囲 指 定 や −−to−destination オ プ シ ョ ン の 複 数 回 指 定 に よ り 2 つ 以 上 の 宛 先 ア ド レ ス を 指 定 し た 場 合 、 そ れ ら の ア ド レ ス を 使 っ た 単 純 な ラ ウ ン ド ロ ビ ン に よ る 負 荷 分 散 が 行 わ れ る 。 そ れ 以 降 の カ ー ネ ル (>= 2.6.11−rc1) に は 複 数 の 範 囲 を NAT す る 機 能 は 存 在 し な い 。

−−random

−−random オ プ シ ョ ン を 使 用 す る と 、 ポ ー ト マ ッ ピ ン グ が ラ ン ダ ム 化 さ れ る (カ ー ネ ル 2.6.22 以 降 )。

−−persistent ク ラ イ ア ン ト の 各 コ ネ ク シ ョ ン に 同 じ 送 信 元 ア ド レ ス /宛 先 ア ド レ ス を 割 り 当 て る 。 こ れ は SAME タ ー ゲ ッ ト よ り も 優 先 さ れ る 。 persistent マ ッ ピ ン グ の サ ポ ー ト は 2.6.29−rc2 以 降 で 利 用 可 能 で あ る 。
IPv6 サ ポ ー ト は Linux カ ー ネ ル 3.7 以 降 で 利 用 可 能 で あ る 。

DNPT (IPv6 の み )
(RFC 6296 で 説 明 さ れ て い る ) ス テ ー ト レ ス IPv6−to−IPv6 宛 先 ネ ッ ト ワ ー ク プ レ フ ィ ッ ク ス 変 換 を 提 供 す る 。 こ の タ ー ゲ ッ ト は nat テ ー ブ ル で は な く mangle テ ー ブ ル で 使 わ な け れ ば な ら な い 。 以 下 の オ プ シ ョ ン を 取 る 。
−−src−pfx
[prefix/length] 変 換 を 行 う 送 信 元 プ レ フ ィ ッ ク ス と そ の 長 さ を 設 定 す る 。
−−dst−pfx
[prefix/length] 変 換 を 行 う 宛 先 プ レ フ ィ ッ ク ス と そ の 長 さ を 設 定 す る 。 変 換 を 取 り 消 す に は SNPT タ ー ゲ ッ ト を 使 わ な け れ ば な ら な い 。 例 :

ip6tables −t mangle −I POSTROUTING −s fd00::/64 −o vboxnet0 −j SNPT −−src−pfx fd00::/64 −−dst−pfx 2001:e20:2000:40f::/64

ip6tables −t mangle −I PREROUTING −i wlan0 −d 2001:e20:2000:40f::/64 −j DNPT −−src−pfx 2001:e20:2000:40f::/64 −−dst−pfx fd00::/64

IPv6 neighbor proxy を 有 効 に す る 必 要 が あ る か も し れ な い 。

sysctl −w net.ipv6.conf.all.proxy_ndp=1 ま た 、 変 換 さ れ た フ ロ ー に 対 す る コ ネ ク シ ョ ン 追 跡 を 無 効 に す る に は NOTRACK タ ー ゲ ッ ト を 使 用 す る 必 要 が あ る 。

DSCP こ の タ ー ゲ ッ ト は 、 IPv4 パ ケ ッ ト の TOS ヘ ッ ダ ー に あ る DSCP ビ ッ ト の 値 の 書 き 換 え を 可 能 に す る 。 こ れ は パ ケ ッ ト を 操 作 す る の で 、 mangle テ ー ブ ル で の み 使 用 で き る 。
−−set−dscp
value

DSCP フ ィ ー ル ド の 数 値 を 設 定 す る (10 進 ま た は 16 進 )。

−−set−dscp−class class

DSCP フ ィ ー ル ド の DiffServ ク ラ ス を 設 定 す る 。

ECN (IPv4 の 場 合 ) こ の タ ー ゲ ッ ト は ECN ブ ラ ッ ク ホ ー ル 問 題 へ の 対 処 を 可 能 に す る 。 mangle テ ー ブ ル で の み 使 用 で き る 。
−−ecn−tcp−remove

TCP ヘ ッ ダ ー か ら 全 て の ECN ビ ッ ト (訳 注 : ECE/CWR フ ラ グ ) を 取 り 除 く 。 当 然 、 −p tcp オ プ シ ョ ン と の 組 合 わ せ で の み 使 用 で き る 。

HL (IPv6 の み ) こ の タ ー ゲ ッ ト を 使 う と IPv6 ヘ ッ ダ ー の Hop Limit フ ィ ー ル ド を 変 更 す る こ と が で き る 。 Hop Limit フ ィ ー ル ド は IPv4 の TTL 値 と 同 じ よ う な も の で あ る 。 Hop Limit フ ィ ー ル ド を 設 定 し た り 増 や す の は 、 危 険 性 を 非 常 に は ら ん で い る 。 し た が っ て 、 可 能 な 限 り 避 け る べ き で あ る 。 こ の タ ー ゲ ッ ト は mangle テ ー ブ ル で の み 有 効 で あ る 。 決 し て ロ ー カ ル ネ ッ ト ワ ー ク 内 に 留 ま る パ ケ ッ ト の フ ィ ー ル ド 値 を 設 定 し た り 増 や し た り し な い こ と !
−−hl−set
value

Hop Limit を ’value’ に 設 定 す る 。

−−hl−dec value

Hop Limit を ’value’ 回 減 算 す る 。

−−hl−inc value

Hop Limit を ’value’ 回 加 算 す る 。

HMARK
Like MARK, i.e. set the fwmark, but the mark is calculated from hashing packet selector at choice. You have also to specify the mark range and, optionally, the offset to start from. ICMP error messages are inspected and used to calculate the hashing.

Existing options are:
−−hmark−tuple
tuple

Possible tuple members are: src meaning source address (IPv4, IPv6 address), dst meaning destination address (IPv4, IPv6 address), sport meaning source port (TCP, UDP, UDPlite, SCTP, DCCP), dport meaning destination port (TCP, UDP, UDPlite, SCTP, DCCP), spi meaning Security Parameter Index (AH, ESP), and ct meaning the usage of the conntrack tuple instead of the packet selectors.

−−hmark−mod value (must be > 0)

Modulus for hash calculation (to limit the range of possible marks)

−−hmark−offset value

Offset to start marks from.

For advanced usage, instead of using −−hmark−tuple, you can specify
custom

prefixes and masks:

−−hmark−src−prefix cidr

The source address mask in CIDR notation.

−−hmark−dst−prefix cidr

The destination address mask in CIDR notation.

−−hmark−sport−mask value

A 16 bit source port mask in hexadecimal.

−−hmark−dport−mask value

A 16 bit destination port mask in hexadecimal.

−−hmark−spi−mask value

A 32 bit field with spi mask.

−−hmark−proto−mask value

An 8 bit field with layer 4 protocol number.

−−hmark−rnd value

A 32 bit random custom value to feed hash calculation. :

iptables −t mangle −A PREROUTING −m conntrack −−ctstate NEW
−j HMARK −−hmark−tuple ct,src,dst,proto −−hmark−offset 10000 −−hmark−mod 10 −−hmark−rnd 0xfeedcafe

iptables −t mangle −A PREROUTING −j HMARK −−hmark−offset 10000 −−hmark−tuple src,dst,proto −−hmark−mod 10 −−hmark−rnd 0xdeafbeef

IDLETIMER
This target can be used to identify when interfaces have been idle for a certain period of time. Timers are identified by labels and are created when a rule is set with a new label. The rules also take a timeout value (in seconds) as an option. If more than one rule uses the same timer label, the timer will be restarted whenever any of the rules get a hit. One entry for each timer is created in sysfs. This attribute contains the timer remaining for the timer to expire. The attributes are located under the xt_idletimer class:

/sys/class/xt_idletimer/timers/<label>

When the timer expires, the target module sends a sysfs notification to the userspace, which can then decide what to do (eg. disconnect to save power).
−−timeout
amount

This is the time in seconds that will trigger the notification.

−−label string

This is a unique identifier for the timer. The maximum length for the label string is 27 characters.

LED
This creates an LED−trigger that can then be attached to system indicator lights, to blink or illuminate them when certain packets pass through the system. One example might be to light up an LED for a few minutes every time an SSH connection is made to the local machine. The following options control the trigger behavior:
−−led−trigger−id
name

This is the name given to the LED trigger. The actual name of the trigger will be prefixed with "netfilter−".

−−led−delay ms

This indicates how long (in milliseconds) the LED should be left illuminated when a packet arrives before being switched off again. The default is 0 (blink as fast as possible.) The special value inf can be given to leave the LED on permanently once activated. (In this case the trigger will need to be manually detached and reattached to the LED device to switch it off again.)

−−led−always−blink

Always make the LED blink on packet arrival, even if the LED is already on. This allows notification of new packets even with long delay values (which otherwise would result in a silent prolonging of the delay time.)

例 :

Create an LED trigger for incoming SSH traffic:

iptables −A INPUT −p tcp −−dport 22 −j LED −−led−trigger−id ssh

Then attach the new trigger to an LED:

echo netfilter−ssh >/sys/class/leds/ledname/trigger

LOG マ ッ チ し た パ ケ ッ ト を カ ー ネ ル ロ グ に 記 録 す る 。 こ の オ プ シ ョ ン が ル ー ル に 対 し て 設 定 さ れ る と 、 Linux カ ー ネ ル は マ ッ チ し た パ ケ ッ ト に つ い て の 何 ら か の 情 報 (多 く の IP/IPv6 ヘ ッ ダ ー フ ィ ー ル ド な ど ) を カ ー ネ ル ロ グ に 表 示 す る (カ ー ネ ル ロ グ は dmesg(1) や syslog で 参 照 で き る )。 こ れ は "非 終 了 タ ー ゲ ッ ト " で あ る 。 す な わ ち 、 ル ー ル の 探 索 は 次 の ル ー ル へ と 継 続 さ れ る 。 よ っ て 、 拒 否 す る パ ケ ッ ト を ロ グ 記 録 し た け れ ば 、 同 じ マ ッ チ ン グ 判 断 基 準 を 持 つ 2 つ の ル ー ル を 使 用 し 、 最 初 の ル ー ル で LOG タ ー ゲ ッ ト を 、 次 の ル ー ル で DROP (ま た は REJECT) タ ー ゲ ッ ト を 指 定 す る 。
−−log−level
level ロ ギ ン グ レ ベ ル 。 (シ ス テ ム 固 有 の ) 数 値 か シ ン ボ ル 名 を 指 定 す る 。 指 定 で き る 値 は (優 先 度 が 高 い 順 に ) emerg, alert, crit, error, warning, notice, info, debug で あ る 。
−−log−prefix
prefix 指 定 し た プ レ フ ィ ッ ク ス を ロ グ メ ッ セ ー ジ の 前 に 付 け る 。 プ レ フ ィ ッ ク ス は 29 文 字 ま で の 長 さ で 、 ロ グ の 中 で メ ッ セ ー ジ を 区 別 す る の に 役 立 つ 。
−−log−tcp−sequence

TCP シ ー ケ ン ス 番 号 を ロ グ に 記 録 す る 。 ロ グ が ユ ー ザ ー か ら 読 め る 場 合 、 セ キ ュ リ テ ィ 上 の 危 険 が あ る 。

−−log−tcp−options

TCP パ ケ ッ ト ヘ ッ ダ ー の オ プ シ ョ ン を ロ グ に 記 録 す る 。

−−log−ip−options

IP/IPv6 パ ケ ッ ト ヘ ッ ダ ー の オ プ シ ョ ン を ロ グ に 記 録 す る 。

−−log−uid パ ケ ッ ト を 生 成 し た プ ロ セ ス の ユ ー ザ ー ID を ロ グ に 記 録 す る 。

MARK こ の タ ー ゲ ッ ト を 使 う と 、 そ の パ ケ ッ ト に 関 連 付 け ら れ る Netfilter マ ー ク 値 を 設 定 す る 。 例 え ば 、 fwmark に 基 づ く ル ー テ ィ ン グ (iproute2 が 必 要 ) と 組 み 合 わ せ て 使 う こ と が で き る 。 そ う す る 場 合 に は 、 ル ー テ ィ ン グ 時 に 考 慮 さ れ る よ う に す る に は 、 mangle テ ー ブ ル の PREROUTING チ ェ イ ン で マ ー ク を 設 定 す る 必 要 が あ る 。 マ ー ク フ ィ ー ル ド は 32 ビ ッ ト 幅 で あ る 。
−−set−xmark
value[/mask]

mask で 指 定 さ れ た ビ ッ ト を 0 に し 、 value と packet mark ("nfmark") の XOR を 取 る 。 mask が 省 略 さ れ た 場 合 は 0xFFFFFFFF と み な さ れ る 。

−−set−mark value[/mask]

mask で 指 定 さ れ た ビ ッ ト を 0 に し 、 value と packet mark の OR を 取 る 。 mask が 省 略 さ れ た 場 合 は 0xFFFFFFFF と み な さ れ る 。 以 下 の 簡 易 表 現 が 利 用 で き る 。

−−and−mark bits

nfmark と bits の ビ ッ ト 論 理 積 (AND) を 取 る (−−set−xmark 0/invbits の 簡 易 表 現 、 invbitsbits の ビ ッ ト 単 位 の 否 定 で あ る )。

−−or−mark bits

nfmark と bits の ビ ッ ト 論 理 和 (OR) を 取 る (−−set−xmark bits/bits の 簡 易 表 現 )。

−−xor−mark bits

nfmark と bits の ビ ッ ト XOR を 取 る (−−set−xmark bits/0 の 簡 易 表 現 )。

MASQUERADE こ の タ ー ゲ ッ ト は nat テ ー ブ ル の POSTROUTING チ ェ イ ン の み で 有 効 で あ る 。 動 的 割 り 当 て IP (ダ イ ヤ ル ア ッ プ ) コ ネ ク シ ョ ン の 場 合 に の み 使 う べ き で あ る 。 固 定 IP ア ド レ ス な ら ば 、 SNAT タ ー ゲ ッ ト を 使 う べ き で あ る 。 マ ス カ レ ー デ ィ ン グ は 、 パ ケ ッ ト が 送 信 さ れ る イ ン タ ー フ ェ ー ス の IP ア ド レ ス へ の マ ッ ピ ン グ を 指 定 す る の と 同 じ で あ る が 、 イ ン タ ー フ ェ ー ス が 停 止 し た 場 合 に コ ネ ク シ ョ ン を 忘 れ る と い う 効 果 が あ る 。 次 の ダ イ ヤ ル ア ッ プ で は 同 じ イ ン タ ー フ ェ ー ス ア ド レ ス に な る 可 能 性 が 低 い (そ の た め 、 前 回 確 立 さ れ た コ ネ ク シ ョ ン は 失 わ れ る ) 場 合 、 こ の 動 作 は 正 し い 。
−−to−ports
port[port] こ の オ プ シ ョ ン は 、 使 用 す る 送 信 元 ポ ー ト の 範 囲 を 指 定 し 、 デ フ ォ ル ト の SNAT 送 信 元 ポ ー ト の 選 択 方 法 (上 記 ) よ り も 優 先 さ れ る 。 ル ー ル が プ ロ ト コ ル と し て tcp, udp, dccp, sctp を 指 定 し て い る 場 合 に の み 有 効 で あ る 。
−−random
送 信 元 ポ ー ト の マ ッ ピ ン グ を ラ ン ダ ム 化 す る 。 −−random オ プ シ ョ ン を 使 用 す る と 、 ポ ー ト マ ッ ピ ン グ が ラ ン ダ ム 化 さ れ る (カ ー ネ ル 2.6.21 以 降 )。
IPv6 サ ポ ー ト は Linux カ ー ネ ル 3.7 以 降 で 利 用 可 能 で あ る 。

MIRROR (IPv4 の 場 合 ) 実 験 的 な デ モ ン ス ト レ ー シ ョ ン 用 の タ ー ゲ ッ ト で あ り 、 IP ヘ ッ ダ ー の 送 信 元 と 宛 先 フ ィ ー ル ド を 入 れ 換 え 、 パ ケ ッ ト を 再 送 信 す る も の で あ る 。 こ れ は INPUT, FORWARD, PREROUTING チ ェ イ ン と 、 こ れ ら の チ ェ イ ン か ら 呼 び 出 さ れ る ユ ー ザ ー 定 義 チ ェ イ ン だ け で 有 効 で あ る 。 ル ー プ 等 の 問 題 を 回 避 す る た め 、 外 部 に 送 ら れ る パ ケ ッ ト は い か な る パ ケ ッ ト フ ィ ル タ リ ン グ チ ェ イ ン ・ コ ネ ク シ ョ ン 追 跡 ・ NAT か ら も 監 視 さ れ な い

NETMAP こ の タ ー ゲ ッ ト を 使 う と 、 あ る ア ド レ ス ネ ッ ト ワ ー ク 全 体 を 別 の ネ ッ ト ワ ー ク ア ド レ ス に 静 的 に マ ッ ピ ン グ で き る 。 こ の タ ー ゲ ッ ト は nat テ ー ブ ル で ル ー ル で の み 使 用 で き る 。
−−to
address[/mask] マ ッ ピ ン グ 先 の ネ ッ ト ワ ー ク ア ド レ ス 。 変 換 後 の ア ド レ ス は 以 下 の よ う に し て 構 築 さ れ る 。 mask で ’1’ に な っ て い る ビ ッ ト は 新 し い ア ド レ ス が 使 わ れ 、 mask で ’0’ に な っ て い る ビ ッ ト は 元 の ア ド レ ス が 使 わ れ る 。
IPv6 サ ポ ー ト は Linux カ ー ネ ル 3.7 以 降 で 利 用 可 能 で あ る 。

NFLOG こ の タ ー ゲ ッ ト は 、 マ ッ チ し た パ ケ ッ ト を ロ グ に 記 録 す る 機 能 を 提 供 す る 。 こ の タ ー ゲ ッ ト が ル ー ル に 設 定 さ れ る と 、 Linux カ ー ネ ル は そ の ロ グ に 記 録 す る た め に そ の パ ケ ッ ト を ロ ー ド さ れ た ロ ギ ン グ バ ッ ク エ ン ド に 渡 す 。 こ の タ ー ゲ ッ ト は 通 常 は nfnetlink_log を ロ ギ ン グ バ ッ ク エ ン ド と し て 使 う 組 み 合 わ せ で 使 用 さ れ る 。 nfnetlink_log は そ の パ ケ ッ ト を netlink ソ ケ ッ ト 経 由 で 指 定 さ れ た マ ル チ キ ャ ス ト グ ル ー プ に マ ル チ キ ャ ス ト す る 。 1 つ 以 上 の ユ ー ザ ー 空 間 プ ロ セ ス が マ ル チ キ ャ ス ト グ ル ー プ を 購 読 し パ ケ ッ ト を 受 信 す る こ と が で き る 。 LOG と 同 様 に 、 こ の タ ー ゲ ッ ト は 非 終 了 タ ー ゲ ッ ト で あ り 、 ル ー ル の 探 索 は 次 の ル ー ル へ と 継 続 さ れ る 。
−−nflog−group
nlgroup パ ケ ッ ト を 送 信 す る netlink グ ル ー プ (0 − 2^16−1) を 指 定 す る (nfnetlink_log の 場 合 の み 利 用 で き る )。 デ フ ォ ル ト の 値 は 0 で あ る 。
−−nflog−prefix
prefix ロ グ メ ッ セ ー ジ の 前 に 付 け る プ レ フ ィ ッ ク ス 文 字 列 。 最 大 64 文 字 ま で の 指 定 で き る 。 ロ グ の 中 で メ ッ セ ー ジ を 区 別 す る の に 役 に 立 つ 。
−−nflog−range
size ユ ー ザ ー 空 間 に コ ピ ー す る バ イ ト 数 (nfnetlink_log の 場 合 の み 利 用 で き る )。 nfnetlink_log の イ ン ス タ ン ス は 自 身 で コ ピ ー す る 範 囲 を 指 定 で き る が 、 こ の オ プ シ ョ ン は そ れ を 上 書 き す る 。
−−nflog−threshold
size ユ ー ザ ー 空 間 に パ ケ ッ ト を 送 信 す る 前 に 、 カ ー ネ ル 内 部 の キ ュ ー に 入 れ る パ ケ ッ ト 数 (nfnetlink_log の 場 合 の み 利 用 で き る )。 大 き め の 値 を 指 定 す る ほ ど パ ケ ッ ト 単 位 の オ ー バ ヘ ッ ド は 少 な く な る が 、 パ ケ ッ ト が ユ ー ザ ー 空 間 に 届 く ま で の 遅 延 が 大 き く な る 。 デ フ ォ ル ト 値 は 1 で あ る 。

NFQUEUE こ の タ ー ゲ ッ ト は 、 nfnetlink_queue ハ ン ド ラ ー を 使 っ て そ の パ ケ ッ ト を ユ ー ザ ー 空 間 に 渡 す 。 パ ケ ッ ト は 16 ビ ッ ト の キ ュ ー 番 号 で 指 定 さ れ た キ ュ ー に 入 れ ら れ る 。 ユ ー ザ ー 空 間 で は 好 き な よ う に パ ケ ッ ト を 検 査 し 変 更 で き る 。 ユ ー ザ ー 空 間 側 で は 、 必 ず そ の パ ケ ッ ト を 破 棄 す る か カ ー ネ ル に 戻 す か の ど ち ら か を し な け れ ば な ら な い 。 詳 細 は libnetfilter_queue を 参 照 の こ と 。 nfnetlink_queue は Linux 2.6.14 で 追 加 さ れ た 。 queue−balance オ プ シ ョ ン は Linux 2.6.31 で 、 queue−bypass は Linux 2.6.39 で 追 加 さ れ た 。
−−queue−num
value 使 用 す る QUEUE 番 号 を 指 定 す る 。 有 効 な キ ュ ー 番 号 は 0 か ら 65535 で あ る 。 デ フ ォ ル ト は 0 で あ る 。
−−queue−balance
value:value 使 用 す る キ ュ ー の 範 囲 を 指 定 す る 。 パ ケ ッ ト は 指 定 さ れ た 範 囲 の キ ュ ー に 分 散 さ れ る 。 こ れ は マ ル チ コ ア シ ス テ ム で 有 用 で あ る 。 ユ ー ザ ー 空 間 プ ロ グ ラ ム の 複 数 イ ン ス タ ン ス を キ ュ ー x, x+1, .. x+n で 開 始 し 、 "−−queue−balance x:x+n" を 使 用 す る 。 同 じ コ ネ ク シ ョ ン に 所 属 す る パ ケ ッ ト は 同 じ nfqueue に 入 れ ら れ る 。
−−queue−bypass
デ フ ォ ル ト で は 、 ど の ユ ー ザ ー 空 間 プ ロ グ ラ ム も NFQUEUE を リ ッ ス ン し て い な い 場 合 、 キ ュ ー さ れ る は ず の す べ て の パ ケ ッ ト が 破 棄 さ れ る 。 こ の オ プ シ ョ ン を 使 う と 、 NFQUEUE ル ー ル は ACCEPT の よ う な 動 作 と な り 、 パ ケ ッ ト は 次 の テ ー ブ ル に 進 む 。
−−queue−cpu−fanout

Linux カ ー ネ ル 3.10 以 降 で 利 用 可 能 。 −−queue−balance と と も に 使 用 さ れ る と 、 こ の オ プ シ ョ ン は パ ケ ッ ト を キ ュ ー に マ ッ ピ ン グ す る 際 の イ ン デ ッ ク ス と し て CPU ID を 使 用 す る 。 こ れ は 、 CPU ご と に キ ュ ー が あ る 場 合 に 性 能 を 向 上 さ せ よ う と い う も の で あ る 。 こ の オ プ シ ョ ン を 使 う に は −−queue−balance を 指 定 す る 必 要 が あ る 。

NOTRACK こ の タ ー ゲ ッ ト を 使 う と 、 そ の ル ー ル に マ ッ チ し た 全 て の パ ケ ッ ト で コ ネ ク シ ョ ン 追 跡 が 無 効 に な る 。 こ れ は −j CT −−notrack と 等 価 で あ る 。 CT と 同 様 、 NOTRACK は raw テ ー ブ ル で の み 使 用 で き る 。

RATEEST
The RATEEST target collects statistics, performs rate estimation calculation and saves the results for later evaluation using the rateest match.
−−rateest−name
name

Count matched packets into the pool referred to by name, which is freely choosable.

−−rateest−interval amount{s|ms|us}

Rate measurement interval, in seconds, milliseconds or microseconds.

−−rateest−ewmalog value

Rate measurement averaging time constant.

REDIRECT こ の タ ー ゲ ッ ト は 、 nat テ ー ブ ル の PREROUTING チ ェ イ ン と OUTPUT チ ェ イ ン 、 お よ び こ れ ら チ ェ イ ン か ら 呼 び 出 さ れ る ユ ー ザ ー 定 義 チ ェ イ ン で の み 有 効 で あ る 。 こ の タ ー ゲ ッ ト は 、 宛 先 IP を パ ケ ッ ト を 受 信 し た イ ン タ フ ェ ー ス の 最 初 の ア ド レ ス に 変 更 す る こ と で 、 パ ケ ッ ト を そ の マ シ ン 自 身 に リ ダ イ レ ク ト す る (ロ ー カ ル で 生 成 さ れ た パ ケ ッ ト は ロ ー カ ル ホ ス ト の ア ド レ ス 、 IPv4 で は 127.0.0.1、 IPv6 で は ::1 に マ ッ プ さ れ る )。
−−to−ports
port[port] こ の オ プ シ ョ ン は 使 用 さ れ る 宛 先 ポ ー ト ・ ポ ー ト 範 囲 ・ 複 数 ポ ー ト を 指 定 す る 。 こ の オ プ シ ョ ン が 指 定 さ れ な い 場 合 、 宛 先 ポ ー ト は 変 更 さ れ な い 。 ル ー ル が プ ロ ト コ ル と し て tcp, udp, dccp, sctp を 指 定 し て い る 場 合 に の み 有 効 で あ る 。
−−random

−−random オ プ シ ョ ン を 使 用 す る と 、 ポ ー ト マ ッ ピ ン グ が ラ ン ダ ム 化 さ れ る (カ ー ネ ル 2.6.22 以 降 )。

IPv6 サ ポ ー ト は Linux カ ー ネ ル 3.7 以 降 で 利 用 可 能 で あ る 。

REJECT (IPv6 の み ) マ ッ チ し た パ ケ ッ ト の 応 答 と し て エ ラ ー パ ケ ッ ト を 送 信 す る た め に 使 わ れ る 。 エ ラ ー パ ケ ッ ト を 送 ら な け れ ば 、 DROP と 同 じ で あ り 、 TARGET を 終 了 し 、 ル ー ル の 探 索 を 終 了 す る 。 こ の タ ー ゲ ッ ト は 、 INPUT, FORWARD, OUTPUT チ ェ イ ン と 、 こ れ ら の チ ェ イ ン か ら 呼 ば れ る ユ ー ザ ー 定 義 チ ェ イ ン だ け で 有 効 で あ る 。 以 下 の オ プ シ ョ ン は 、 返 さ れ る エ ラ ー パ ケ ッ ト の 特 性 を 制 御 す る 。
−−reject−with
type 指 定 で き る タ イ プ は icmp6−no−route, no−route, icmp6−adm−prohibited, adm−prohibited, icmp6−addr−unreachable, addr−unreach, icmp6−port−unreachable で あ る 。 指 定 し た タ イ プ の 適 切 な IPv6 エ ラ ー メ ッ セ ー ジ が 返 さ れ る (icmp6−port−unreachable が デ フ ォ ル ト で あ る )。 さ ら に 、 TCP プ ロ ト コ ル に の み マ ッ チ す る ル ー ル に 対 し て 、 オ プ シ ョ ン tcp−reset を 使 う こ と が で き る 。 こ の オ プ シ ョ ン を 使 う と 、 TCP RST パ ケ ッ ト が 送 り 返 さ れ る 。 主 と し て ident (113/tcp) に よ る 探 査 を 阻 止 す る の に 役 立 つ 。 ident に よ る 探 査 は 、 壊 れ て い る (メ ー ル を 受 け 取 ら な い ) メ ー ル ホ ス ト に メ ー ル が 送 ら れ る 場 合 に 頻 繁 に 起 こ る 。 tcp−reset は バ ー ジ ョ ン 2.6.14 以 降 の カ ー ネ ル で の み 使 用 で き る 。

REJECT (IPv4 の 場 合 ) マ ッ チ し た パ ケ ッ ト の 応 答 と し て エ ラ ー パ ケ ッ ト を 送 信 す る た め に 使 わ れ る 。 エ ラ ー パ ケ ッ ト を 送 ら な け れ ば 、 DROP と 同 じ で あ り 、 TARGET を 終 了 し 、 ル ー ル の 探 索 を 終 了 す る 。 こ の タ ー ゲ ッ ト は 、 INPUT, FORWARD, OUTPUT チ ェ イ ン と 、 こ れ ら の チ ェ イ ン か ら 呼 ば れ る ユ ー ザ ー 定 義 チ ェ イ ン だ け で 有 効 で あ る 。 以 下 の オ プ シ ョ ン は 、 返 さ れ る エ ラ ー パ ケ ッ ト の 特 性 を 制 御 す る 。
−−reject−with
type 指 定 で き る タ イ プ は icmp−net−unreachable, icmp−host−unreachable, icmp−port−unreachable, icmp−proto−unreachable, icmp−net−prohibited, icmp−host−prohibited, icmp−admin−prohibited (*) で あ る 。 指 定 し た タ イ プ の 適 切 な ICMP エ ラ ー メ ッ セ ー ジ を 返 す (icmp−port−unreachable が デ フ ォ ル ト で あ る )。 TCP プ ロ ト コ ル に の み マ ッ チ す る ル ー ル に 対 し て 、 オ プ シ ョ ン tcp−reset を 使 う こ と が で き る 。 こ の オ プ シ ョ ン を 使 う と 、 TCP RST パ ケ ッ ト が 送 り 返 さ れ る 。 主 と し て ident (113/tcp) に よ る 探 査 を 阻 止 す る の に 役 立 つ 。 ident に よ る 探 査 は 、 壊 れ て い る (メ ー ル を 受 け 取 ら な い ) メ ー ル ホ ス ト に メ ー ル が 送 ら れ る 場 合 に 頻 繁 に 起 こ る 。

(*) icmp−admin−prohibited を サ ポ ー ト し な い カ ー ネ ル で 、 icmp−admin−prohibited を 使 用 す る と 、 REJECT で は な く 単 な る DROP に な る 。

SAME (IPv4 の 場 合 )
Similar to SNAT/DNAT depending on chain: it takes a range of addresses (’−−to 1.2.3.4−1.2.3.7’) and gives a client the same source−/destination−address for each connection.

N.B.: The DNAT target’s −−persistent option replaced the SAME target.
−−to
ipaddr[ipaddr]

Addresses to map source to. May be specified more than once for multiple ranges.

−−nodst

Don’t use the destination−ip in the calculations when selecting the new source−ip

−−random

Port mapping will be forcibly randomized to avoid attacks based on port prediction (kernel >= 2.6.21).

SECMARK
This is used to set the security mark value associated with the packet for use by security subsystems such as SELinux. It is valid in the security table (for backwards compatibility with older kernels, it is also valid in the mangle table). The mark is 32 bits wide.
−−selctx
security_context

SET こ の モ ジ ュ ー ル は ipsec(8) で 定 義 で き る IP 集 合 の エ ン ト リ の 追 加 、 削 除 、 そ の 両 方 を 行 う 。
−−add−set
setname flag[,flag...] 集 合 に 指 定 さ れ た ア ド レ ス /ポ ー ト (複 数 可 ) を 追 加 す る
−−del−set
setname flag[,flag...] 集 合 か ら 指 定 さ れ た ア ド レ ス /ポ ー ト (複 数 可 ) を 削 除 す る

flagsrcdst の 指 定 で あ り 、 指 定 で き る の は 6 個 ま で で あ る 。

−−timeout value エ ン ト リ を 追 加 す る 際 に 、 集 合 定 義 の デ フ ォ ル ト 値 で は な く 指 定 し た タ イ ム ア ウ ト 値 を 使 用 す る
−−exist
エ ン ト リ を 追 加 す る 際 に 、 エ ン ト リ が 存 在 す る 場 合 、 タ イ ム ア ウ ト 値 を 、 指 定 さ れ た 値 か 集 合 定 義 の デ フ ォ ル ト 値 に リ セ ッ ト す る

−j SET を 使 用 す る に は ipset の カ ー ネ ル サ ポ ー ト が 必 要 で あ る 。 標 準 の カ ー ネ ル で は 、 Linux 2.6.39 以 降 で 提 供 さ れ て い る 。

SNAT こ の タ ー ゲ ッ ト は nat テ ー ブ ル の POSTROUTING, INPUT チ ェ イ ン 、 こ れ ら の チ ェ イ ン か ら 呼 び 出 さ れ る ユ ー ザ ー 定 義 チ ェ イ ン の み で 有 効 で あ る 。 こ の タ ー ゲ ッ ト は パ ケ ッ ト の 送 信 元 ア ド レ ス を 修 正 す る (こ の コ ネ ク シ ョ ン の 以 降 の パ ケ ッ ト も 修 正 し て 分 か ら な く (mangle) す る )。 さ ら に 、 ル ー ル に よ る チ ェ ッ ク を 止 め さ せ る 。 こ の タ ー ゲ ッ ト に は 以 下 の オ プ シ ョ ン が あ る :
−−to−source
[ipaddr[ipaddr]][:port[port]]

1 つ の 新 し い 送 信 元 IP ア ド レ ス 、 ま た は IP ア ド レ ス の 範 囲 が 指 定 で き る 。 ル ー ル で プ ロ ト コ ル と し て tcp, udp, dccp, sctp が 指 定 さ れ て い る 場 合 、 ポ ー ト の 範 囲 を 指 定 す る こ と も で き る 。 ポ ー ト の 範 囲 が 指 定 さ れ て い な い 場 合 、 512 未 満 の 送 信 元 ポ ー ト は 、 他 の 512 未 満 の ポ ー ト に マ ッ ピ ン グ さ れ る 。 512 〜 1023 ま で の ポ ー ト は 、 1024 未 満 の ポ ー ト に マ ッ ピ ン グ さ れ る 。 そ れ 以 外 の ポ ー ト は 、 1024 以 上 の ポ ー ト に マ ッ ピ ン グ さ れ る 。 可 能 で あ れ ば 、 ポ ー ト の 変 換 は 起 こ ら な い 。 2.6.10 以 前 の カ ー ネ ル で は 、 複 数 の −−to−source オ プ シ ョ ン を 指 定 す る こ と が で き る 。 こ れ ら の カ ー ネ ル で は 、 ア ド レ ス の 範 囲 指 定 や −−to−source オ プ シ ョ ン の 複 数 回 指 定 に よ り 2 つ 以 上 の 送 信 元 ア ド レ ス を 指 定 し た 場 合 、 そ れ ら の ア ド レ ス を 使 っ た 単 純 な ラ ウ ン ド ・ ロ ビ ン が 行 わ れ る 。 そ れ 以 降 の カ ー ネ ル (>= 2.6.11−rc1) に は 複 数 の 範 囲 を NAT す る 機 能 は 存 在 し な い 。

−−random

−−random オ プ シ ョ ン が 使 用 さ れ る と 、 ポ ー ト マ ッ ピ ン グ は ラ ン ダ ム 化 さ れ る (カ ー ネ ル 2.6.21 以 降 )。

−−persistent ク ラ イ ア ン ト の 各 コ ネ ク シ ョ ン に 同 じ 送 信 元 ア ド レ ス /宛 先 ア ド レ ス を 割 り 当 て る 。 こ れ は SAME タ ー ゲ ッ ト よ り も 優 先 さ れ る 。 persistent マ ッ ピ ン グ の サ ポ ー ト は 2.6.29−rc2 以 降 で 利 用 可 能 で あ る 。

2.6.36−rc1 よ り 前 の カ ー ネ ル で は INPUT チ ェ イ ン で SNAT を 使 用 で き な い 。
IPv6 サ ポ ー ト は Linux カ ー ネ ル 3.7 以 降 で 利 用 可 能 で あ る 。

SNPT (IPv6 の み )
(RFC 6296 で 説 明 さ れ て い る ) ス テ ー ト レ ス IPv6−to−IPv6 送 信 元 ネ ッ ト ワ ー ク プ レ フ ィ ッ ク ス 変 換 を 提 供 す る 。 こ の タ ー ゲ ッ ト は nat テ ー ブ ル で は な く mangle テ ー ブ ル で 使 わ な け れ ば な ら な い 。 以 下 の オ プ シ ョ ン を 取 る 。
−−src−pfx
[prefix/length] 変 換 を 行 う 送 信 元 プ レ フ ィ ッ ク ス と そ の 長 さ を 設 定 す る 。
−−dst−pfx
[prefix/length] 変 換 を 行 う 宛 先 プ レ フ ィ ッ ク ス と そ の 長 さ を 設 定 す る 。 変 換 を 取 り 消 す に は DNPT タ ー ゲ ッ ト を 使 わ な け れ ば な ら な い 。 例 :

ip6tables −t mangle −I POSTROUTING −s fd00::/64 −o vboxnet0 −j SNPT −−src−pfx fd00::/64 −−dst−pfx 2001:e20:2000:40f::/64

ip6tables −t mangle −I PREROUTING −i wlan0 −d 2001:e20:2000:40f::/64 −j DNPT −−src−pfx 2001:e20:2000:40f::/64 −−dst−pfx fd00::/64

IPv6 neighbor proxy を 有 効 に す る 必 要 が あ る か も し れ な い 。

sysctl −w net.ipv6.conf.all.proxy_ndp=1 ま た 、 変 換 さ れ た フ ロ ー に 対 す る コ ネ ク シ ョ ン 追 跡 を 無 効 に す る に は NOTRACK タ ー ゲ ッ ト を 使 用 す る 必 要 が あ る 。

TCPMSS こ の タ ー ゲ ッ ト を 用 い る と 、 TCP の SYN パ ケ ッ ト の MSS 値 を 書 き 換 え 、 そ の コ ネ ク シ ョ ン で の 最 大 サ イ ズ を 制 御 で き る (通 常 は 、 送 信 イ ン タ ー フ ェ ー ス の MTU か ら IPv4 で は 40 を 、 IPv6 で は 60 を 引 い た 値 に 制 限 す る )。 も ち ろ ん −p tcp と の 組 み 合 わ せ で し か 使 え な い 。 こ の タ ー ゲ ッ ト は 、 "ICMP Fragmentation Needed" や "ICMPv6 Packet Too Big" パ ケ ッ ト を ブ ロ ッ ク し て い る 犯 罪 的 に 頭 の い か れ た ISP や サ ー バ ー を 乗 り 越 え る た め に 使 用 さ れ る 。 Linux フ ァ イ ア ウ ォ ー ル /ル ー タ ー で は 何 も 問 題 が な い の に 、 そ こ に ぶ ら 下 が る マ シ ン で は 以 下 の よ う に 大 き な パ ケ ッ ト を や り と り で き な い と い う の が 、 こ の 問 題 の 兆 候 で あ る 。

1. ウ ェ ブ ・ ブ ラ ウ ザ で 接 続 し よ う と す る と 、 何 の デ ー タ も 受 け 取 ら ず に ハ ン グ す る

2. 短 い メ ー ル は 問 題 な い が 、 長 い メ ー ル が ハ ン グ す る

3.

ssh は 問 題 な い が 、 scp は 最 初 の ハ ン ド シ ェ ー ク 後 に ハ ン グ す る 回 避 方 法 : こ の オ プ シ ョ ン を 有 効 に し 、 以 下 の よ う な ル ー ル を フ ァ イ ア ウ ォ ー ル の 設 定 に 追 加 す る 。

iptables −t mangle −A FORWARD −p tcp −−tcp−flags SYN,RST SYN
−j TCPMSS −−clamp−mss−to−pmtu

−−set−mss value

Explicitly sets MSS option to specified value. If the MSS of the packet is already lower than value, it will not be increased (from Linux 2.6.25 onwards) to avoid more problems with hosts relying on a proper MSS.

−−clamp−mss−to−pmtu

Automatically clamp MSS value to (path_MTU − 40 for IPv4; −60 for IPv6). This may not function as desired where asymmetric routes with differing path MTU exist — the kernel uses the path MTU which it would use to send packets from itself to the source and destination IP addresses. Prior to Linux 2.6.25, only the path MTU to the destination IP address was considered by this option; subsequent kernels also consider the path MTU to the source IP address. こ れ ら の オ プ シ ョ ン は ど ち ら か 1 つ し か 指 定 で き な い 。

TCPOPTSTRIP こ の タ ー ゲ ッ ト は TCP パ ケ ッ ト か ら TCP オ プ シ ョ ン を 削 除 す る (実 際 に は TCPオ プ シ ョ ン を NO−OP で 置 き 換 え る )。 こ の タ ー ゲ ッ ト を 使 う に は −p tcp パ ラ メ ー タ ー を 使 う 必 要 が あ る だ ろ う 。
−−strip−options
option[,option...] 指 定 さ れ た オ プ シ ョ ン (複 数 可 ) を 削 除 す る 。 オ プ シ ョ ン は TCP オ プ シ ョ ン 番 号 か シ ン ボ ル 名 で 指 定 す る 。 iptables を −j TCPOPTSTRIP −h で 呼 び 出 す と 、 指 定 で き る オ プ シ ョ ン の シ ン ボ ル 名 を 取 得 で き る 。

TEE
TEE
タ ー ゲ ッ ト は 、 パ ケ ッ ト の ク ロ ー ン を 作 成 し 、 ク ロ ー ン し た パ ケ ッ ト を ロ ー カ ル ネ ッ ト ワ ー ク セ グ メ ン ト に あ る 別 の マ シ ン に リ ダ イ レ ク ト す る 。 言 い 換 え る と 、 ネ ク ス ト ホ ッ プ が タ ー ゲ ッ ト で な け れ ば な ら な い と い う こ と だ 。 つ ま り 、 必 要 に 応 じ て ネ ク ス ト ホ ッ プ が さ ら に パ ケ ッ ト を 転 送 す る よ う に 設 定 す る 必 要 が あ る と い う こ と だ 。
−−gateway
ipaddr ク ロ ー ン し た パ ケ ッ ト を 指 定 し た IP ア ド レ ス で 届 く ホ ス ト に 送 信 す る 。 (IPv4 の 場 合 ) 0.0.0.0、 (IPv6 の 場 合 ) :: は 無 効 で あ る 。

eth0 に 届 い た す べ て の 入 力 ト ラ フ ィ ッ ク を ネ ッ ト ワ ー ク 層 の ロ ギ ン グ ボ ッ ク ス に 転 送 す る 。

−t mangle −A PREROUTING −i eth0 −j TEE −−gateway 2001:db8::1

TOS こ の モ ジ ュ ー ル は IPv4 ヘ ッ ダ ー の Type of Service フ ィ ー ル ド (上 位 ビ ッ ト も 含 む ) や IPv6 ヘ ッ ダ ー の Priority フ ィ ー ル ド を 設 定 す る 。 TOS は DSCP と ECN と 同 じ ビ ッ ト を 共 有 す る 点 に 注 意 す る こ と 。 TOS タ ー ゲ ッ ト は mangle テ ー ブ ル で の み 有 効 で あ る 。
−−set−tos
value[/mask]

mask で 指 定 さ れ た ビ ッ ト を 0 に し (下 の 「 注 意 」 を 参 照 )、 value と TOS/Priority フ ィ ー ル ド の XOR を 取 る 。 mask が 省 略 さ れ た 場 合 は 0xFF と み な さ れ る 。

−−set−tos symbol

IPv4 の TOS タ ー ゲ ッ ト を 使 用 す る 際 に は シ ン ボ ル 名 を 指 定 す る こ と が で き る 。 暗 黙 の う ち 0xFF が mask と し て 使 用 さ れ る (下 の 「 注 意 」 を 参 照 )。 使 用 で き る TOS 名 の リ ス ト は iptables を −j TOS −h で 呼 び 出 す と 取 得 で き る 。 以 下 の 簡 易 表 現 が 利 用 で き る 。

−−and−tos bits

TOS 値 と bits の ビ ッ ト 論 理 積 (AND) を 取 る (−−set−tos 0/invbits の 簡 易 表 現 、 invbitsbits の ビ ッ ト 単 位 の 否 定 で あ る 。 下 の 「 注 意 」 を 参 照 )

−−or−tos bits

TOS 値 と bits の ビ ッ ト 論 理 和 (OR) を 取 る (−−set−tos bits/bits の 簡 易 表 現 。 下 の 「 注 意 」 を 参 照 )

−−xor−tos bits

TOS 値 と bits の XOR を 取 る (−−set−tos bits/0 の 簡 易 表 現 。 下 の 「 注 意 」 を 参 照 ) 注 意 : 2.6.38 以 前 の Linux カ ー ネ ル (た だ し 、 長 期 間 サ ポ ー ト の リ リ ー ス 2.6.32 (>=.42), 2.6.33 (>=.15), 2.6.35 (>=.14) 以 外 ) で は 、 IPv6 TOS mangling が ド キ ュ メ ン ト に 書 か れ て い る 通 り に 動 作 せ ず 、 IPv4 バ ー ジ ョ ン の 場 合 と 異 な る 動 作 を す る と い う バ グ が あ る 。 TOS mask は ビ ッ ト が 1 の 場 合 に 対 応 す る ビ ッ ト が 0 に す る こ と を 指 示 す る の で 、 元 の TOS フ ィ ー ル ド に mask を 適 用 す る 前 に 反 転 す る 必 要 が あ る 。 し か し な が ら 、 上 記 の カ ー ネ ル で は こ の 反 転 が 抜 け て お り −−set−tos と 関 連 す る 簡 易 表 現 が 正 し く 動 作 し な い 。

TPROXY こ の タ ー ゲ ッ ト は 、 mangle テ ー ブ ル で 、 PREROUTING チ ェ イ ン と 、 PREROUTING チ ェ イ ン か ら 呼 び 出 さ れ る ユ ー ザ ー 定 義 チ ェ イ ン で の み 有 効 で あ る 。 こ の タ ー ゲ ッ ト は 、 そ の パ ケ ッ ト を パ ケ ッ ト ヘ ッ ダ ー を 変 更 せ ず に そ の ま ま ロ ー カ ル ソ ケ ッ ト に リ ダ イ レ ク ト す る 。 ま た 、 mark 値 を 変 更 す る こ と も で き 、 こ の mark 値 は 後 で 高 度 な ル ー テ ィ ン グ ル ー ル で 使 用 す る こ と が で き る 。 こ の タ ー ゲ ッ ト に は オ プ シ ョ ン が 3 つ あ る :
−−on−port
port こ の オ プ シ ョ ン は 使 用 す る 宛 先 ポ ー ト を 指 定 す る 。 こ の オ プ シ ョ ン は 必 須 で 、 0 は 宛 先 ポ ー ト が 元 々 の 宛 先 ポ ー ト と 同 じ で あ る こ と を 意 味 す る 。 ル ー ル が −p tcp ま た は −p udp を 指 定 し て い る 場 合 に の み 有 効 で あ る 。
−−on−ip
address こ の オ プ シ ョ ン は 使 用 す る 宛 先 ア ド レ ス を 指 定 す る 。 デ フ ォ ル ト で は 、 パ ケ ッ ト が 到 着 し た イ ン タ フ ェ ー ス の IP ア ド レ ス が 使 用 さ れ る 。 ル ー ル が −p tcp ま た は −p udp を 指 定 し て い る 場 合 に の み 有 効 で あ る 。
−−tproxy−mark
value[/mask]

Marks packets with the given value/mask. The fwmark value set here can be used by advanced routing. (Required for transparent proxying to work: otherwise these packets will get forwarded, which is probably not what you want.)

TRACE
This target marks packets so that the kernel will log every rule which match the packets as those traverse the tables, chains, rules.

A logging backend, such as ip(6)t_LOG or nfnetlink_log, must be loaded for this to be visible. The packets are logged with the string prefix: "TRACE: tablename:chainname:type:rulenum " where type can be "rule" for plain rule, "return" for implicit rule at the end of a user defined chain and "policy" for the policy of the built in chains.
It can only be used in the raw table.

TTL (IPv4 の 場 合 ) こ の タ ー ゲ ッ ト を 使 う と 、 IPv4 の TTL ヘ ッ ダ ー フ ィ ー ル ド を 変 更 で き る 。 TTL フ ィ ー ル ド に よ り 、 TTL が な く な る ま で に 、 パ ケ ッ ト が 何 ホ ッ プ (何 個 の ル ー タ ) を 通 過 で き る か が 決 定 さ れ る 。

TTL フ ィ ー ル ド を 設 定 し た り 増 や す の は 、 危 険 性 を 非 常 に は ら ん で い る 。 し た が っ て 、 可 能 な 限 り 避 け る べ き で あ る 。 こ の タ ー ゲ ッ ト は mangle テ ー ブ ル で の み 有 効 で あ る 。 決 し て ロ ー カ ル ネ ッ ト ワ ー ク 内 に 留 ま る パ ケ ッ ト の フ ィ ー ル ド 値 を 設 定 し た り 増 や し た り し な い こ と !
−−ttl−set
value

TTL 値 を ’value’ に 設 定 す る 。

−−ttl−dec value

TTL 値 を ’value’ 回 減 算 す る 。

−−ttl−inc value

TTL 値 を ’value’ 回 加 算 す る 。

ULOG (IPv4 の 場 合 ) こ の タ ー ゲ ッ ト は NFLOG タ ー ゲ ッ ト の 前 身 で IPv4 専 用 で あ る 。 現 在 は 非 推 奨 と な っ て い る 。 マ ッ チ し た パ ケ ッ ト を ユ ー ザ ー 空 間 で ロ グ 記 録 す る 機 能 を 提 供 す る 。 こ の タ ー ゲ ッ ト が ル ー ル に 設 定 さ れ る と 、 Linux カ ー ネ ル は 、 そ の パ ケ ッ ト を netlink ソ ケ ッ ト を 用 い て マ ル チ キ ャ ス ト す る 。 そ し て 、 1 つ 以 上 の ユ ー ザ ー 空 間 プ ロ セ ス が い ろ い ろ な マ ル チ キ ャ ス ト グ ル ー プ に 登 録 を お こ な い 、 パ ケ ッ ト を 受 信 す る 。 LOG と 同 様 、 こ れ は "非 終 了 タ ー ゲ ッ ト " で あ り 、 ル ー ル の 探 索 は 次 の ル ー ル へ と 継 続 さ れ る 。
−−ulog−nlgroup
nlgroup パ ケ ッ ト を 送 信 す る netlink グ ル ー プ (1−32) を 指 定 す る 。 デ フ ォ ル ト の 値 は 1 で あ る 。
−−ulog−prefix
prefix 指 定 し た プ レ フ ィ ッ ク ス を ロ グ メ ッ セ ー ジ の 前 に 付 け る 。 32 文 字 ま で の 指 定 で き る 。 ロ グ の 中 で メ ッ セ ー ジ を 区 別 す る の に 便 利 で あ る 。
−−ulog−cprange
size ユ ー ザ ー 空 間 に コ ピ ー す る パ ケ ッ ト の バ イ ト 数 。 値 が 0 の 場 合 、 サ イ ズ に 関 係 な く 全 パ ケ ッ ト を コ ピ ー す る 。 デ フ ォ ル ト は 0 で あ る 。
−−ulog−qthreshold
size カ ー ネ ル 内 部 の キ ュ ー に 入 れ ら れ る パ ケ ッ ト の 数 。 例 え ば 、 こ の 値 を 10 に し た 場 合 、 カ ー ネ ル 内 部 で 10 個 の パ ケ ッ ト を ま と め 、 1 つ の netlink マ ル チ パ ー ト メ ッ セ ー ジ と し て ユ ー ザ ー 空 間 に 送 る 。 (過 去 の も の と の 互 換 性 の た め ) デ フ ォ ル ト は 1 で あ る 。