[Armadillo:07200] Re: Armadillo-440でnetfilterのnat機能等を組込みたいのですがエラーがでます。

Masakazu Itoh email@hidden
2011年 5月 10日 (火) 15:16:42 JST


竹之下様。

お世話になっております。伊藤です。
ご回答ありがとうございます。

現状、iptabelsを組み込めていません。

状況や試したことを以下に記述しますので、
引き続きご教示よろしくお願いいたします。


教えていただきました、
>http://git.netfilter.org/cgi-bin/gitweb.cgi?p=iptables.git;a=commitdiff;h=
>40d54756cd8a2705e22b36f7aef03bb2c472a10b
を参照させていただき、対象になるファイル
libip6t_state.c
libipt_DNAT.c
libipt_MASQUERADE.c
libipt_NETMAP.c
libipt_REDIRECT.c
libipt_SAME.c
libipt_SNAT.c
libipt_connbytes.c
libipt_connrate.c
libipt_conntrack.c
libipt_state.c
のインクルードファイルのパスを変更して
みましたが、nf_nat.hがないというコンパイルエラーがでました。

Armadillo-440用のカーネル(linux-2.6.26-at14.tar.gz)を見ると
nf_nat.hは
>#include <linux/netfilter/nf_nat.h>
ではなく
#include <net/netfilter/nf_nat.h>
に配置されているようです。
とりあえず、#include <net/netfilter/nf_nat.h>
と記述してビルドをしてみましたが、
例えば、一例ですが以下のようなエラーがatmark-distの/user/iptable以下を
修整するたびに発生します。
from extensions/libipt_MASQUERADE.c:11:
/home/atmark/work/dist-work-latest/linux-2.6.26-at14/include/net/
netfilter/nf_conntrack_tuple.h:157: 
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before 
‘__nf_ct_tuple_src_equal’


それでnetfilterのサイト
http://www.netfilter.org/projects/iptables/downloads.html
からiptablesをダウンロードして確かめたところ、iptables1.4.3以降が
Armadillo-440用のカーネル(linux-2.6.26-at14.tar.gz)で記述されている
インクルードパスと一致しているようです。

atmark-dist/user/iptablesを、このiptables1.4.3以降におきかえることが
linuxカーネルとiptableのバージョンをあわせるには適正かと思い

iptable1.4.10を解凍して、atmark-dist/user/iptablesに置き換えて
./configureを実行してみましたが、それだけでは、
やはり、atmark-dist環境にあったMakefileは作成されませんでした。

上記のようなかたちでiptablesを置き換える際の適切な手段、方法をご教示いた
だければ
幸いです。

以上、よろしくお願いいたします。



>竹之下です。
>
>Masakazu Itoh さんは書きました:
>> 伊藤と申します。お世話になります。
>> 
>> Armadillo-440にnetfilterの機能を組み込もうとしてますが
>> 次のようにファイルがないというエラーがでます。
>> 
>> arm-linux-gnueabi-gcc  -Wall -Wunused -Iinclude/ -DIPTABLES_VERSION=\"1.
>> 3.6\" -O2  -I/usr/arm-linux-gnueabi/include -I/usr/lib/gcc/arm-linux-
>> gnueabi/4.3.2//include -isystem /usr/lib/gcc/arm-linux-gnueabi/4.3.2//
>> include-fixed -I/usr/arm-linux-gnueabi/include -I/usr/lib/gcc/arm-linux-
>> gnueabi/4.3.2//include -isystem /usr/lib/gcc/arm-linux-gnueabi/4.3.2//
>> include-fixed -Dlinux -D__linux__ -Dunix -DEMBED -idirafter /home/atmark
>> /work/dist-work-latest/atmark-dist-20110326/include -Wall -fno-common  -
>> I/home/atmark/work/dist-work-latest/atmark-dist-20110326 -
>> DNO_SHARED_LIBS=1 -D_INIT=ipt_MASQUERADE_init -c -o extensions/
>> libipt_MASQUERADE.o extensions/libipt_MASQUERADE.c
>> extensions/libipt_MASQUERADE.c:9:46: error: linux/netfilter_ipv4/
>> ip_nat_rule.h: そのようなファイルやディレクトリはありません
>> 
>> 回避方法をご教示いただけますと幸いです。
>エラーが出ているファイルの、
>#include <linux/netfilter_ipv4/ip_nat_rule.h>
>という行を、
>#include <linux/netfilter/nf_nat.h>
>に変更して、試していただけますか?
>
>iptablesの本家では、そのような変更がなされているようです。
>http://git.netfilter.org/cgi-bin/gitweb.cgi?p=iptables.git;a=commitdiff;h=
>40d54756cd8a2705e22b36f7aef03bb2c472a10b
>
>> 設定や環境は以下のとおりです。
>> 
>> クロス開発環境はWindows上のVMWare atde3です。
>> make環境の設定手順と目的は以下のとおりです。
>> 
>> 目的:
>> ・netfilterのrawテーブル、natテーブル、mangleテーブルの組み込み
>> ・netfilterのDNAT/SNATなどのターゲットの組み込み
>> 
>> 使用アーカイブ:
>> http://armadillo.atmark-techno.com/downloadsから
>> ・Atmark Dist(v20110326,118.72 MB)
>> ・Armadillo440(linux-2.6.26-at14, 60.43 MB)
>> 
>> 手順:
>> ・ソースコードアーカイブ(atmark-dist)を展開、ドキュメントに従って設定後
>>   make allを実施して実行形式を一度作成
>> 
>> ・「make menuconfig」のCustomize Kernel Settingsで次の設定しています。
>> 
>>   Networking --->
>>    Networking options --->
>>     Network packet filtering framework(Netfilter) --->
>>      Core Netfilter Configration --->Netfilter connection tracking 
>> supportを
>>                                      マーキング(*)
>>      IP:Netfilter Configuration --->IPv4 connection tracking support
>>                                     (required for NAT)をマーキング(*)
>>                                   Full NAT
>>                                      MASQUERADE target support
>>                                      REDIRECT target support
>>                                      NETMAP target support
>>                                      Basic ANMP-ALG support
>>                                   Packet mangling
>>                                      ECN target support
>>                                      TTL target support
>>                                      CLUSTERIP target support
>>                                   raw table support(required for NOTRACK
>> /TRACE)
>>                                   以上、Full NATから全てをマーキング(*)
>> 
>> ・以上設定後にmakeを実施。上記のエラーが出ます。
>> 
>> 
>> それともう一点、ご教示いただきたいことがございます。
>> Armadillo440のシェル画面(PCのターミナルTeraTerm)から、iptableの設定をす
>> るために
>>   「iptables -t nat -A OUTPUT -p tcp -d 202.212.38.48 --dport 80 -j DNAT 
>>    --to-destination 203.216.235.222」
>> のように入力しますが --dport,--to-destination,のオプションが"Unknown arg"
>> ということではじかれてしまいます。
>> これは、上記のmakeがとおれば、自動的に解決することでしょうか
>> それとも、なにか別途対処が必要でしょうか
>> 
>> 以上、アドバイスをいただけますと幸いに存じます。
>> よろしくお願い申し上げます。
>> 
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>> 
>
>
>-- 
>Koyo Takenoshita
>
>_______________________________________________
>armadillo mailing list
>email@hidden
>http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo



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