[Armadillo:08310] Re: Armadillo-420 WLAN モデル開発セット(AWL13対応)でのIPルーティング環境について

Yasuhisa Nakamura email@hidden
2012年 9月 7日 (金) 10:23:35 JST


中村です。

[Armadillo:08308]で・・・
>> > modprobe: module ip_tables not found.
>
> というエラーはip_tables.koがinsmodされていない
> と推測すればよろしいでしょうか?

iptablesのソースを見ると、そうではないようです。
もちろん、ドライバをモジュールとしてビルドしていれば
そうかもしれませんが、「必ず.koが必要」ということでは
ないはずです。

user/iptables/iptables.cのdo_command()の中に次のコードがあります。

        /* only allocate handle if we weren't called with a handle */
        if (!*handle)
                *handle = iptc_init(*table);

        /* try to insmod the module if iptc_init failed */
        if (!*handle && iptables_insmod("ip_tables", modprobe) != -1)
                *handle = iptc_init(*table);

        if (!*handle)
                exit_error(VERSION_PROBLEM,
                           "can't initialize iptables table `%s': %s",
                           *table, iptc_strerror(errno));

今回の場合、変数tableには"nat"が入っています。
1回のiptc_init()が成功すればそれで終わりですが、失敗したとき、
iptables_insmod()で、modprobe ip_tables を試しています。
この時に出るエラーメッセージが
>> > modprobe: module ip_tables not found.
のようです。
modprobe失敗ですから、
  iptables v1.3.6: can't initialize iptables table `nat': .....
というエラーメッセージも出ます。


> もしそうだとしたらarmadillo-420カーネルビルド時に
> ip_tables.koが出来上がれば解決するような気がしますが
> 違いますでしょうか?

モジュールにしip_tables.koを作ったとしても、nat対応していなければ、
上の2回目のiptc_init()が失敗しますね。


前に書きましたが将来自分でも必要になるので、
[Armadillo:07204]のパッチを試してみました。
(以前はこれを見つけたところで時間切れだったもので・・・)

[Armadillo:07208]の記事で、パッチを当てても、ヘッダファイルが
見つからないなどの対応(修正)が必要と書かれていましたが、
私が欲しい機能では、そういったビルドエラーは発生しませんでした。

やることは、カーネルコンフィグを変更し、[Armadillo:07204]
  http://lists.atmark-techno.com/pipermail/armadillo/2011-May/007207.html
に添付されているパッチを当てるだけです。

使った環境は、最新のATDE3(今年の7月版)、
atmark-dist-20120727、linux-2.6.26-at16 です。

私に必要なのは、NAT/MASQUERADE、stateマッチ、recentマッチ、LOGターゲットで、
このためのカーネルコンフィグレーションの変更は、次の通りです。

Linux Kernel Configuration
 -> Networking
  -> [*] Networking support
       Networking options
   -> [*] Network packet filtering framework (Netfilter)
    -> Core Netfilter Configuration
     -> <*> Netfilter connection tracking support
        [*]   Connection tracking flow accounting
        [*]   Connection mark tracking support
        [*]   Connection tracking events
        -*- Netfilter Xtables support (required for ip_tables)
        <*>   "state" match support
    -> IP: Netfilter Configuration
     -> <*> IPv4 connection tracking support (required for NAT)
        <*> IP tables support (required for filtering/masq/NAT)
        <*>   "recent" match support
        <*>   Packet filtering
        <*>     REJECT target support
        <*>   LOG target support
        <*>   Full NAT
        <*>     MASQUERADE target support

// 最初から<*>になっていたものも含んでいます
// "<*> Netfilter connection tracking support"の次の2つの[*]は
// 必要なのかどうかわかりません。

recentマッチはまだ動作を試していませんが(コマンドを受け付ける
ことは確認)、stateマッチとMASQUERADEは動作することを確認しました。

今のところ使う予定はないのですけど、SNAT/DNATも試してみたところ、
これは、[Armadillo:07208]
  http://lists.atmark-techno.com/pipermail/armadillo/2011-May/007211.html
に書かれているMakefileの修正
  atmark-dist/user/iptables/extensions/Makefileの71行目
  ifneq ($(CONFIG_IP_NF_NAT)$(CONFIG_IP_NF_NAT_MODULE),)を
  ifneq ($(CONFIG_NF_NAT)$(CONFIG_IP_NF_NAT_MODULE),)に変更して
が必要でした。

SNATとDNATも動作確認まではしていません。iptablesコマンドで
SNATやDNATを受け付けるかどうか、だけです。

-- 
なかむら




armadillo メーリングリストの案内