vine-users ML アーカイブ



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

  • From: "K.Tahara" <taharak@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:069709] Vine3.1に てiptables-nat-OUT PUTが機能しない
  • Date: Sat, 15 Jan 2005 10:00:53 +0900
はじめまして。田原@越谷と申します。
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