Armadilloフォーラム

LOG機能を有効にしたのにiptables実行時「Couldn't load target `LOG'」と表示される

y.matsuo

2017年5月12日 10時21分

お世話になっております。
Armadillo-IoT G2 のiptables設定における、ターゲットやマッチについてご教授願います。

デフォルトでLOG機能が使用出来なかったため、カーネルコンフィギュレーションでLOG機能を設定したのですが、
iptables実行時にLOGターゲットが指定できません。以下の様なエラーが出ます。

■ 実行ログ
# iptables -A ABC -j LOG
iptables v1.4.14: Couldn't load target `LOG':No such file or directory

同様に、デフォルトでhashlimit機能が使用できなかったため、カーネルコンフィギュレーションでhashlimit機能を設定したのですが、
iptables実行時にhashlimitマッチが指定できません。以下の様なエラーが出ます。

■ 実行ログ
# iptables -A ABC -m hashlimit
iptables v1.4.14: Couldn't load match `hashlimit':No such file or directory

上記エラーを見る限り、Linuxカーネルモジュールやiptablesプログラムモジュールが無い為とは思うのですが、
どうしたらiptables設定時にLOGターゲットやhashlimitマッチ機能を使用できる様になるでしょうか?

ご存知の方がおられましたら、ご教示の程お願い致します。
 
 
■ 補足情報
▼カーネルコンフィギュレーション設定例
Linux/arm 3.14.36-at8 Kernel Configuration
  [*] Networking support --->
    Networking options --->
      [*] Network packet filtering (Netfilter) --->
        Core Netfilter Configuration --->
          <*> LOG target support
          <*> "hashlimit" match support

▼Linuxカーネルモジュール有無
# ls /lib/modules/3.14.36-at8/kernel/
#
 ⇒通常は/lib/modules/3.14.36-at8/kernel/net/netfilterにモジュール(.ko)があるが、kernel配下のディレクトリすらない

▼iptablesプログラムモジュール有無
# ls /lib/iptables
ls: /lib/iptables: No such file or directory
 ⇒通常は/lib/iptablesにモジュール(.so)があるが、ディレクトリすらない

▼使用バージョン
使用機種:Armadillo-IoT G2
Linuxカーネル:3.14.36-at8
ユーザーランド (Atmark Dist):v20160927

コメント

溝渕です。

> 上記エラーを見る限り、Linuxカーネルモジュールやiptablesプログラムモジュールが無い為とは思うのですが、
> どうしたらiptables設定時にLOGターゲットやhashlimitマッチ機能を使用できる様になるでしょうか?

Linuxカーネルおよび、Atmark Distのコンフィギュレーションを変更して、
LOGターゲット/hashlimitマッチ機能を有効化する必要があります。

> ご存知の方がおられましたら、ご教示の程お願い致します。
>  
>  
> ■ 補足情報
> ▼カーネルコンフィギュレーション設定例
> Linux/arm 3.14.36-at8 Kernel Configuration
>   [*] Networking support --->
>     Networking options --->
>       [*] Network packet filtering (Netfilter) --->
>         Core Netfilter Configuration --->
>           <*> LOG target support
>           <*> "hashlimit" match support

上記に加え、Atmark Distで次のコンフィギュレーションを有効化してください。
- CONFIG_USER_IPTABLES_LOG
- CONFIG_USER_IPTABLES_hashlimit

> ▼Linuxカーネルモジュール有無
> # ls /lib/modules/3.14.36-at8/kernel/
> #
>  ⇒通常は/lib/modules/3.14.36-at8/kernel/net/netfilterにモジュール(.ko)があるが、kernel配下のディレクトリすらない

ドライバをLinuxカーネルに静的に組み込んでいるため、モジュールが無い状況は正しいです。

> ▼iptablesプログラムモジュール有無
> # ls /lib/iptables
> ls: /lib/iptables: No such file or directory
>  ⇒通常は/lib/iptablesにモジュール(.so)があるが、ディレクトリすらない

Atmark Distでは、iptablesプログラムモジュールは"/lib/xtables/"に配置されます。

Atmark Distのコンフィギュレーション変更後は、次のファイルが確認できると思います。
- libipt_LOG.so
- libxt_hashlimit.so

以上です。

溝渕さん
松尾と申します。返信ありがとうございます。

アドバイス通りに試した結果、上手く行きました!

>上記に加え、Atmark Distで次のコンフィギュレーションを有効化してください。
>- CONFIG_USER_IPTABLES_LOG
>- CONFIG_USER_IPTABLES_hashlimit
ユーザーランドのコンフィギュレーションも有効にしてmake後に書き換えた結果、
"/lib/xtables/" に以下のファイルが出来ている事を確認しました。
 - libipt_LOG.so
 - libxt_hashlimit.so

また、iptables設定時のLOG機能とhashlimitマッチも有効になりました。

丁寧に教えて頂き、ありがとうございました。
アドバイスが大変参考になりました。

以上です。