名 前
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 type、 type と
code、 ま た は 以
下 の コ マ ン ド
で 表 示 さ れ る 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 チ
ェ イ ン に 入 る
パ ケ ッ ト の み
)。 イ ン タ ー フ
ェ ー ス 名 が "+"
で 終 っ て い る
場 合 、 そ の 名
前 で 始 ま る 任
意 の イ ン タ ー
フ ェ ー ス 名 に
マ ッ チ す る 。
nat と mangle テ ー ブ
ル の 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 マ ッ
チ ン グ ル ー ル
の マ ッ チ ン グ
モ ー ド を 設 定
す る 。 サ ポ ー
ト さ れ て い る
モ ー ド は random と
nth で あ る 。
[!] −−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 個 n は n: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’ が
指 定 さ れ た 場
合 に 利 用 で き
る 。 以 下 の オ
プ シ ョ ン が 提
供 さ れ る 。 unclean (IPv4 の 場 合 ) こ の モ ジ ュ ー ル に は オ プ シ ョ ン が な い が 、 お か し く 正 常 で な い よ う に 見 え る パ ケ ッ ト に マ ッ チ す る 。 こ れ は 実 験 的 な も の と し て 扱 わ れ て い る 。 タ ー ゲ ッ ト の 拡 張iptables は 拡 張 タ ー ゲ ッ ト モ ジ ュ ー ル を 使 う こ と が で き る : 以 下 の も の が 、 標 準 的 な デ ィ ス ト リ ビ ュ ー シ ョ ン に 含 ま れ て い る 。 AUDIT
こ の タ ー ゲ ッ
ト を 使 う と 、
こ の タ ー ゲ ッ
ト に ヒ ッ ト し
た パ ケ ッ ト に
対 す る 監 査 (audit)
レ コ ー ド を 作
成 す る こ と が
で き る 。 許 可
/廃 棄 /拒 否 さ れ
た パ ケ ッ ト を
記 録 す る の に
使 用 で き る 。
詳 細 に つ い て
は auditd(8) を 参 照 。
iptables −N AUDIT_DROP iptables −A AUDIT_DROP −j AUDIT −−type drop iptables −A AUDIT_DROP −j DROP CHECKSUM
こ の タ ー ゲ ッ
ト は 、 お か し
い ア プ リ ケ ー
シ ョ ン や 古 い
ア プ リ ケ ー シ
ョ ン に 対 す る
選 択 的 な 対 処
を 可 能 に す る
。 mangle テ ー ブ ル で
の み 使 用 で き
る 。 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 ク ラ ス に 分
類 で き る )。 CLUSTERIP (IPv4 の 場 合 ) こ の モ ジ ュ ー ル を 使 う と 、 ノ ー ド の 前 段 に 明 示 的 に 負 荷 分 散 装 置 を 置 か ず に 、 特 定 の IP ア ド レ ス と MAC ア ド レ ス を 共 有 す る ノ ー ド の 簡 単 な ク ラ ス タ ー を 構 成 す る こ と が で き る 。 コ ネ ク シ ョ ン は 、 こ の ク ラ ス タ ー の ノ ー ド 間 で 静 的 に 分 散 さ れ る 。
ClusterIP を 使 う ル ー ル の 中 で 一 番 最 初 に 設 定 し な け れ ば な ら な い 。 −−hashmode
mode ハ ッ シ ュ モ
ー ド を 指 定 す
る 。 sourceip,
sourceip−sourceport,
sourceip−sourceport−destport の
い ず れ か で な
け れ ば な ら な
い 。 ClusterIP の MAC ア ド レ ス を 指 定 す る 。 リ ン ク 層 の マ ル チ キ ャ ス ト ア ド レ ス で な け れ ば な ら な い 。 −−total−nodes
num こ の ク ラ ス
タ ー の 総 ノ ー
ド 数 。 CONNMARK
こ の モ ジ ュ ー
ル は 、 コ ネ ク
シ ョ ン に 関 連
付 け ら れ た netfilter
の mark 値 を 設 定 す
る 。 mark は 32 ビ ッ
ト 幅 で あ る 。
mask で 指 定 さ れ た ビ ッ ト を 0 に し 、 value と ctmark の XOR を 取 る 。 −−save−mark [−−nfmask nfmask] [−−ctmask ctmask] 指 定 さ れ た マ ス ク を 使 っ て 、 パ ケ ッ ト マ ー ク (nfmark) を コ ネ ク シ ョ ン マ ー ク (ctmark) に コ ピ ー す る 。 新 し い ctmark 値 は 以 下 の よ う に 決 定 さ れ る 。 ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask) ctmask は ど の ビ ッ ト を ク リ ア す る か を 規 定 し 、 nfmask は nfmark の ど の ビ ッ ト を ctmark と XOR す る か を 規 定 す る 。 ctmask と nfmask の デ フ ォ ル ト 値 は 0xFFFFFFFF で あ る 。 −−restore−mark [−−nfmask nfmask] [−−ctmask ctmask] 指 定 さ れ た マ ス ク を 使 っ て 、 コ ネ ク シ ョ ン マ ー ク (ctmark) を パ ケ ッ ト マ ー ク (nfmark) に コ ピ ー す る 。 新 し い nfmark 値 は 以 下 の よ う に 決 定 さ れ る 。 nfmark = (nfmark & ~nfmask) ^ (ctmark & ctmask); nfmask は ど の ビ ッ ト を ク リ ア す る か を 規 定 し 、 ctmask は ctmark の ど の ビ ッ ト を nfmark と XOR す る か を 規 定 す る 。 ctmask と nfmask の デ フ ォ ル ト 値 は 0xFFFFFFFF で あ る 。 −−restore−mark は mangle テ ー ブ ル で の み 有 効 で あ る 。 以 下 の 簡 易 表 現 が −−set−xmark の 代 わ り に 利 用 で き る 。 −−and−mark bits ctmark と bits の ビ ッ ト 論 理 積 (AND) を 取 る (−−set−xmark 0/invbits の 簡 易 表 現 、 invbits は bits の ビ ッ ト 単 位 の 否 定 で あ る )。 −−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 で 指 定
さ れ た ビ ッ ト
だ け が 変 更 さ
れ る 。 nfmark を ctmark へ コ ピ ー す る 。 mask が 指 定 さ れ た 場 合 、 そ の ビ ッ ト だ け が コ ピ ー さ れ る 。 −−restore−mark [−−mask mask] ctmark を nfmark に コ ピ ー す る 。 mask が 指 定 さ れ る と 、 指 定 さ れ た ビ ッ ト だ け が コ ピ ー さ れ る 。 mangle テ ー ブ ル の み で 有 効 で あ る 。 CONNSECMARK
−−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 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)
す る )。 さ ら に
、 ル ー ル に よ
る チ ェ ッ ク を
止 め さ せ る 。
こ の タ ー ゲ ッ
ト は 以 下 の オ
プ シ ョ ン を 取
る 。 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 以 降 で 利
用 可 能 で あ る
。 DNPT (IPv6
の み ) 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 テ
ー ブ ル で の み
使 用 で き る 。
DSCP フ ィ ー ル ド の 数 値 を 設 定 す る (10 進 ま た は 16 進 )。 −−set−dscp−class class DSCP フ ィ ー ル ド の DiffServ ク ラ ス を 設 定 す る 。 ECN (IPv4
の 場 合 ) こ の タ
ー ゲ ッ ト は ECN ブ
ラ ッ ク ホ ー ル
問 題 へ の 対 処
を 可 能 に す る
。 mangle テ ー ブ ル で
の み 使 用 で き
る 。 TCP ヘ ッ ダ ー か ら 全 て の ECN ビ ッ ト (訳 注 : ECE/CWR フ ラ グ ) を 取 り 除 く 。 当 然 、 −p tcp オ プ シ ョ ン と の 組 合 わ せ で の み 使 用 で き る 。 HL (IPv6
の み ) こ の タ ー
ゲ ッ ト を 使 う
と IPv6 ヘ ッ ダ ー の
Hop Limit フ ィ ー ル ド
を 変 更 す る こ
と が で き る 。 Hop
Limit フ ィ ー ル ド は
IPv4 の TTL 値 と 同 じ
よ う な も の で
あ る 。 Hop Limit フ ィ
ー ル ド を 設 定
し た り 増 や す
の は 、 危 険 性
を 非 常 に は ら
ん で い る 。 し
た が っ て 、 可
能 な 限 り 避 け
る べ き で あ る
。 こ の タ ー ゲ
ッ ト は mangle テ ー
ブ ル で の み 有
効 で あ る 。 決
し て ロ ー カ ル
ネ ッ ト ワ ー ク
内 に 留 ま る パ
ケ ッ ト の フ ィ
ー ル ド 値 を 設
定 し た り 増 や
し た り し な い
こ と ! Hop Limit を ’value’ に 設 定 す る 。 −−hl−dec value Hop Limit を ’value’ 回 減 算 す る 。 −−hl−inc value Hop Limit を ’value’ 回 加 算 す る 。 HMARK
Existing
options are: 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 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 iptables −t mangle −A PREROUTING −j HMARK −−hmark−offset 10000 −−hmark−tuple src,dst,proto −−hmark−mod 10 −−hmark−rnd 0xdeafbeef IDLETIMER
/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). 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 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) タ ー ゲ ッ
ト を 指 定 す る
。 TCP シ ー ケ ン ス 番 号 を ロ グ に 記 録 す る 。 ロ グ が ユ ー ザ ー か ら 読 め る 場 合 、 セ キ ュ リ テ ィ 上 の 危 険 が あ る 。 −−log−tcp−options TCP パ ケ ッ ト ヘ ッ ダ ー の オ プ シ ョ ン を ロ グ に 記 録 す る 。 −−log−ip−options IP/IPv6 パ ケ ッ ト ヘ ッ ダ ー の オ プ シ ョ ン を ロ グ に 記 録 す る 。 −−log−uid パ ケ ッ ト を 生 成 し た プ ロ セ ス の ユ ー ザ ー ID を ロ グ に 記 録 す る 。 MARK
こ の タ ー ゲ ッ
ト を 使 う と 、
そ の パ ケ ッ ト
に 関 連 付 け ら
れ る Netfilter マ ー ク
値 を 設 定 す る
。 例 え ば 、 fwmark に
基 づ く ル ー テ
ィ ン グ (iproute2 が 必
要 ) と 組 み 合 わ
せ て 使 う こ と
が で き る 。 そ
う す る 場 合 に
は 、 ル ー テ ィ
ン グ 時 に 考 慮
さ れ る よ う に
す る に は 、 mangle テ
ー ブ ル の PREROUTING チ
ェ イ ン で マ ー
ク を 設 定 す る
必 要 が あ る 。
マ ー ク フ ィ ー
ル ド は 32 ビ ッ ト
幅 で あ る 。 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 の 簡 易 表 現 、 invbits は bits の ビ ッ ト 単 位 の 否 定 で あ る )。 −−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 ア ド レ ス
へ の マ ッ ピ ン
グ を 指 定 す る
の と 同 じ で あ
る が 、 イ ン タ
ー フ ェ ー ス が
停 止 し た 場 合
に コ ネ ク シ ョ
ン を 忘 れ る と
い う 効 果 が あ
る 。 次 の ダ イ
ヤ ル ア ッ プ で
は 同 じ イ ン タ
ー フ ェ ー ス ア
ド レ ス に な る
可 能 性 が 低 い
(そ の た め 、 前
回 確 立 さ れ た
コ ネ ク シ ョ ン
は 失 わ れ る ) 場
合 、 こ の 動 作
は 正 し い 。 MIRROR (IPv4 の 場 合 ) 実 験 的 な デ モ ン ス ト レ ー シ ョ ン 用 の タ ー ゲ ッ ト で あ り 、 IP ヘ ッ ダ ー の 送 信 元 と 宛 先 フ ィ ー ル ド を 入 れ 換 え 、 パ ケ ッ ト を 再 送 信 す る も の で あ る 。 こ れ は INPUT, FORWARD, PREROUTING チ ェ イ ン と 、 こ れ ら の チ ェ イ ン か ら 呼 び 出 さ れ る ユ ー ザ ー 定 義 チ ェ イ ン だ け で 有 効 で あ る 。 ル ー プ 等 の 問 題 を 回 避 す る た め 、 外 部 に 送 ら れ る パ ケ ッ ト は い か な る パ ケ ッ ト フ ィ ル タ リ ン グ チ ェ イ ン ・ コ ネ ク シ ョ ン 追 跡 ・ NAT か ら も 監 視 さ れ な い 。 NETMAP
こ の タ ー ゲ ッ
ト を 使 う と 、
あ る ア ド レ ス
ネ ッ ト ワ ー ク
全 体 を 別 の ネ
ッ ト ワ ー ク ア
ド レ ス に 静 的
に マ ッ ピ ン グ
で き る 。 こ の
タ ー ゲ ッ ト は
nat テ ー ブ ル で
ル ー ル で の み
使 用 で き る 。
NFLOG
こ の タ ー ゲ ッ
ト は 、 マ ッ チ
し た パ ケ ッ ト
を ロ グ に 記 録
す る 機 能 を 提
供 す る 。 こ の
タ ー ゲ ッ ト が
ル ー ル に 設 定
さ れ る と 、 Linux カ
ー ネ ル は そ の
ロ グ に 記 録 す
る た め に そ の
パ ケ ッ ト を ロ
ー ド さ れ た ロ
ギ ン グ バ ッ ク
エ ン ド に 渡 す
。 こ の タ ー ゲ
ッ ト は 通 常 は
nfnetlink_log を ロ ギ ン グ
バ ッ ク エ ン ド
と し て 使 う 組
み 合 わ せ で 使
用 さ れ る 。 nfnetlink_log
は そ の パ ケ ッ
ト を netlink ソ ケ ッ
ト 経 由 で 指 定
さ れ た マ ル チ
キ ャ ス ト グ ル
ー プ に マ ル チ
キ ャ ス ト す る
。 1 つ 以 上 の ユ
ー ザ ー 空 間 プ
ロ セ ス が マ ル
チ キ ャ ス ト グ
ル ー プ を 購 読
し パ ケ ッ ト を
受 信 す る こ と
が で き る 。 LOG と
同 様 に 、 こ の
タ ー ゲ ッ ト は
非 終 了 タ ー ゲ
ッ ト で あ り 、
ル ー ル の 探 索
は 次 の ル ー ル
へ と 継 続 さ れ
る 。 NFQUEUE
こ の タ ー ゲ ッ
ト は 、 nfnetlink_queue ハ
ン ド ラ ー を 使
っ て そ の パ ケ
ッ ト を ユ ー ザ
ー 空 間 に 渡 す
。 パ ケ ッ ト は 16
ビ ッ ト の キ ュ
ー 番 号 で 指 定
さ れ た キ ュ ー
に 入 れ ら れ る
。 ユ ー ザ ー 空
間 で は 好 き な
よ う に パ ケ ッ
ト を 検 査 し 変
更 で き る 。 ユ
ー ザ ー 空 間 側
で は 、 必 ず そ
の パ ケ ッ ト を
破 棄 す る か カ
ー ネ ル に 戻 す
か の ど ち ら か
を し な け れ ば
な ら な い 。 詳
細 は libnetfilter_queue を 参
照 の こ と 。
nfnetlink_queue は Linux 2.6.14 で
追 加 さ れ た 。
queue−balance オ プ シ
ョ ン は Linux 2.6.31 で 、
queue−bypass は Linux 2.6.39 で
追 加 さ れ た 。
Linux カ ー ネ ル 3.10 以 降 で 利 用 可 能 。 −−queue−balance と と も に 使 用 さ れ る と 、 こ の オ プ シ ョ ン は パ ケ ッ ト を キ ュ ー に マ ッ ピ ン グ す る 際 の イ ン デ ッ ク ス と し て CPU ID を 使 用 す る 。 こ れ は 、 CPU ご と に キ ュ ー が あ る 場 合 に 性 能 を 向 上 さ せ よ う と い う も の で あ る 。 こ の オ プ シ ョ ン を 使 う に は −−queue−balance を 指 定 す る 必 要 が あ る 。 NOTRACK こ の タ ー ゲ ッ ト を 使 う と 、 そ の ル ー ル に マ ッ チ し た 全 て の パ ケ ッ ト で コ ネ ク シ ョ ン 追 跡 が 無 効 に な る 。 こ れ は −j CT −−notrack と 等 価 で あ る 。 CT と 同 様 、 NOTRACK は raw テ ー ブ ル で の み 使 用 で き る 。 RATEEST
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 に
マ ッ プ さ れ る
)。 −−random オ プ シ ョ ン を 使 用 す る と 、 ポ ー ト マ ッ ピ ン グ が ラ ン ダ ム 化 さ れ る (カ ー ネ ル 2.6.22 以 降 )。 IPv6 サ ポ ー ト は Linux カ ー ネ ル 3.7 以 降 で 利 用 可 能 で あ る 。 REJECT (IPv6
の み ) マ ッ チ し
た パ ケ ッ ト の
応 答 と し て エ
ラ ー パ ケ ッ ト
を 送 信 す る た
め に 使 わ れ る
。 エ ラ ー パ ケ
ッ ト を 送 ら な
け れ ば 、 DROP と
同 じ で あ り 、 TARGET
を 終 了 し 、 ル
ー ル の 探 索 を
終 了 す る 。 こ
の タ ー ゲ ッ ト
は 、 INPUT, FORWARD,
OUTPUT チ ェ イ ン と
、 こ れ ら の チ
ェ イ ン か ら 呼
ば れ る ユ ー ザ
ー 定 義 チ ェ イ
ン だ け で 有 効
で あ る 。 以 下
の オ プ シ ョ ン
は 、 返 さ れ る
エ ラ ー パ ケ ッ
ト の 特 性 を 制
御 す る 。 REJECT (IPv4
の 場 合 ) マ ッ チ
し た パ ケ ッ ト
の 応 答 と し て
エ ラ ー パ ケ ッ
ト を 送 信 す る
た め に 使 わ れ
る 。 エ ラ ー パ
ケ ッ ト を 送 ら
な け れ ば 、 DROP
と 同 じ で あ り
、 TARGET を 終 了 し 、
ル ー ル の 探 索
を 終 了 す る 。
こ の タ ー ゲ ッ
ト は 、 INPUT, FORWARD,
OUTPUT チ ェ イ ン と
、 こ れ ら の チ
ェ イ ン か ら 呼
ば れ る ユ ー ザ
ー 定 義 チ ェ イ
ン だ け で 有 効
で あ る 。 以 下
の オ プ シ ョ ン
は 、 返 さ れ る
エ ラ ー パ ケ ッ
ト の 特 性 を 制
御 す る 。 (*) icmp−admin−prohibited を サ ポ ー ト し な い カ ー ネ ル で 、 icmp−admin−prohibited を 使 用 す る と 、 REJECT で は な く 単 な る DROP に な る 。 SAME (IPv4
の 場 合 ) N.B.: The DNAT
target’s −−persistent option
replaced the SAME target. 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
SET
こ の モ ジ ュ ー
ル は ipsec(8) で 定 義
で き る IP 集 合 の
エ ン ト リ の 追
加 、 削 除 、 そ
の 両 方 を 行 う
。 flag は src や dst の 指 定 で あ り 、 指 定 で き る の は 6 個 ま で で あ る 。 −−timeout
value エ ン ト リ を
追 加 す る 際 に
、 集 合 定 義 の
デ フ ォ ル ト 値
で は な く 指 定
し た タ イ ム ア
ウ ト 値 を 使 用
す る −j SET を 使 用 す る に は ipset の カ ー ネ ル サ ポ ー ト が 必 要 で あ る 。 標 準 の カ ー ネ ル で は 、 Linux 2.6.39 以 降 で 提 供 さ れ て い る 。 SNAT
こ の タ ー ゲ ッ
ト は nat テ ー ブ
ル の POSTROUTING, INPUT チ
ェ イ ン 、 こ れ
ら の チ ェ イ ン
か ら 呼 び 出 さ
れ る ユ ー ザ ー
定 義 チ ェ イ ン
の み で 有 効 で
あ る 。 こ の タ
ー ゲ ッ ト は パ
ケ ッ ト の 送 信
元 ア ド レ ス を
修 正 す る (こ の
コ ネ ク シ ョ ン
の 以 降 の パ ケ
ッ ト も 修 正 し
て 分 か ら な く
(mangle) す る )。 さ ら
に 、 ル ー ル に
よ る チ ェ ッ ク
を 止 め さ せ る
。 こ の タ ー ゲ
ッ ト に は 以 下
の オ プ シ ョ ン
が あ る : 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 を
使 用 で き な い
。 SNPT (IPv6
の み ) 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 フ ァ イ ア ウ ォ ー ル /ル ー タ ー で は 何 も 問 題 が な い の に 、 そ こ に ぶ ら 下 が る マ シ ン で は 以 下 の よ う に 大 き な パ ケ ッ ト を や り と り で き な い と い う の が 、 こ の 問 題 の 兆 候 で あ る 。
ssh は 問 題 な い が 、 scp は 最 初 の ハ ン ド シ ェ ー ク 後 に ハ ン グ す る 回 避 方 法 : こ の オ プ シ ョ ン を 有 効 に し 、 以 下 の よ う な ル ー ル を フ ァ イ ア ウ ォ ー ル の 設 定 に 追 加 す る 。 iptables
−t mangle −A FORWARD −p tcp
−−tcp−flags SYN,RST SYN −−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 パ ラ メ ー
タ ー を 使 う 必
要 が あ る だ ろ
う 。 TEE 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 テ ー ブ
ル で の み 有 効
で あ る 。 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 の 簡 易 表 現 、 invbits は bits の ビ ッ ト 単 位 の 否 定 で あ る 。 下 の 「 注 意 」 を 参 照 ) −−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 つ あ る : 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
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. TTL (IPv4 の 場 合 ) こ の タ ー ゲ ッ ト を 使 う と 、 IPv4 の TTL ヘ ッ ダ ー フ ィ ー ル ド を 変 更 で き る 。 TTL フ ィ ー ル ド に よ り 、 TTL が な く な る ま で に 、 パ ケ ッ ト が 何 ホ ッ プ (何 個 の ル ー タ ) を 通 過 で き る か が 決 定 さ れ る 。 TTL フ
ィ ー ル ド を 設
定 し た り 増 や
す の は 、 危 険
性 を 非 常 に は
ら ん で い る 。
し た が っ て 、
可 能 な 限 り 避
け る べ き で あ
る 。 こ の タ ー
ゲ ッ ト は mangle テ
ー ブ ル で の み
有 効 で あ る 。
決 し て ロ ー カ
ル ネ ッ ト ワ ー
ク 内 に 留 ま る
パ ケ ッ ト の フ
ィ ー ル ド 値 を
設 定 し た り 増
や し た り し な
い こ と ! TTL 値 を ’value’ に 設 定 す る 。 −−ttl−dec value TTL 値 を ’value’ 回 減 算 す る 。 −−ttl−inc value TTL 値 を ’value’ 回 加 算 す る 。 ULOG (IPv4
の 場 合 ) こ の タ
ー ゲ ッ ト は NFLOG タ
ー ゲ ッ ト の 前
身 で IPv4 専 用 で あ
る 。 現 在 は 非
推 奨 と な っ て
い る 。 マ ッ チ
し た パ ケ ッ ト
を ユ ー ザ ー 空
間 で ロ グ 記 録
す る 機 能 を 提
供 す る 。 こ の
タ ー ゲ ッ ト が
ル ー ル に 設 定
さ れ る と 、 Linux カ
ー ネ ル は 、 そ
の パ ケ ッ ト を
netlink ソ ケ ッ ト を
用 い て マ ル チ
キ ャ ス ト す る
。 そ し て 、 1 つ
以 上 の ユ ー ザ
ー 空 間 プ ロ セ
ス が い ろ い ろ
な マ ル チ キ ャ
ス ト グ ル ー プ
に 登 録 を お こ
な い 、 パ ケ ッ
ト を 受 信 す る
。 LOG と 同 様 、 こ
れ は "非 終 了 タ
ー ゲ ッ ト " で あ
り 、 ル ー ル の
探 索 は 次 の ル
ー ル へ と 継 続
さ れ る 。 |