はじめまして。田原@越谷と申します。 Vineで自宅にてネット閲覧、デジカメ写真閲覧を主にしており、 簡単なシェルスクリプト等を読み書きできる程度の初心者です。 メーリングリストへの参加もこれが初めてです。 さて表題の件について、 Vine3.1.PPCのftp版にて、自宅の1台のMacで以下のようにiptablesを設定して、 ブラウザでのファイアーウォール設定をせずにsquidを使おうとしています。 squidは透過型プロキシの設定にしてあります。 ###以下/etc/rc.local末尾に記載(最後の2行は実際には1行)。 echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_dynaddr iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner 23 -j REDIRECT --to-port 3128 ###このときのiptables -t nat -L OUTPUTの出力結果は次のとおり。 Chain OUTPUT (policy ACCEPT) target prot opt source destination REDIRECT tcp -- anywhere anywhere tcp dpt:http ! OWNER UID match squid redir ports 3128 しかし/var/log/squid/access.log(squidのログファイル)が更新されず、 iptablesが機能していないのではないかと考えました。 そこでnatテーブルのOUTPUTチェインにicmpをDROPするルールを書いて、 pingでのテストを実施すると、DROPされずに通ってしまう現象が確認されました。 同様にfilterテーブルのOUTPUTチェインとnatテーブルのPOSTROUTINGチェインをテストすると、 きちんとDROPされました。 このテストの概略はこのメールの最後に示します。 iptablesのnatテーブルのOUTPUTチェインに限って機能しないという現象について、 解決の糸口をアドバイスいただければ幸いです。 その他の情報を列挙します。 1.ブラウザw3mとmozillaにてファイアーウォール設定でsquidを使用するようにすると、 squidのログファイルが更新されていくため、squidは正常に動作していると考えられました。 2. iptables関連のログはほとんど記録されていません。/var/log/messagesに以下があるだけでした。 Jan 14 21:18:41 localhost kernel: ip_tables: (C) 2000-2002 Netfilter core team Jan 14 21:18:41 localhost kernel: ip_conntrack version 2.1 (1792 buckets, 14336 max) - 288 bytes per conntrack 3.複数回インストールしなおしましたが、状況は同じでした。 インストール方法は次の2通りを試しました。 どの回でもインストール後に必要なRPMを追加しています。 3-1. apt-getでVine2.6を2.6.99にアップデートして、その後さらに3.1にアップデートした。 3-2. Vine3.1のCDイメージをmount -o loopしてから、内容をハードディスクにコピーして、 可能な分だけソフトリンクをファイルの実体に修正した後に、ハードディスクからインストールした。 4. Vine2.6では、前記のiptablesのREDIRECTにした状況でsquidのログファイルが更新されていき、 意図のとおりに動作しました。また前記のpingでのテスト結果も正常でした。 5. 意図通りに動作するVine2.6と、意図通りに動作しないVine3.1では、 lsmodの出力に違いが見られました。 ip_conntrackの3番目のフィールドの数値が、 Vine2.6では1となっていたが、Vine3.1では0となっていました(後述)。 そこでVine3.1でinsmod ip_conntrackとしてみましたが、 iptablesのREDIRECTにした状況、pingでのテストの状況、lsmodの出力共に、 変化は見られませんでした。 6.キーワードをiptables、nat、OUTPUTとして、<http://search.luky.org/>と <http://www.google.co.jp/>で検索しましたが、同様の例は探せませんでした。 さらにjman iptables、packet-filtering-HOWTO(日本語)、NAT-HOWTO(日本語)、 <http://www.netfilter.org/>も読みましたが、有効な情報は見当たりませんでした。 私の環境は以下のとおりです。 PowerMac G3/DT266:BootXで起動。 Vine3.1:ring.airnet.ne.jpより取得 kernel-2.4.26-0vl17 iptables-1.2.10-0vl2 iptables-devel-1.2.10-0vl2 Vine2.6:ring.airnet.ne.jpより取得 kernel-2.4.22-0vl2.15 iptables-1.2.7a-0vl1 前記pingでのテストの概略 Vine3.1でscriptで記録した結果です(手動で整形してあります)。 iptables関連のカーネルモジュールがロードされていない状況から開始しています。 スクリプトは 2005年01月14日 22時06分01秒 に開始しました root ~# alias pingtest='ping -c1 127.0.0.1 >/dev/null 2>&1; echo $?' root ~# lsmod >./state.init root ~# iptables -A OUTPUT -p icmp -j DROP root ~# pingtest 1 <−−− DROPされた root ~# iptables -D OUTPUT -p icmp -j DROP root ~# pingtest 0 root ~# iptables -t nat -A POSTROUTING -p icmp -j DROP root ~# pingtest 1 <−−− DROPされた root ~# iptables -t nat -D POSTROUTING -p icmp -j DROP root ~# pingtest 0 root ~# iptables -t nat -A OUTPUT -p icmp -j DROP root ~# pingtest 0 <−−− !!! DROPされなかった !!! root ~# lsmod | diff state.init - --- state.init 2005-01-14 22:07:02.000000000 +0900 +++ - 2005-01-14 22:11:58.247251000 +0900 @@ -1,0 +2,4 @@ +iptable_nat 27402 1 (autoclean) +ip_conntrack 40052 0 (autoclean) [iptable_nat] <− 3番目のフィールドが? +iptable_filter 2528 0 (autoclean) +ip_tables 24032 4 [iptable_nat iptable_filter] root ~# iptables -t nat -D OUTPUT -p icmp -j DROP root ~# pingtest 0 root ~# exit スクリプトは 2005年01月14日 22時13分18秒 に終了しました よろしくお願いします。 -- K.Tahara