4. 새로운 netfilter 타겟

이 장에서, 새로운 netfilter 타겟의 사용에 관해 설명할 것이다. 이 패치들은 알파벳 순서로 나타낼 것이고, 부가적으로 연관된 다른 패치에 대한 설명은 하지 않는다. 하지만 다음 버전에서는 추가될 것이다.

일반적으로 타겟에 관해, 다음의 내용처럼 특별한 모듈에 대한 힌트를 얻을 수 있다 :

# iptables -j THE_TARGET_YOU_WANT --help
	

이는 보통의 iptables 도움 메세지를 보여주고, 그 끝에 ``THE_TARGET_YOU_WANT''타겟을 설명한다.

4.1. ftos patch

이 패치는 Matthew G. Marsh <mgm@paktronix.com>에 의해 작성되었으며, 임의의 값으로 TOS 패킷을 셋팅할 수 있도록 하는 새로운 match이다.

예를 들어, 15의 outgoing 패킷의 모든 TOS를 셋팅하려면, 다음과 같이 할 수 있다.

# iptables -t mangle -A OUTPUT -j FTOS --set-ftos 15

# iptables -t mangle --list
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
FTOS       all  --  anywhere             anywhere           TOS set 0x0f 
		

FTOS target이 지원하는 옵션은 다음과 같다 :

4.2. IPV4OPTSSTRIP patch

이 패치는 Fabrice MARIE <fabrice@celestix.com>에 의해 작성되었으며 IPv4 패킷의 모든 IP 옵션을 제거(strip)할 수 있도록 하는 새로운 target이다.

다음과 같이 가장 간단하게 로드할 수 있다 :

# iptables -t mangle -A PREROUTING -j IPV4OPTSSTRIP

# iptables -t mangle --list
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
IPV4OPTSSTRIP  all  --  anywhere             anywhere
		

이 타겟은 어떠한 옵션도 지원하지 않는다.

4.3. NETLINK patch

이 패치는 Gianni Tedesco <gianni@ecsc.co.uk>에 의해 작성되었으며 netlink 소켓을 통해 유저 영역으로 드롭된 패킷을 보낼 수 있도록 하는 새로운 타겟이다.

예를 들어, 모든 핑 패킷을 드롭하고 유저영역의 netlink 소켓으로 패킷들을 보내려면, 다음과 같이 할 수 있다 :

# iptables -A INPUT -p icmp --icmp-type echo-request -j NETLINK --nldrop

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
NETLINK    icmp --  anywhere             anywhere           icmp echo-request nldrop 
		

NETLINK 타겟이 지원하는 옵션은 다음과 같다 :

netlink socket에 대한 더 많은 정보를 원한다면, Netlink Sockets Tour를 참고하라.

4.4. NETMAP patch

이 패치는 Svenning Soerensen <svenning@post5.tele.dk>에 의해 작성되었으며 원래의 호스트주소를 유지하는 동안 네트워크 주소와 정적으로 1:1 매핑을 만들게 할 수 있는 새로운 타겟이다.

예를 들어, 1.2.3.0/24에서 5.6.7.0/24로 향하는 incomming 연결의 목적지를 변경하길 원한다면, 다음과 같이 할 수 있다 :

# iptables -t nat -A PREROUTING -d 1.2.3.0/24 -j NETMAP --to 5.6.7.0/24

# iptables -t nat --list
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
NETMAP     all  --  anywhere             1.2.3.0/24         5.6.7.0/24
		

NETMAP 타겟이 지원하는 옵션은 다음과 같다 :

4.5. SAME patch

이 패치는 Martin Josefsson <gandalf@wlug.westbo.se>에 의해 작성되었으며 SNAT와 유사하고 각각 연결에 대해 한 클라이언트에 같은 주소를 부여할 수 있는 새로운 타겟이다.

예를 들어, 연결에 대한 소스 주소를 1.2.3.4-1.2.3.7로 변경하려면 다음과 같이 할 수 있다 :

# iptables -t nat -A POSTROUTING -j SAME --to 1.2.3.4-1.2.3.7

# iptables -t nat --list
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SAME       all  --  anywhere             anywhere           same:1.2.3.4-1.2.3.7 
		

SAME target이 지원하는 옵션은 다음과 같다 :

4.6. tcp-MSS patch

이 패치는 Marc Boucher <marc+nf@mbsi.ca>에 의해 작성되었으며 연결에 대한 최대 크기를 제어할 수 있도록, TCP SYN 패킷의 MSS 값을 변경하고 검사할수 있도록 하는 새로운 target이다.

Marc 자신이 설명한 바에 의하면, 이것은 해킹인데(THIS IS A HACK), ICMP Fragmentation이 패킷을 요구하는 것을 막는 뇌사 상태의 ISP들 또는 서버들을 극복하는데 사용된다.

전형적인 사용방법은 다음과 같은 것이다 :

# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# iptables --list
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
TCPMSS     tcp  --  anywhere             anywhere           tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU 
		

tcp-MSS target이 지원하는 옵션은 다음과 같다 (상호 배제) :

4.7. TTL patch

이 패치는 Harald Welte <laforge@gnumonks.org>에 의해 작성되었으며, 주어진 값에 의해 IP 패킷의 TTL 값을 증가/감소시키거나 유저가 셋팅할 수 있도록 하는 새로운 target이다.

예를 들어, 모든 outgoing 연결의 TTL값을 126으로 셋팅하려고 한다면, 다음과 같이 할 수 있다 :

# iptables -t mangle -A OUTPUT -j TTL --ttl-set 126

# iptables -t mangle --list
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
TTL        all  --  anywhere             anywhere           TTL set to 126 
		

TTL target이 지원하는 옵션은 다음과 같다 :

4.8. ulog patch

이 패치는 Harald Welte <laforge@gnumonks.org>에 의해 작성되었으며, 표준 LOG target보다 진보된 로깅 메커니즘을 제공하는 새로운 match이다. `libiptulog/'는 ULOG 메세지를 받는 라이브러리를 포함한다.

Harald는 ULOG에 대한 적절한 문서를 포함하는 web page를 보유한다. 그래서 여기서는 설명할 특별한 내용은 없다.