tail head cat sleep
QR code linking to this page

Man page  — IPNAT

명칭

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 MAP 되고 있는, 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 통계

MAP 된 패킷의 수나 송수신 된 패킷의 수 에 관한 통계가 채취됩니다. 또, 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)

IPNAT (4)

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

How do you pronounce UNIX ? You Nix !