[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 メーリングリストの案内