![]() |
Copyright © 2000-2005 eazyfox. All Rights Reserved. | ||||
|
|
|||||
| Home > Firewall製品紹介 > PktFilter | |||||
PktFilterはWin32で動作するパケットフィルタ型FirewallでWindows 2000/XP/Server 2003を対象としている。いまだにベータ版であるがSourceForgeで開発されておりこちらから最新版がDownloadできる。
インストールモジュールは無くDownloadしてきたZipモジュールを展開するだけ。展開後にサービスへの登録とサービスの設定を行う必要がある。まずZipを展開すると
![]() |
|
PktFilterを実行させるには「PktFilter」をサービスに登録する→PktFilterのサービスを起動するという手順をとる。まずサービスへ登録しよう。コマンドラインからpktfltsrvのフォルダに移動して
| pktfltsrv.exe -i ルール定義ファイル名 ログファイル名 |
と入力するだけである。筆者は導入時にテストを行う際、何度もこのコマンドを入力するのが面倒だったのでバッチファイルを作っていた。ここでは
"C:\Program Files\PktFilter\pktctl\rules.txt"・・・ルールを定義したファイルのフルパスのファイル名
"C:\LogData\Packet Filter\PktFilter.log"・・・ログのフルパスのファイル名
と定義している
| CD C:\Program Files\PktFilter\pktfltsrv pktfltsrv.exe -i "C:\Program Files\PktFilter\pktctl\rules.txt" "C:\LogData\Packet Filter\PktFilter.log" pause |
サービスの定義と起動
登録されたPktFilterのサービスの定義を変更する。これはStartUpで自動起動させるためと、何らかのエラーが発生したときにサービスを再起動させるためである。
サービスマネージャで「Stateless Packet Filter」を選ぶ。「スタートアップの種類」が「手動」になっているので「自動」に変更する。これでWindows起動時にPktFilterが自動起動するようになる。
次に「回復」タブを選んでエラー時の対応を設定する
PktFilterがエラーとなることは筆者は経験していないのだが万が一のためにエラー時はサービスを再起動するように設定する。「何もしない」を「サービスを再起動する」に変更するだけ。左図の例では一日2回までのエラーであれば再起動しているが、3回目はそのまま終了としている。「その後のエラー」も再起動にしてもなんら問題はない。
いままでPktFilterサービスの終了を経験していないので、あまり気にしなくてもいいかもしれない。もしOSその他の相性でサービスが停止するようだとエラー時の再起動は必須となる。なおサービスの再起動も0分の設定でもよい。
これでPktFilterの準備は完了である。PktFilterのデフォルトルールではすべてのパケットがDropされるのでサービスが起動しているのならネットワークが使えない状態になっているはず。
ではFirewallの要であるルールの定義を行う。その前にPktFilterはNIC(ネットワークインターフェイスカード)にeth0,eth1と識別のための番号を使う。この番号を知る必要があるので設定・制御プログラムのpktctl.exeを実行する
| C:\Program Files\PktFilter\pktctl>pktctl.exe -I eth0: (SiS NIC SISNIC): 192.168.1.1 eth1: (PCI Bus Master Adapter): 202.225.xxx.yyy |
Pktctl.exeに"-I"の引数を与えて実行する。筆者のPCはNIC2枚挿なのでeth0とeth1の2つが表示される。通常はeth0だけだと思われるが確認のために必ず行うほうがよい |
NICを2枚以上挿入している場合、このeth0やeth1は再起動すると入れ替わることがある。NICの入れ替えやドライバの更新を行ったときには必ずpktctl.exeを実行して確認しなければいけない。(そのためeth0とeth1を入れ替えたルールを作っておくと焦らなくてすむ・・・というか筆者が大変焦ったので後から対策として用意しておくことにした)
では肝心のルールを作成してみよう。ルールを作るうえで基本的な設定は
| # drop packets composed of small fragments option small_frags on eth0 option small_frags on eth1 |
フラグメント化(細分化)されたパケットはDropする |
| # default behavior = deny everything block in on eth0 all block out on eth0 all block in on eth1 all block out on eth1 all |
未定義のすべてのパケットをDropする。 |
ここでは細分化されたパケットの拒否とルールに未定義のパケットをDropする指定を行う。ルールには当然Dropの指定を記述してもいいのだが、慣例として許可するルールのみ記述を行い、ルールに一致しないパケットはすべてDropすることとする。
ルール記述の文法
| Action | 方向 | インターフェイス番号 | プロトコル | from IP | from Port | to IP | to Port | オプション |
| 許可/遮断を設定する pass/blockで指定する |
inまたはoutを指定する 受信はin、送信はout |
pktctl.exeで得られた番号。eth0、eth1... | プロトコルを指定する。 tcp.udp,icmpとプロトコル番号 |
送信元のIPアドレスを指定。 単一のIPかサブネットで指定 |
送信元ポート番号 | 送信先のIPアドレスを指定。 単一のIPかサブネットで指定 |
送信先ポート番号 | プロトコルがICMPのときはTypeが指定可能。TCPのときはestablishedが指定可能 |
ややこしいので例を挙げてみる。
pass out on eth0 proto tcp from any port = 80 to 192.168.1.0/24 port > 1023 established
| 設定項目 | 設定値 | 説明 |
| Action | pass | 許可するルールということ |
| 方向 | out | 出て行くパケットを指定する |
| インターフェイス番号 | eth0 | eth0のインターフェイスでルールを適用する |
| プロトコル | tcp | プロトコルはTCPなので"proto tcp"と指定する |
| from IP | any | 送信元のIPは特定しない。anyとする |
| from Port | = 80 | 送信元のポートは80番を指定 |
| to IP | 192.168.1.0/24 | 送信先は192.168.1.0/24つまりLAN内のPCを指定している |
| to Port | > 1023 | 送信先のポートは1024以上 |
| オプション | established | establishedの指定はセッションが確立後のパケットのみ通過させるという意味。 |
ポートの指定は
| = | 単一のポートを指定する。"= 21"で21番ポートだけを指定したことになる |
| >= | 〜以上のポートを指定する。 |
| > | 〜より大きなポートを指定する |
| <= | 〜以下のポートを指定する |
| < | 〜より小さいポートを指定する |
| >< | ポートの範囲指定。"100 >< 200"で101〜199番のポートを指定したことになる |
オプションのestablishedはTCPの接続要求であるSyn以外のパケットという意味になる。つまり指定しなければ「セッション開設要求」〜「セッションClose応答」までのすべてのフェーズのパケットが対象となる。establishedを付加すると「セッション開設要求」は該当せず「データ転送」〜「セッションClose応答」までが対象となる。
establisheの使い方の例は
・httpサーバを公開する場合
pass in on eth1 proto tcp from any port > 1023 to any port = 80・・・(1)
pass out on eth1 proto tcp from any port = 80 to any port > 1023
established・・・(2)
・外部のhttpサーバへのアクセスを行う場合
pass out on eth1 proto tcp from any port > 1023 to any port = 80・・・(3)
pass in on eth1 proto tcp from any port = 80 to any port > 1023
established・・・(4)
(1)は見知らぬIPから自PCの80番ポートへの着信を許可している。自PCが固定IPなら"to
any"ではなくIPの指定も可能
(2)は自PCのhttpサーバから見知らぬIPへの応答を許可している。
(3)は自PCから外部のhttpサーバへの接続を許可している。
(4)は外部httpサーバから自PCへの応答を許可している。
このようにセッションの確立要求を含む発着信には"establishe"は指定しないが、セッション確立後の応答だけに限定するときに"establishe"を指定する。
実際にはPktFilterはSynフラグとAckフラグの有無でestablishを判断している。Syn無+Ack有=establishedということになる。
具体的な例として筆者が設定したフィルタルールを下記に示す。
サーバ機として公開用のhttpサーバとMailサーバがインストールされている。またルーターとして動作するためNICの2枚挿しでRRASのルーター機能を設定している。RRASがLAN側に対してはDHCPサーバとDNS-Proxyとして動作する。
Internet側はDHCPでグローバルIPを接続時に1つ割り当てられる。
| 1 | # drop packets composed of small fragments option small_frags on eth0 option small_frags on eth1 # eth0: (SiS NIC SISNIC): 192.168.1.1 # eth1: (VIA Ethernet Adapt): aaa.bbb.ccc.ddd |
分割パケットはDropする。インターフェイス番号は間違えないためのメモとしてコメントしているだけ。 |
| 2 | # default behavior = deny everything block in on eth0 all block out on eth0 all block in on eth1 all block out on eth1 all |
基本はすべてDropする(両インターフェイス共) |
| 3 | ############################## # eth0 rules Local network # ############################## #DHCP Server pass in on eth0 proto udp from any port = 68 to any port = 67 pass out on eth0 proto udp from any port = 67 to any port = 68 |
ここからeth0:LAN側のインターフェイスの設定。 最初にDHCPサーバとして動作させるための設定でサーバとローカルPC間で67と68のudpを許可する。 |
| 4 | #DNS Proxy pass in on eth0 proto udp from 192.168.1.0/24 port > 1023 to 192.168.1.1 port = 53 pass out on eth0 proto udp from 192.168.1.1 port = 53 to 192.168.1.0/24 port > 1023 pass in on eth0 proto tcp from 192.168.1.0/24 port > 1023 to 192.168.1.1 port = 53 pass out on eth0 proto tcp from 192.168.1.1 port = 53 to 192.168.1.0/24 port > 1023 |
DNS Proxyとして内部PCからDNS問い合わせと回答を許可する |
| 5 | #http https pass in on eth0 proto tcp from 192.168.1.0/24 port > 1023 to any port = 80 pass out on eth0 proto tcp from any port = 80 to 192.168.1.0/24 port > 1023 established pass in on eth0 proto tcp from 192.168.1.0/24 port > 1023 to any port = 443 pass out on eth0 proto tcp from any port = 443 to 192.168.1.0/24 port > 1023 established |
内部PCから外部http/httpsサーバへの接続要求と応答を許可する |
| 6 | #Smtp Pop3 pass in on eth0 proto tcp from 192.168.1.0/24 port > 1023 to any port = 25 pass out on eth0 proto tcp from any port = 25 to 192.168.1.0/24 port > 1023 established pass in on eth0 proto tcp from 192.168.1.0/24 port > 1023 to any port = 110 pass out on eth0 proto tcp from any port = 110 to 192.168.1.0/24 port > 1023 established |
内部PCから外部smtp/pop3サーバへの接続要求と応答を許可する |
| 7 | #passive FTP pass in on eth0 proto tcp from 192.168.1.0/24 port > 1023 to any port = 21 pass out on eth0 proto tcp from any port = 21 to 192.168.1.0/24 port > 1023 established pass in on eth0 proto tcp from 192.168.1.0/24 port > 1023 to any port > 1023 pass out on eth0 proto tcp from any port > 1023 to 192.168.1.0/24 port > 1023 established |
内部PCから外部ftpサーバへの接続要求と応答を許可する。PASVモードで外部ftpサーバへのデータ転送を許可する |
| 8 | ################################# # eth1 rules Internet network # ################################# #DHCP Server pass out on eth1 proto udp from any port = 68 to any port = 67 pass in on eth1 proto udp from any port = 67 to any port = 68 |
Internet側インターフェイスの定義。最初はDHCPクライアントとして動作するための設定 |
| 9 | #DNS pass out on eth1 proto udp from any port > 1023 to any port = 53 pass in on eth1 proto udp from any port = 53 to any port > 1023 pass out on eth1 proto tcp from any port > 1023 to any port = 53 pass in on eth1 proto tcp from any port = 53 to any port > 1023 |
外部DNSサーバへの問い合わせと応答を許可する |
| 10 | #http https(Outside) pass out on eth1 proto tcp from any port > 1023 to any port = 80 pass in on eth1 proto tcp from any port = 80 to any port > 1023 established pass out on eth1 proto tcp from any port > 1023 to any port = 443 pass in on eth1 proto tcp from any port = 443 to any port > 1023 established |
外部http/httpsサーバへの接続要求と応答を許可する |
| 11 | #http https(Inside) pass in on eth1 proto tcp from any port > 1023 to any port = 80 pass out on eth1 proto tcp from any port = 80 to any port > 1023 established |
自PCの公開httpサーバへの接続要求と応答を許可する |
| 12 | #Smtp Pop3(Outside) pass out on eth1 proto tcp from any port > 1023 to any port = 25 pass in on eth1 proto tcp from any port = 25 to any port > 1023 established pass out on eth1 proto tcp from any port > 1023 to any port = 110 pass in on eth1 proto tcp from any port = 110 to any port > 1023 established |
外部smtp/pop3サーバへの接続要求と応答を許可する |
| 13 | #Smtp Pop3(Inside) pass in on eth1 proto tcp from any port > 1023 to any port = 25 pass out on eth1 proto tcp from any port = 25 to any port > 1023 established |
自PCの公開smtpサーバへの接続要求と応答を許可する |
| 14 | #passive FTP pass out on eth1 proto tcp from any port > 1023 to any port = 21 pass in on eth1 proto tcp from any port = 21 to any port > 1023 established pass out on eth1 proto tcp from any port > 1023 to any port > 1023 pass in on eth1 proto tcp from any port > 1023 to any port > 1023 established |
外部ftpサーバへの接続要求と応答を許可する。PASVモードで外部ftpサーバへのデータ転送を許可する |
| 15 | # ICMP Type 0(echo reply) #pass out on eth1 proto icmp from any to any icmp-type echorep #pass in on eth1 proto icmp from any to any icmp-type echorep # ICMP Type 3(Destination Unreachable) pass out on eth1 proto icmp from any to any icmp-type unreach pass in on eth1 proto icmp from any to any icmp-type unreach # ICMP Type 4(Source Quench) pass out on eth1 proto icmp from any to any icmp-type squench pass in on eth1 proto icmp from any to any icmp-type squench # ICMP Type 8(echo req) #pass out on eth1 proto icmp from any to any icmp-type echo #pass in on eth1 proto icmp from any to any icmp-type echo # ICMP Type 11(ime Exceeded) pass out on eth1 proto icmp from any to any icmp-type timex pass in on eth1 proto icmp from any to any icmp-type timex |
ICMPはDestination Unreachable(3)、 Source Quench(4)、Time Exceeded(11)の通過を許可する。ICMPのTypeはicmp-type+名前で設定できる "echorep","unreach","squench" "redir","echo","router_adv" "router_sol","timex","paramprob" "timest","timestrep","inforeq" "inforep","maskreq","maskrep" |
この定義ではNATルータとして動作するため内部PCから外部httpサーバへのアクセスなどはLAN側とinternet側の2回フィルタにかかることになる。LAN側のフィルタを無くしてもいいのだがスループットがそれほど変わらなかったので精神衛生上2重フィルタとした。
どうしても気になるのがPASVモードのFTPのルール。
pass out on eth1 proto tcp from any port > 1023 to any port > 1023←これでは万が一Spywareが仕組まれたときに外部へのアクセスを防げない。できればNATで20番を内部のPCに転送するようにしてアクティブモードで使用したほうがいいと思う。制御ポートは変更する必要が無いのでデータ転送用の20番のほうだけを次のように変更する。
pass in on eth1 proto tcp from any port = 20 to any port > 1023
pass out on eth1 proto tcp from any port > 1023 to any port = 20 established
サーバ機の構成上内向きと外向きの2種類の設定を行っているが、単にhttpサーバやsmtpサーバとして動作させるならグローバル定義のNo.1,2とNo.8以下の外向きの定義だけでよい。
外部からIPを詐称(Spoofing)して内部に侵入するのを防ぐために接続要求のIPアドレスを限定する設定があるので参考のために挙げておく。WAN側のインターフェイスに設定する。
| * | #Spoofing IP Deny block in on eth1 proto tcp from 192.168.0.0/16 port > 1023 to any port any block in on eth1 proto tcp from 172.16.0.0/16 port > 1023 to any port any |
WAN側インターフェイスにプライベートアドレスでの接続を拒否する |
設定制御用のpktctl.exeは引数を設定することで下記のような動作を行う。
| ルール追加 | -a [ルール] | ルールを1行追加するときに使う |
| ルール削除 | -d [ルール] [インターフェイス番号] | 指定したインターフェイスのルールを1行削除する |
| ファイルからルール適用 | -f [ルール定義ファイル名] | ルールファイルからルールを追加する |
| コマンドモード | -i | インタラクティブモードらしいが、できることは他のコマンドと同じ。 |
| ルールの再設定 | -F [ルール定義ファイル名] | 指定のルールファイルでルールを再設定する(これまでのルールは消える) |
| ルールの一覧 | -l [インターフェイス番号] | インターフェイスごとのルールをリスト表示する |
| 番号付ルールの一覧 | -L [インターフェイス番号] | インターフェイスごとのルールを"rule nnn"の番号付でリスト表示する |
| 状態表示 | -s [インターフェイス番号] | 統計情報を表示する |
| 詳細な状態表示 | -S [インターフェイス番号] | 詳細な統計情報を表示する。ルールごとにマッチした数が表示される |
| ルールの再設定(NIC毎) | -Fa [インターフェイス番号] | 指定のインターフェイスのルールを再設定する(これまでのルールは消える) |
| NIC番号の表示 | -I | NICの番号表示 |
実際にDosウィンドウで実行してみると
| C:\>pktctl.exe -L eth0 # global options option small_frags on eth0 # default policy block in on eth0 all block out on eth0 all # input rules rule 1: pass in on eth0proto udp from any port = 68 to any port = 67 rule 2: pass in on eth0proto udp from 192.168.1.0/24 port > 1023 to 192.168.1.1 port = 53 rule 3: pass in on eth0proto tcp from 192.168.1.0/24 port > 1023 to 192.168.1.1 port = 53 # output rules rule 128: pass out on eth0proto udp from 192.168.1.1 port = 67 to any port = 68 rule 129: pass out on eth0proto udp from 192.168.1.1 port = 53 to 192.168.1.0/24 port > 1023 rule 130: pass out on eth0proto tcp from 192.168.1.1 port = 53 to 192.168.1.0/24 port > 1023 |
番号付のルール一覧 rule xx:というのが各ルールの前についている。一覧はInputとOutputに分かれて表示される |
| C:\>pktctl.exe -S eth0 Interface: eth0 Global: Fragmented packets dropped : 0 Input filters: Default action: block Active filters: 10 ←有効になっているルールの数 Dropped packets: 4827 ←ドロップしたパケット数 Details of rules matches: pass in on eth0proto udp from any port = 68 to any port = 67 : 1400 matches pass in on eth0proto udp from 192.168.1.0/24 port > 1023 to 192.168.1.1 port = 53 : 4932 matches pass in on eth0proto tcp from 192.168.1.0/24 port > 1023 to 192.168.1.1 port = 53 : 0 matches |
次に状態表示。各ルールの後ろにxxxx matchesと一致した数が表示される。DNS問い合わせはUDPばかりだな・・・ |
状態表示でルールにマッチした数がわかるので数日運用してみてマッチ数が0であれば該当ルールは不要として削除したほうがいいと思う。ルール数は少ないほど管理も楽だし、負荷も少ないからだ。
サービス登録時にログファイルを指定しているのでDropしたパケットのログが指定のフォルダに出力されている。
03/20/2004 18:00:13.582 eth1 @0:0 b 81.168.90.184 -> 202.225.243.xxx
PR icmp len 20 92
03/20/2004 18:01:16.021 eth1 @0:0 b 218.162.127.105,1995 -> 202.225.243.xxx,445
PR tcp len 20 48 -S
こんな感じ。内容は
| 03/20/2004 | 日付 |
| 18:01:16.021 | 時間 |
| eth1 | インターフェイス番号 |
| @0:0 | 適用したルール番号。ここでは該当ルール無しなので0 |
| b | Blockの意味。ちなみにAllowログは無い |
| 218.162.127.105,1995 | FromのIPとポート。218.162.127.105がIPで1995がポート |
| 202.225.243.xxx,445 | toのIPとポート。202.225.243.xxxがIPで445がポート |
| PR tcp | プロトコル。TCPかUDPかICMPが表示される |
| len 20 | ヘッダのレングス。20バイトということ |
| 48 | パケットのレングス。48バイトということ |
| -S | Synフラグが付いていたことをあらわす |
残念ながらICMPのログはタイプとコードがわからない。説明書にはタイプの記載があるのだが、現行バージョンでは見たことが無い(説明書には判定できたときだけと書いてあるせいかな)
・PktFilterのログ出力について
PktFilterはログの出力を行うために4096バイトのLog出力用バッファを確保している。しかし短時間に猛烈な数のDrop対象のパケットが飛んできたときにはバッファからログファイルへの出力が追いつかず、バッファからあふれてしまうケースが考えられる。このときにはログに
%u packets logged, %u packets lost, used buffer size was %u, total buffer size is %u(%uは各項目の数値)
が出てくるので、レジストリを編集してログサイズを拡張したほうがよい。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PktFilter\
キー値: LogBufferSize
設定値:ログバッファサイズ(バイト) 規定値4096
WindowsXPで使用するとログに何もでないという現象が発生する。メーリングリストに流れた情報で、筆者が確認したところうまくいかなかったのだがトライしてみる価値はあるかと思う。その方法はダイナミックリンクライブラリ・リダイレクションと言うらしい
・PktFilterのサービス起動順序の変更について
PktFilterは起動からフィルタが適用されるまで2分かかるということが言われている。これを少しでも早くするためにサービスの依存関係を定義するという情報があったので記載しておく。筆者はまだ試していないので効果は不明。
この情報はhttp://assarbad.net/stuff/pktfilter_inst.txtから引用した。
必要なツール
LoadOrder from http://www.sysinternals.com/
Service Manager from http://www.nttools-online.de/
"HKLM\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder"にPNP_TDIとTDIがあることを確認する
LoadOrderを起動して右上にある「Service」と「Device」の選択は"Service"を選ぶ。リストにはサービスが起動される順に一覧で表示される
LoadOrderを使うとPNP_TDI(TCP/IP,NBT)→TDI(DHCP,DNS・・)の順でLoadされることがわかる。
つぎにサービスに依存関係を設定する。
Service Managerで"Stateless Packet filter"を選んでPropertiesを見る。ここでは「Start Type」がAutomaticになっていることを確認して「Group」に"TDI"を設定する。
次に依存関係を設定する
Dependencies→Deviceを選択する。リスト中の「TCP/IPプロトコル ドライバ」をダブルクリックする。すると「Action」に"add"が現れる。
その後同様にGroupを選択してリストの"PNP_TDI"をダブルクリックする。これで変更終了。「適用」をクリックしてから「OK」でメイン画面に戻る。
次に右上の「Service」と「Device」の選択を"Device"にして"IP
Traffic Filter Driver"を選択する。
ここでは「Group」に"PNP_TDI"を設定する。
つぎにRegeditでレジストリを編集する。このレジストリの編集が終了するまでは決してRebootしてはいけないそうだ。
これでTDIグループのなかでPktFilterのLoad順序が1に設定される(らしい)。あとはRebootして完了と言うことだ。
・レジストリをいじるのはどうしても不安だがログを何とかしたいという方へ
事前に試してみれば難しいことではないのだが、やっぱりレジストリをいじるのは不安だという方は下記のバッチを参考にしてみてください。一時的にInternetとの接続を無効にするので2分間は外部から接続できなくなりますがログの改名を行います。
| echo off ipconfig /release net stop "Stateless Packet Filtering" set Logname=%DATE:~2,4%%DATE:~7,2%%DATE:~10,2% set LogFile=%Logname%.log D: cd "D:\LogData\Packet Filter Log" ren PktFilter.log %LogFile% net start "Stateless Packet Filtering" sleep.exe 130 ipconfig /renew |
プロバイダから割当てされたIPを放棄にする PktFilterのサービスを停止する ログファイル用のファイル名(日付)取得 ログファイルをyyyymmdd.logとする ログファイルのフォルダに移動 現在のログファイル名を変更 PktFilterのサービスを起動 130秒間なにもしない プロバイダからIPを取得する |
やっていることはPktFilterのサービスの停止・起動とログファイルの名前変更です。筆者の環境はCATVなのでNT系のipconfig.exeでDHCPで割り当てられたIPを放棄して一時的に接続できない状態にしています。ipconfig /renewでIPアドレスが変わる可能性があるのでDDNSを使った環境であればアドレスの更新が必要になります。sleep.exeはよくあるスリープするだけのモジュールです。
・CGI起動時のタイムラグ
NAT(RRAS)+PktFilterでhttpサーバを構築して掲示板のCGIを動作させたときにリクエスト→結果表示まで5〜10秒もかかる現象が出た。PktFilterを停止すると1秒もかからないで結果が表示される。原因を調べたところNICの接続ネゴシエーションがAutoになっていると再現することがわかった。現在は100MのFull Duplexに設定して解決している。
・WindowsのRRAS(Routing and Remote Access Service)との共用
PktFilterはRRASのパケットフィルタ機能と同じドライバ(API)を使用しているのでRRASを使ってルーター等を構成するときにはRRAS側のパケットフィルタを設定してはいけない。もし設定するとドライバをCallするときに衝突が発生しハングアップする可能性がある。またRRASをインストールしているだけでイベントログ(システム)に"RRAS service is running and may conflict with Stateless Packet Filtering service"が 出力されるが気にしなくてよい。
・感想
実際にPktFilterを運用開始して3ヶ月以上経過したが、サービスが実際に停止したのは同一ISPの他のユーザーからポートスキャンとWebサイトへの攻撃を同時に受けたときの2回だけであった。PktFilterのドライバの問題なのか、RRASとの絡みなのかは判断できていないのでPktFilterが弱いとは思っていない。(以降6ヶ月止まることなく動いている)
また毎日ログの切り替えを行っているが、サービスの再起動を行っている最中にポートスキャンを試みたがフィルタの適用に2分かかることもなく数秒間で復帰するようである。