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