2005年1月15日

[vine-users:069709] Vine3.1にてiptables-nat-OUTPUTが機能しない

はじめまして。田原@越谷と申します。
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

投稿者 xml-rpc : 2005年1月15日 10:00
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/11534
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。