이 장에서, 새로운 netfilter 타겟의 사용에 관해 설명할 것이다. 이 패치들은 알파벳 순서로 나타낼 것이고, 부가적으로 연관된 다른 패치에 대한 설명은 하지 않는다. 하지만 다음 버전에서는 추가될 것이다.
일반적으로 타겟에 관해, 다음의 내용처럼 특별한 모듈에 대한 힌트를 얻을 수 있다 :
# iptables -j THE_TARGET_YOU_WANT --help |
이는 보통의 iptables 도움 메세지를 보여주고, 그 끝에 ``THE_TARGET_YOU_WANT''타겟을 설명한다.
이 패치는 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이 지원하는 옵션은 다음과 같다 :
--set-ftos value -> 패킷 헤더의 TOS field를 어떤 값으로 설정. 이 값이 10진수가 될 수 있고 (ex: 32) 16진수로도 될 수 있다. (ex: 0x20)
이 패치는 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 |
이 타겟은 어떠한 옵션도 지원하지 않는다.
이 패치는 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 타겟이 지원하는 옵션은 다음과 같다 :
--nldrop -> 패킷을 드롭한다.
--nlmark <number> -> 패킷을 표시한다.
--nlsize <bytes> -> 패킷 크기를 제한한다.
netlink socket에 대한 더 많은 정보를 원한다면, Netlink Sockets Tour를 참고하라.
이 패치는 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 타겟이 지원하는 옵션은 다음과 같다 :
--to address[/mask] -> 매핑할 네트워크 주소
이 패치는 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이 지원하는 옵션은 다음과 같다 :
--to <ipaddr>-<ipaddr> -> 소스에 매핑된 주소. 아마도 다수의 영역에 대한 한번 이상 기술되었을 것이다.
--nodst -> 소스 선택에 대해 도착 IP를 사용하지 말라.
이 패치는 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이 지원하는 옵션은 다음과 같다 (상호 배제) :
--set-mss value 특정값으로 MSS 옵션을 명백히 셋팅
--clamp-mss-to-pmtu MSS 값을 자동으로 고정시킴 (path_MTU - 40)
이 패치는 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이 지원하는 옵션은 다음과 같다 :
--ttl-set value -> TTL을 <value>로 셋팅
--ttl-dec value -> TTL을 <value>만큼 감소
--ttl-inc value -> TTL을 <value>만큼 증가
이 패치는 Harald Welte <laforge@gnumonks.org>에 의해 작성되었으며, 표준 LOG target보다 진보된 로깅 메커니즘을 제공하는 새로운 match이다. `libiptulog/'는 ULOG 메세지를 받는 라이브러리를 포함한다.
Harald는 ULOG에 대한 적절한 문서를 포함하는 web page를 보유한다. 그래서 여기서는 설명할 특별한 내용은 없다.