IPNAT

Section: Devices and Network Interfaces (4)
索引 jman
 

索引

名称

ipnat - ネットワークアドレス変換 (NAT) のカーネルインタフェース  

索引

書式

#include <netinet/ip_compat.h>
#include <netinet/ip_fil.h>
#include <netinet/ip_proxy.h>
#include <netinet/ip_nat.h>  

索引

IOCTL

NAT リストにルールを追加および削除するために、 2 つの `基本的' な ioctl が提供されています。 ioctl は下記のように呼ばれます:

        ioctl(fd, SIOCADNAT, struct ipnat *)
        ioctl(fd, SIOCRMNAT, struct ipnat *)

ipf(4) とは異なり、カーネルの NAT インタフェースによって サポートされているリストは 1 つだけです。 動作中のリストと交換可能な非動作中のリストの機能は、 現在はサポートされていません。

上記の ioctl は、ルーティング ioctl として振舞うように 実装されているので、各種のルーティング ioctl に用いるものと 同じルールやファイル記述子が使用されます。 たいていの場合 fd は、そのモジュールに関連する デバイス (例えば /dev/ipl) のファイル記述子であることが必要です。

NAT インタフェースで用いられる構造体は以下の通りです:

typedef struct  ipnat   {
        struct  ipnat   *in_next;
        void    *in_ifp;
        u_short in_flags;
        u_short in_pnext;
        u_short in_port[2];
        struct  in_addr in_in[2];
        struct  in_addr in_out[2];
        struct  in_addr in_nextip;
        int     in_space;
        int     in_redir; /* 0 マップされている、1 リダイレクトは困難 */
        char    in_ifname[IFNAMSIZ];
} ipnat_t;

#define in_pmin         in_port[0]    /* 静的なリダイレクトポートも保持 */
#define in_pmax         in_port[1]
#define in_nip          in_nextip.s_addr
#define in_inip         in_in[0].s_addr
#define in_inmsk        in_in[1].s_addr
#define in_outip        in_out[0].s_addr
#define in_outmsk       in_out[1].s_addr

in_redir で認識される値:

#define NAT_MAP         0
#define NAT_REDIRECT    1

NAT 統計

マップされたパケットの数や送受信されたパケットの数 に関する統計が採取されます。 また、NAT テーブルに新規のエントリが追加されたり、 (期限切れのために) エントリが削除された回数や現在の NAT テーブルの 使用量に関する統計が採取されます。

カーネル内部にある NAT テーブルへのポインタと、 SIOCADNAT ioctl で組み立てられた内部の NAT リストの 先頭へのポインタが得られます。

このテーブル自身は、NAT_SIZE (デフォルトでは 367) の大きさの ハッシュテーブルです。

統計を取得するには、SIOCGNATS ioctl を用いて、 適切な構造体を以下のように参照で渡す必要があります:

        ioctl(fd, SIOCGNATS, struct natstat *)

typedef struct  natstat {
        u_long  ns_mapped[2];
        u_long  ns_added;
        u_long  ns_expire;
        u_long  ns_inuse;
        nat_t   ***ns_table;
        ipnat_t *ns_list;
} natstat_t;
 

索引

バグ

フィルタルールの追加や削除がもっと柔軟にできれば良いでしょう。  

索引

関連ファイル

/dev/ipnat  

索引

関連項目

ipf(4), ipnat(5), ipf(8), ipnat(8), ipfstat(8)


 

索引

Index

名称
書式
IOCTL
バグ
関連ファイル
関連項目

jman



Time: 07:07:22 GMT, January 12, 2009