(Currently, update to RELENG_4 is not scheduled) Obtained from: jpman Project <manjp@jp.FreeBSD.org>
106 lines
2.8 KiB
Groff
106 lines
2.8 KiB
Groff
.TH IPNAT 4
|
|
.\" jpman %Id: ipnat.4,v 1.3 2000/07/13 04:28:23 horikawa Stab %
|
|
.SH 名称
|
|
ipnat \- ネットワークアドレス変換 (NAT) のカーネルインタフェース
|
|
.SH 書式
|
|
#include <netinet/ip_compat.h>
|
|
.br
|
|
#include <netinet/ip_fil.h>
|
|
.br
|
|
#include <netinet/ip_proxy.h>
|
|
.br
|
|
#include <netinet/ip_nat.h>
|
|
.SH IOCTL
|
|
.PP
|
|
NAT リストにルールを追加および削除するために、
|
|
2 つの `基本的' な ioctl が提供されています。
|
|
ioctl は下記のように呼ばれます:
|
|
.LP
|
|
.nf
|
|
ioctl(fd, SIOCADNAT, struct ipnat *)
|
|
ioctl(fd, SIOCRMNAT, struct ipnat *)
|
|
.fi
|
|
.PP
|
|
\fBipf(4)\fP とは異なり、カーネルの NAT インタフェースによって
|
|
サポートされているリストは 1 つだけです。
|
|
動作中のリストと交換可能な非動作中のリストの機能は、
|
|
現在はサポートされていません。
|
|
|
|
上記の ioctl は、ルーティング ioctl として振舞うように
|
|
実装されているので、各種のルーティング ioctl に用いるものと
|
|
同じルールやファイル記述子が使用されます。
|
|
たいていの場合 fd は、そのモジュールに関連する
|
|
デバイス (例えば /dev/ipl) のファイル記述子であることが必要です。
|
|
.LP
|
|
.PP
|
|
NAT インタフェースで用いられる構造体は以下の通りです:
|
|
.LP
|
|
.nf
|
|
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
|
|
|
|
.fi
|
|
.PP
|
|
in_redir で認識される値:
|
|
.LP
|
|
.nf
|
|
#define NAT_MAP 0
|
|
#define NAT_REDIRECT 1
|
|
.fi
|
|
.PP
|
|
.LP
|
|
\fBNAT 統計\fP
|
|
.PP
|
|
マップされたパケットの数や送受信されたパケットの数
|
|
に関する統計が採取されます。
|
|
また、NAT テーブルに新規のエントリが追加されたり、
|
|
(期限切れのために) エントリが削除された回数や現在の NAT テーブルの
|
|
使用量に関する統計が採取されます。
|
|
.PP
|
|
カーネル内部にある NAT テーブルへのポインタと、
|
|
\fBSIOCADNAT\fP ioctl で組み立てられた内部の NAT リストの
|
|
先頭へのポインタが得られます。
|
|
.PP
|
|
このテーブル自身は、NAT_SIZE (デフォルトでは 367) の大きさの
|
|
ハッシュテーブルです。
|
|
.PP
|
|
統計を取得するには、\fBSIOCGNATS\fP ioctl を用いて、
|
|
適切な構造体を以下のように参照で渡す必要があります:
|
|
.PP
|
|
.nf
|
|
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;
|
|
.fi
|
|
.SH バグ
|
|
フィルタルールの追加や削除がもっと柔軟にできれば良いでしょう。
|
|
.SH 関連ファイル
|
|
/dev/ipnat
|
|
.SH 関連項目
|
|
ipf(4), ipnat(5), ipf(8), ipnat(8), ipfstat(8)
|