Armadilloフォーラム

MASQUERADE target supportのmakeでエラーの件

yoshizu

2014年11月7日 13時42分

yoshizuです
お世話になっています

armadillo-840
atmark-dist-20140131
linux-3.4-at9
の環境で

make menucnfigにて

 [*] (ustomize Kernel Settings (NEW)

 --- Networking support
 Networking options --->
 [*] Network backet filtering framework (Netfilter) --->

 Core Netfilter Configuration --->
 <*> Netfilter connection tracking support

 IP: Netfilter Configuration --->
 <*> Full NAT
 <*> MASQUERADE target support

としてmake dep;makeを実行しましたところ

arm-linux-gnueabihf-gcc -Wall -Wunused -Iinclude/ -DIPTABLES_VERSION=\\"1.3.6\\" -O2 -march=armv7-a -mtune=cortex-a9 -mfpu=neon -I/usr/arm-linux-gnueabihf/include -I/usr/lib/gcc/arm-linux-gnueabihf/4.6//include -isystem /usr/lib/gcc/arm-linux-gnueabihf/4.6//include-fixed -march=armv7-a -mtune=cortex-a9 -mfpu=neon -I/usr/arm-linux-gnueabihf/include -I/usr/lib/gcc/arm-linux-gnueabihf/4.6//include -isystem /usr/lib/gcc/arm-linux-gnueabihf/4.6//include-fixed -Dlinux -D__linux__ -Dunix -DEMBED -idirafter /home/atmark/atmark-dist-20140131/include -Wall -fno-common -I/home/atmark/atmark-dist-20140131 -DNO_SHARED_LIBS=1 -D_UNKNOWN_KERNEL_POINTER_SIZE -D_INIT=ipt_MASQUERADE_init -c -o extensions/libipt_MASQUERADE.o extensions/libipt_MASQUERADE.c
extensions/libipt_MASQUERADE.c:9:46: fatal error: linux/netfilter_ipv4/ip_nat_rule.h: そのようなファイルやディレクトリはありません
compilation terminated.
make[2]: *** [extensions/libipt_MASQUERADE.o] エラー 1
make[2]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/iptables' から出ます
make[1]: *** [all] エラー 2
make[1]: ディレクトリ `/home/atmark/atmark-dist-20140131/user' から出ます
make: *** [subdirs] エラー 1

となりましたので

http://lists.atmark-techno.com/pipermail/armadillo/2011-May/007195.html
を参考に

#include
という行を、
#include
に変更して、再makeしました

すると

make[3]: `all' に対して行うべき事はありません.
make[3]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/i2c-tools/i2c-tools-3.0.2' から出ます
make[2]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/i2c-tools' から出ます
/bin/sh: 1: extensions/.dccp-test: Permission denied
/bin/sh: 1: extensions/.layer7-test: Permission denied
/bin/sh: 1: extensions/.statistic-test: Permission denied
make[2]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/iptables' に入ります
Extensions found: IPv4:CLUSTERIP IPv4:quota IPv6:REJECT IPv6:ah IPv6:frag IPv6:ipv6header IPv6:rt
arm-linux-gnueabihf-gcc -Wall -Wunused -Iinclude/ -DIPTABLES_VERSION=\\"1.3.6\\" -O2 -march=armv7-a -mtune=cortex-a9 -mfpu=neon -I/usr/arm-linux-gnueabihf/include -I/usr/lib/gcc/arm-linux-gnueabihf/4.6//include -isystem /usr/lib/gcc/arm-linux-gnueabihf/4.6//include-fixed -march=armv7-a -mtune=cortex-a9 -mfpu=neon -I/usr/arm-linux-gnueabihf/include -I/usr/lib/gcc/arm-linux-gnueabihf/4.6//include -isystem /usr/lib/gcc/arm-linux-gnueabihf/4.6//include-fixed -Dlinux -D__linux__ -Dunix -DEMBED -idirafter /home/atmark/atmark-dist-20140131/include -Wall -fno-common -I/home/atmark/atmark-dist-20140131 -DNO_SHARED_LIBS=1 -D_UNKNOWN_KERNEL_POINTER_SIZE -D_INIT=ipt_MASQUERADE_init -c -o extensions/libipt_MASQUERADE.o extensions/libipt_MASQUERADE.c
In file included from extensions/libipt_MASQUERADE.c:10:0:
/home/atmark/atmark-dist-20140131/include/linux/netfilter/nf_nat.h:16:31: error: field ‘min’ has incomplete type
/home/atmark/atmark-dist-20140131/include/linux/netfilter/nf_nat.h:17:31: error: field ‘max’ has incomplete type
extensions/libipt_MASQUERADE.c: In function ‘init’:
extensions/libipt_MASQUERADE.c:35:4: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c: At top level:
extensions/libipt_MASQUERADE.c:41:37: warning: ‘struct ip_nat_multi_range’ declared inside parameter list [enabled by default]
extensions/libipt_MASQUERADE.c: In function ‘parse_ports’:
extensions/libipt_MASQUERADE.c:46:4: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:46:24: error: ‘IP_NAT_RANGE_PROTO_SPECIFIED’ undeclared (first use in this function)
extensions/libipt_MASQUERADE.c:46:24: note: each undeclared identifier is reported only once for each function it appears in
extensions/libipt_MASQUERADE.c:54:5: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:55:8: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:68:5: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:69:5: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c: In function ‘parse’:
extensions/libipt_MASQUERADE.c:101:3: warning: passing argument 2 of ‘parse_ports’ from incompatible pointer type [enabled by default]
extensions/libipt_MASQUERADE.c:41:1: note: expected ‘struct ip_nat_multi_range *’ but argument is of type ‘struct ip_nat_multi_range *’
extensions/libipt_MASQUERADE.c: In function ‘print’:
extensions/libipt_MASQUERADE.c:122:30: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:124:7: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:124:17: error: ‘IP_NAT_RANGE_PROTO_SPECIFIED’ undeclared (first use in this function)
extensions/libipt_MASQUERADE.c:126:17: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:127:8: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:127:27: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:128:19: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c: In function ‘save’:
extensions/libipt_MASQUERADE.c:139:30: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:141:7: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:141:17: error: ‘IP_NAT_RANGE_PROTO_SPECIFIED’ undeclared (first use in this function)
extensions/libipt_MASQUERADE.c:142:28: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:143:8: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:143:27: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c:144:19: error: dereferencing pointer to incomplete type
extensions/libipt_MASQUERADE.c: At top level:
extensions/libipt_MASQUERADE.c:152:11: error: invalid application of ‘sizeof’ to incomplete type ‘struct ip_nat_multi_range’
extensions/libipt_MASQUERADE.c:153:19: error: invalid application of ‘sizeof’ to incomplete type ‘struct ip_nat_multi_range’
make[2]: *** [extensions/libipt_MASQUERADE.o] エラー 1
make[2]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/iptables' から出ます
make[1]: *** [all] エラー 2
make[1]: ディレクトリ `/home/atmark/atmark-dist-20140131/user' から出ます
make: *** [subdirs] エラー 1
atmark@atde5:~/atmark-dist-20140131$

となりました。

対処方法を、ご教授願います

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

コメント

yoshizuです
お世話になっています

残念ながら、この問題を自力で解決できていません
有線LANと無線LAN間のルーティングを行う方法で、MASQUERADEを利用する
方法以外にご存じの方は、おられませんでしょうか?

以上よろしくお願い致します

> yoshizuです
> お世話になっています
>
>
>
> armadillo-840
> atmark-dist-20140131
> linux-3.4-at9
> の環境で
>
> make menucnfigにて
>
>  [*] (ustomize Kernel Settings (NEW)
>
>  --- Networking support
>  Networking options --->
>  [*] Network backet filtering framework (Netfilter) --->
>
>  Core Netfilter Configuration --->
>  <*> Netfilter connection tracking support
>
>  IP: Netfilter Configuration --->
>  <*> Full NAT
>  <*> MASQUERADE target support
>
> としてmake dep;makeを実行しましたところ
>
>
> arm-linux-gnueabihf-gcc -Wall -Wunused -Iinclude/ -DIPTABLES_VERSION=\\"1.3.6\\" -O2 -march=armv7-a -mtune=cortex-a9 -mfpu=neon -I/usr/arm-linux-gnueabihf/include -I/usr/lib/gcc/arm-linux-gnueabihf/4.6//include -isystem /usr/lib/gcc/arm-linux-gnueabihf/4.6//include-fixed -march=armv7-a -mtune=cortex-a9 -mfpu=neon -I/usr/arm-linux-gnueabihf/include -I/usr/lib/gcc/arm-linux-gnueabihf/4.6//include -isystem /usr/lib/gcc/arm-linux-gnueabihf/4.6//include-fixed -Dlinux -D__linux__ -Dunix -DEMBED -idirafter /home/atmark/atmark-dist-20140131/include -Wall -fno-common -I/home/atmark/atmark-dist-20140131 -DNO_SHARED_LIBS=1 -D_UNKNOWN_KERNEL_POINTER_SIZE -D_INIT=ipt_MASQUERADE_init -c -o extensions/libipt_MASQUERADE.o extensions/libipt_MASQUERADE.c
> extensions/libipt_MASQUERADE.c:9:46: fatal error: linux/netfilter_ipv4/ip_nat_rule.h: そのようなファイルやディレクトリはありません
> compilation terminated.
> make[2]: *** [extensions/libipt_MASQUERADE.o] エラー 1
> make[2]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/iptables' から出ます
> make[1]: *** [all] エラー 2
> make[1]: ディレクトリ `/home/atmark/atmark-dist-20140131/user' から出ます
> make: *** [subdirs] エラー 1
>
>
> となりましたので
>
>
>
> http://lists.atmark-techno.com/pipermail/armadillo/2011-May/007195.html
> を参考に
>
> #include<linux/netfilter_ipv4/ip_nat_rule.h>
> という行を、
>.#include<linux/netfilter/nf_nat.h>
> に変更して、再makeしました
>
> すると
>
>
> make[3]: `all' に対して行うべき事はありません.
> make[3]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/i2c-tools/i2c-tools-3.0.2' から出ます
> make[2]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/i2c-tools' から出ます
> /bin/sh: 1: extensions/.dccp-test: Permission denied
> /bin/sh: 1: extensions/.layer7-test: Permission denied
> /bin/sh: 1: extensions/.statistic-test: Permission denied
> make[2]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/iptables' に入ります
> Extensions found: IPv4:CLUSTERIP IPv4:quota IPv6:REJECT IPv6:ah IPv6:frag IPv6:ipv6header IPv6:rt
> arm-linux-gnueabihf-gcc -Wall -Wunused -Iinclude/ -DIPTABLES_VERSION=\\"1.3.6\\" -O2 -march=armv7-a -mtune=cortex-a9 -mfpu=neon -I/usr/arm-linux-gnueabihf/include -I/usr/lib/gcc/arm-linux-gnueabihf/4.6//include -isystem /usr/lib/gcc/arm-linux-gnueabihf/4.6//include-fixed -march=armv7-a -mtune=cortex-a9 -mfpu=neon -I/usr/arm-linux-gnueabihf/include -I/usr/lib/gcc/arm-linux-gnueabihf/4.6//include -isystem /usr/lib/gcc/arm-linux-gnueabihf/4.6//include-fixed -Dlinux -D__linux__ -Dunix -DEMBED -idirafter /home/atmark/atmark-dist-20140131/include -Wall -fno-common -I/home/atmark/atmark-dist-20140131 -DNO_SHARED_LIBS=1 -D_UNKNOWN_KERNEL_POINTER_SIZE -D_INIT=ipt_MASQUERADE_init -c -o extensions/libipt_MASQUERADE.o extensions/libipt_MASQUERADE.c
> In file included from extensions/libipt_MASQUERADE.c:10:0:
> /home/atmark/atmark-dist-20140131/include/linux/netfilter/nf_nat.h:16:31: error: field ‘min’ has incomplete type
> /home/atmark/atmark-dist-20140131/include/linux/netfilter/nf_nat.h:17:31: error: field ‘max’ has incomplete type
> extensions/libipt_MASQUERADE.c: In function ‘init’:
> extensions/libipt_MASQUERADE.c:35:4: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c: At top level:
> extensions/libipt_MASQUERADE.c:41:37: warning: ‘struct ip_nat_multi_range’ declared inside parameter list [enabled by default]
> extensions/libipt_MASQUERADE.c: In function ‘parse_ports’:
> extensions/libipt_MASQUERADE.c:46:4: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:46:24: error: ‘IP_NAT_RANGE_PROTO_SPECIFIED’ undeclared (first use in this function)
> extensions/libipt_MASQUERADE.c:46:24: note: each undeclared identifier is reported only once for each function it appears in
> extensions/libipt_MASQUERADE.c:54:5: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:55:8: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:68:5: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:69:5: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c: In function ‘parse’:
> extensions/libipt_MASQUERADE.c:101:3: warning: passing argument 2 of ‘parse_ports’ from incompatible pointer type [enabled by default]
> extensions/libipt_MASQUERADE.c:41:1: note: expected ‘struct ip_nat_multi_range *’ but argument is of type ‘struct ip_nat_multi_range *’
> extensions/libipt_MASQUERADE.c: In function ‘print’:
> extensions/libipt_MASQUERADE.c:122:30: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:124:7: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:124:17: error: ‘IP_NAT_RANGE_PROTO_SPECIFIED’ undeclared (first use in this function)
> extensions/libipt_MASQUERADE.c:126:17: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:127:8: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:127:27: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:128:19: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c: In function ‘save’:
> extensions/libipt_MASQUERADE.c:139:30: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:141:7: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:141:17: error: ‘IP_NAT_RANGE_PROTO_SPECIFIED’ undeclared (first use in this function)
> extensions/libipt_MASQUERADE.c:142:28: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:143:8: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:143:27: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c:144:19: error: dereferencing pointer to incomplete type
> extensions/libipt_MASQUERADE.c: At top level:
> extensions/libipt_MASQUERADE.c:152:11: error: invalid application of ‘sizeof’ to incomplete type ‘struct ip_nat_multi_range’
> extensions/libipt_MASQUERADE.c:153:19: error: invalid application of ‘sizeof’ to incomplete type ‘struct ip_nat_multi_range’
> make[2]: *** [extensions/libipt_MASQUERADE.o] エラー 1
> make[2]: ディレクトリ `/home/atmark/atmark-dist-20140131/user/iptables' から出ます
> make[1]: *** [all] エラー 2
> make[1]: ディレクトリ `/home/atmark/atmark-dist-20140131/user' から出ます
> make: *** [subdirs] エラー 1
> atmark@atde5:~/atmark-dist-20140131$
>
>
>
> となりました。
>
> 対処方法を、ご教授願います
>
> 以上、よろしくお願い致します。
>
>
>

at_takashi.sasayama

2014年12月1日 10時49分

笹山です。

> armadillo-840
> atmark-dist-20140131
> linux-3.4-at9

上記環境で iptables のビルドエラーを解消する暫定パッチを添付します。
パッチ名:atmark-dist-20140131-fix-iptables-build-error.patch

パッチは atmark-dist20140131 配下に格納後、patchコマンドで適用できます。

atmark@atde5:~/atmark-dist20140131$ patch -p1 < atmark-dist-20140131-fix-iptables-build-error.patch

本問題は今後の製品アップデートで修正をします。
ビルドエラーのご報告ありがとうございました。

ファイル ファイルの説明
atmark-dist-20140131-fix-iptables-build-error.patch atmark-dist-20140131 用 iptables ビルドエラー 暫定パッチ

笹山様
yoshizuです
いつもお世話になっています

提供いただいたパッチでコンパイルエラーも解消され

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#
もエラーなく実行できました。
しかしながら

#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.7.0/24 -j SNAT --to-source 192.168.20.100 
#iptables v1.3.6: Unknown arg `--to-source'
#Try `iptables -h' or 'iptables --help' for more information.

となってしまいました。

何かカーネルコンフィグレーションで足りないものが考えられるでしょうか?

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

> 笹山です。
>
> > armadillo-840
> > atmark-dist-20140131
> > linux-3.4-at9
>
> 上記環境で iptables のビルドエラーを解消する暫定パッチを添付します。
> パッチ名:atmark-dist-20140131-fix-iptables-build-error.patch
>
> パッチは atmark-dist20140131 配下に格納後、patchコマンドで適用できます。
>
>

> atmark@atde5:~/atmark-dist20140131$ patch -p1 < atmark-dist-20140131-fix-iptables-build-error.patch
> 

>
> 本問題は今後の製品アップデートで修正をします。
> ビルドエラーのご報告ありがとうございました。

at_takashi.sasayama

2014年12月2日 16時25分

笹山です。

> #iptables -t nat -A POSTROUTING -o eth0 -s 192.168.7.0/24 -j SNAT --to-source 192.168.20.100
> #iptables v1.3.6: Unknown arg `--to-source'
> #Try `iptables -h' or 'iptables --help' for more information.
>
> となってしまいました。
>
> 何かカーネルコンフィグレーションで足りないものが考えられるでしょうか?

上記の現象ですが、カーネルコンフィギュレーションで Full NAT を有効にしても、
ターゲットに SNAT,DNAT が指定できないバグでした。
本問題を改修する暫定パッチを添付します。

パッチ名:atmark-dist-20140131-fix-iptables-snat-dnat.patch

このパッチは atmark-dist-20140131-fix-iptables-build-error.patch が適用された環境に対して、
使用してください。

パッチは atmark-dist20140131 配下に格納後、patchコマンドで適用できます。

atmark@atde5:~/atmark-dist20140131$ patch -p1 < atmark-dist-20140131-fix-iptables-snat-dnat.patch
ファイル ファイルの説明
atmark-dist-20140131-fix-iptables-snat-dnat.patch atmark-dist-20140131 用 iptables SNAT/DNAT有効化 暫定パッチ

笹山様
yoshizuです
お世話になっています

おかげさまで、無線LAN(AP)と有線LANのルーティング接続が可能となりました。

これで、armadill0-840 + GW-900Dを利用したアクセスポイントとしての機能を、
実現することが可能となりました。

対応ありがとうございました。

> 笹山です。
>
> > #iptables -t nat -A POSTROUTING -o eth0 -s 192.168.7.0/24 -j SNAT --to-source 192.168.20.100
> > #iptables v1.3.6: Unknown arg `--to-source'
> > #Try `iptables -h' or 'iptables --help' for more information.
> >
> > となってしまいました。
> >
> > 何かカーネルコンフィグレーションで足りないものが考えられるでしょうか?
>
> 上記の現象ですが、カーネルコンフィギュレーションで Full NAT を有効にしても、
> ターゲットに SNAT,DNAT が指定できないバグでした。
> 本問題を改修する暫定パッチを添付します。
>
> パッチ名:atmark-dist-20140131-fix-iptables-snat-dnat.patch
>
> このパッチは atmark-dist-20140131-fix-iptables-build-error.patch が適用された環境に対して、
> 使用してください。
>
> パッチは atmark-dist20140131 配下に格納後、patchコマンドで適用できます。
>

> atmark@atde5:~/atmark-dist20140131$ patch -p1 < atmark-dist-20140131-fix-iptables-snat-dnat.patch
>