Linux netfilter Hacking HOWTO

Rusty Russell

netfilter (at) lists.samba.org

金子硏史

kenji (at) rtlinux.pe.kr

본 문서에서는, 먼저 리눅스에 대한 넷필터 아키텍처와 이를 파헤치는 방법, 그리고 넷필터의 최상위에 존재하는 일부 중요한 시스템, 즉 패킷 필터링, 커넥션 트랙킹 그리고 NAT(Network Address Translation)등에 대하여 기술하고자 한다.

고친 과정
고침 0.22001-02-1고친이 kenji
문장을 보다 매끄럽게 수정하였습니다.
고침 0.12001-01-20고친이 kenji
최초 번역

차례
1. 서문
1.1. 넷필터(netfilter)란 무엇인가?
1.1.1. 커널 2.0과 2.2에서의 문제점?
1.1.2. 누구시죠?
1.1.3. 그게 왜 폭주하죠?
2. 어디서 최신 버전을 구하죠?
3. 넷필터 아키텍처
3.1. 넷필터의 기초
3.2. 패킷 선택: IP Tables
3.2.1. 패킷 필터링
3.2.2. NAT
3.2.3. 매스커레이딩, 포트 포워딩, 투명한 프락시
3.2.4. 패킷 맹글링(packet mangling)
3.3. 연결 추적
3.4. 그이외 추가된 사항
4. 프로그래머들을 위한 정보
4.1. ip_tables의 이해
4.1.1. ip_tables의 데이터 구조
4.1.2. ip_tables의 사용과 진행
4.2. iptables 확장하기
4.2.1. 커널
4.2.1.1. 새로운 Match 함수
4.2.1.2. 새로운 Targets
4.2.1.3. 새로운 Tables
4.2.2. 사용자공간 도구(Userpace Tool)
4.2.2.1. 새로운 Match 함수
4.2.2.2. 새로운 Targets
4.2.3. `libiptc' 사용하기
4.3. NAT의 이해
4.3.1. 연결 추적
4.4. Connection Tracking/NAT 확장하기
4.4.1. 표준 NAT Targets
4.4.2. 새로운 Protocols
4.4.2.1. 커널 내부
4.4.3. 새로운 NAT Targets
4.4.4. 프로토콜 도우미(protocol helper)
4.4.5. 연결 추적 도우미 모듈(Connection Tracking Helper Modules)
4.4.5.1. 설명
4.4.5.2. 사용가능한 구조체와 함수
4.4.6. conntrack 도우미 모듈의 예제
4.4.7. NAT 도우미 모듈
4.4.7.1. 설명
4.4.7.2. 사용가능한 구조체와 함수
4.4.7.3. NAT 도우미 모듈 예제
4.5. Netfilter의 이해
4.6. 새로운 Netfilter 모듈 작성
4.6.1. Netfilter 훅에 연결하기
4.6.2. 큐된 패킷의 처리
4.6.3. 사용자 공간으로부터 명령어 전달받기
4.7. 사용자 공간에서 패킷 처리
5. 커널 2.0/2.2 패킷 필터 모듈 변환
6. 터널 코드 개발자를 위한 Netfilter 훅
7. 시험도구(Test Suite)
7.1. 테스트를 위한 스크립트 작성
7.2. 변수와 환경
7.3. 유용한 도구들
7.3.1. gen_ip
7.3.2. rcv_ip
7.3.3. get_err
7.3.4. local_ip
7.4. 생각나는 대로 하는 충고
8. 개발 동기
9. 감사의 말