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.

If it wasn't for C, we'd be using BASI, PASAL and OBOL