2 # IP netfilter configuration
5 menu "IP: Netfilter Configuration"
6 depends on INET && NETFILTER
8 config NF_CONNTRACK_IPV4
9 tristate "IPv4 support for new connection tracking (EXPERIMENTAL)"
10 depends on EXPERIMENTAL && NF_CONNTRACK
12 Connection tracking keeps a record of what packets have passed
13 through your machine, in order to figure out how they are related
16 This is IPv4 support on Layer 3 independent connection tracking.
17 Layer 3 independent connection tracking is experimental scheme
18 which generalize ip_conntrack to support other layer 3 protocols.
20 To compile it as a module, choose M here. If unsure, say N.
22 # connection tracking, helpers and protocols
23 config IP_NF_CONNTRACK
24 tristate "Connection tracking (required for masq/NAT)"
26 Connection tracking keeps a record of what packets have passed
27 through your machine, in order to figure out how they are related
30 This is required to do Masquerading or other kinds of Network
31 Address Translation (except for Fast NAT). It can also be used to
32 enhance packet filtering (see `Connection state match support'
35 To compile it as a module, choose M here. If unsure, say N.
38 bool "Connection tracking flow accounting"
39 depends on IP_NF_CONNTRACK
41 If this option is enabled, the connection tracking code will
42 keep per-flow packet and byte counters.
44 Those counters can be used for flow-based accounting or the
49 config IP_NF_CONNTRACK_MARK
50 bool 'Connection mark tracking support'
51 depends on IP_NF_CONNTRACK
53 This option enables support for connection marks, used by the
54 `CONNMARK' target and `connmark' match. Similar to the mark value
55 of packets, but this mark value is kept in the conntrack session
56 instead of the individual packets.
58 config IP_NF_CONNTRACK_EVENTS
59 bool "Connection tracking events (EXPERIMENTAL)"
60 depends on EXPERIMENTAL && IP_NF_CONNTRACK
62 If this option is enabled, the connection tracking code will
63 provide a notifier chain that can be used by other kernel code
64 to get notified about changes in the connection tracking state.
68 config IP_NF_CONNTRACK_NETLINK
69 tristate 'Connection tracking netlink interface (EXPERIMENTAL)'
70 depends on EXPERIMENTAL && IP_NF_CONNTRACK && NETFILTER_NETLINK
71 depends on IP_NF_CONNTRACK!=y || NETFILTER_NETLINK!=m
73 This option enables support for a netlink-based userspace interface
76 config IP_NF_CT_PROTO_SCTP
77 tristate 'SCTP protocol connection tracking support (EXPERIMENTAL)'
78 depends on IP_NF_CONNTRACK && EXPERIMENTAL
80 With this option enabled, the connection tracking code will
81 be able to do state tracking on SCTP connections.
83 If you want to compile it as a module, say M here and read
84 <file:Documentation/modules.txt>. If unsure, say `N'.
87 tristate "FTP protocol support"
88 depends on IP_NF_CONNTRACK
90 Tracking FTP connections is problematic: special helpers are
91 required for tracking them, and doing masquerading and other forms
92 of Network Address Translation on them.
94 To compile it as a module, choose M here. If unsure, say Y.
97 tristate "IRC protocol support"
98 depends on IP_NF_CONNTRACK
100 There is a commonly-used extension to IRC called
101 Direct Client-to-Client Protocol (DCC). This enables users to send
102 files to each other, and also chat to each other without the need
103 of a server. DCC Sending is used anywhere you send files over IRC,
104 and DCC Chat is most commonly used by Eggdrop bots. If you are
105 using NAT, this extension will enable you to send files and initiate
106 chats. Note that you do NOT need this extension to get files or
107 have others initiate chats, or everything else in IRC.
109 To compile it as a module, choose M here. If unsure, say Y.
111 config IP_NF_NETBIOS_NS
112 tristate "NetBIOS name service protocol support (EXPERIMENTAL)"
113 depends on IP_NF_CONNTRACK && EXPERIMENTAL
115 NetBIOS name service requests are sent as broadcast messages from an
116 unprivileged port and responded to with unicast messages to the
117 same port. This make them hard to firewall properly because connection
118 tracking doesn't deal with broadcasts. This helper tracks locally
119 originating NetBIOS name service requests and the corresponding
120 responses. It relies on correct IP address configuration, specifically
121 netmask and broadcast address. When properly configured, the output
122 of "ip address show" should look similar to this:
124 $ ip -4 address show eth0
125 4: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
126 inet 172.16.2.252/24 brd 172.16.2.255 scope global eth0
128 To compile it as a module, choose M here. If unsure, say N.
131 tristate "TFTP protocol support"
132 depends on IP_NF_CONNTRACK
134 TFTP connection tracking helper, this is required depending
135 on how restrictive your ruleset is.
136 If you are using a tftp client behind -j SNAT or -j MASQUERADING
139 To compile it as a module, choose M here. If unsure, say Y.
142 tristate "Amanda backup protocol support"
143 depends on IP_NF_CONNTRACK
145 If you are running the Amanda backup package <http://www.amanda.org/>
146 on this machine or machines that will be MASQUERADED through this
147 machine, then you may want to enable this feature. This allows the
148 connection tracking and natting code to allow the sub-channels that
149 Amanda requires for communication of the backup data, messages and
152 To compile it as a module, choose M here. If unsure, say Y.
155 tristate 'PPTP protocol support'
156 depends on IP_NF_CONNTRACK
158 This module adds support for PPTP (Point to Point Tunnelling
159 Protocol, RFC2637) connection tracking and NAT.
161 If you are running PPTP sessions over a stateful firewall or NAT
162 box, you may want to enable this feature.
164 Please note that not all PPTP modes of operation are supported yet.
165 For more info, read top of the file
166 net/ipv4/netfilter/ip_conntrack_pptp.c
168 If you want to compile it as a module, say M here and read
169 Documentation/modules.txt. If unsure, say `N'.
172 tristate 'H.323 protocol support'
173 depends on IP_NF_CONNTRACK
175 H.323 is a VoIP signalling protocol from ITU-T. As one of the most
176 important VoIP protocols, it is widely used by voice hardware and
177 software including voice gateways, IP phones, Netmeeting, OpenPhone,
180 With this module you can support H.323 on a connection tracking/NAT
183 This module supports RAS, Fast-start, H.245 tunnelling, RTP/RTCP
184 and T.120 based data and applications including audio, video, FAX,
185 chat, whiteboard, file transfer, etc. For more information, please
186 see http://nath323.sourceforge.net/.
188 If you want to compile it as a module, say 'M' here and read
189 Documentation/modules.txt. If unsure, say 'N'.
192 tristate "IP Userspace queueing via NETLINK (OBSOLETE)"
194 Netfilter has the ability to queue packets to user space: the
195 netlink device can be used to access them using this driver.
197 This option enables the old IPv4-only "ip_queue" implementation
198 which has been obsoleted by the new "nfnetlink_queue" code (see
199 CONFIG_NETFILTER_NETLINK_QUEUE).
201 To compile it as a module, choose M here. If unsure, say N.
203 config IP_NF_IPTABLES
204 tristate "IP tables support (required for filtering/masq/NAT)"
205 depends on NETFILTER_XTABLES
207 iptables is a general, extensible packet identification framework.
208 The packet filtering and full NAT (masquerading, port forwarding,
209 etc) subsystems now use this: say `Y' or `M' here if you want to use
212 To compile it as a module, choose M here. If unsure, say N.
215 config IP_NF_MATCH_IPRANGE
216 tristate "IP range match support"
217 depends on IP_NF_IPTABLES
219 This option makes possible to match IP addresses against IP address
222 To compile it as a module, choose M here. If unsure, say N.
224 config IP_NF_MATCH_MULTIPORT
225 tristate "Multiple port match support"
226 depends on IP_NF_IPTABLES
228 Multiport matching allows you to match TCP or UDP packets based on
229 a series of source or destination ports: normally a rule can only
230 match a single range of ports.
232 To compile it as a module, choose M here. If unsure, say N.
234 config IP_NF_MATCH_TOS
235 tristate "TOS match support"
236 depends on IP_NF_IPTABLES
238 TOS matching allows you to match packets based on the Type Of
239 Service fields of the IP packet.
241 To compile it as a module, choose M here. If unsure, say N.
243 config IP_NF_MATCH_RECENT
244 tristate "recent match support"
245 depends on IP_NF_IPTABLES
247 This match is used for creating one or many lists of recently
248 used addresses and then matching against that/those list(s).
250 Short options are available by using 'iptables -m recent -h'
251 Official Website: <http://snowman.net/projects/ipt_recent/>
253 To compile it as a module, choose M here. If unsure, say N.
255 config IP_NF_MATCH_ECN
256 tristate "ECN match support"
257 depends on IP_NF_IPTABLES
259 This option adds a `ECN' match, which allows you to match against
260 the IPv4 and TCP header ECN fields.
262 To compile it as a module, choose M here. If unsure, say N.
264 config IP_NF_MATCH_DSCP
265 tristate "DSCP match support"
266 depends on IP_NF_IPTABLES
268 This option adds a `DSCP' match, which allows you to match against
269 the IPv4 header DSCP field (DSCP codepoint).
271 The DSCP codepoint can have any value between 0x0 and 0x4f.
273 To compile it as a module, choose M here. If unsure, say N.
275 config IP_NF_MATCH_AH_ESP
276 tristate "AH/ESP match support"
277 depends on IP_NF_IPTABLES
279 These two match extensions (`ah' and `esp') allow you to match a
280 range of SPIs inside AH or ESP headers of IPSec packets.
282 To compile it as a module, choose M here. If unsure, say N.
284 config IP_NF_MATCH_TTL
285 tristate "TTL match support"
286 depends on IP_NF_IPTABLES
288 This adds CONFIG_IP_NF_MATCH_TTL option, which enabled the user
289 to match packets by their TTL value.
291 To compile it as a module, choose M here. If unsure, say N.
293 config IP_NF_MATCH_OWNER
294 tristate "Owner match support"
295 depends on IP_NF_IPTABLES
297 Packet owner matching allows you to match locally-generated packets
298 based on who created them: the user, group, process or session.
300 To compile it as a module, choose M here. If unsure, say N.
302 config IP_NF_MATCH_ADDRTYPE
303 tristate 'address type match support'
304 depends on IP_NF_IPTABLES
306 This option allows you to match what routing thinks of an address,
307 eg. UNICAST, LOCAL, BROADCAST, ...
309 If you want to compile it as a module, say M here and read
310 <file:Documentation/modules.txt>. If unsure, say `N'.
312 config IP_NF_MATCH_HASHLIMIT
313 tristate 'hashlimit match support'
314 depends on IP_NF_IPTABLES
316 This option adds a new iptables `hashlimit' match.
318 As opposed to `limit', this match dynamically crates a hash table
319 of limit buckets, based on your selection of source/destination
320 ip addresses and/or ports.
322 It enables you to express policies like `10kpps for any given
323 destination IP' or `500pps from any given source IP' with a single
326 # `filter', generic and specific targets
328 tristate "Packet filtering"
329 depends on IP_NF_IPTABLES
331 Packet filtering defines a table `filter', which has a series of
332 rules for simple packet filtering at local input, forwarding and
333 local output. See the man page for iptables(8).
335 To compile it as a module, choose M here. If unsure, say N.
337 config IP_NF_TARGET_REJECT
338 tristate "REJECT target support"
339 depends on IP_NF_FILTER
341 The REJECT target allows a filtering rule to specify that an ICMP
342 error should be issued in response to an incoming packet, rather
343 than silently being dropped.
345 To compile it as a module, choose M here. If unsure, say N.
347 config IP_NF_TARGET_LOG
348 tristate "LOG target support"
349 depends on IP_NF_IPTABLES
351 This option adds a `LOG' target, which allows you to create rules in
352 any iptables table which records the packet header to the syslog.
354 To compile it as a module, choose M here. If unsure, say N.
356 config IP_NF_TARGET_ULOG
357 tristate "ULOG target support (OBSOLETE)"
358 depends on IP_NF_IPTABLES
361 This option enables the old IPv4-only "ipt_ULOG" implementation
362 which has been obsoleted by the new "nfnetlink_log" code (see
363 CONFIG_NETFILTER_NETLINK_LOG).
365 This option adds a `ULOG' target, which allows you to create rules in
366 any iptables table. The packet is passed to a userspace logging
367 daemon using netlink multicast sockets; unlike the LOG target
368 which can only be viewed through syslog.
370 The apropriate userspace logging daemon (ulogd) may be obtained from
371 <http://www.gnumonks.org/projects/ulogd/>
373 To compile it as a module, choose M here. If unsure, say N.
375 config IP_NF_TARGET_TCPMSS
376 tristate "TCPMSS target support"
377 depends on IP_NF_IPTABLES
379 This option adds a `TCPMSS' target, which allows you to alter the
380 MSS value of TCP SYN packets, to control the maximum size for that
381 connection (usually limiting it to your outgoing interface's MTU
384 This is used to overcome criminally braindead ISPs or servers which
385 block ICMP Fragmentation Needed packets. The symptoms of this
386 problem are that everything works fine from your Linux
387 firewall/router, but machines behind it can never exchange large
389 1) Web browsers connect, then hang with no data received.
390 2) Small mail works fine, but large emails hang.
391 3) ssh works fine, but scp hangs after initial handshaking.
393 Workaround: activate this option and add a rule to your firewall
396 iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
397 -j TCPMSS --clamp-mss-to-pmtu
399 To compile it as a module, choose M here. If unsure, say N.
401 # NAT + specific targets
404 depends on IP_NF_IPTABLES && IP_NF_CONNTRACK
406 The Full NAT option allows masquerading, port forwarding and other
407 forms of full Network Address Port Translation. It is controlled by
408 the `nat' table in iptables: see the man page for iptables(8).
410 To compile it as a module, choose M here. If unsure, say N.
412 config IP_NF_NAT_NEEDED
414 depends on IP_NF_NAT != n
417 config IP_NF_TARGET_MASQUERADE
418 tristate "MASQUERADE target support"
421 Masquerading is a special case of NAT: all outgoing connections are
422 changed to seem to come from a particular interface's address, and
423 if the interface goes down, those connections are lost. This is
424 only useful for dialup accounts with dynamic IP address (ie. your IP
425 address will be different on next dialup).
427 To compile it as a module, choose M here. If unsure, say N.
429 config IP_NF_TARGET_REDIRECT
430 tristate "REDIRECT target support"
433 REDIRECT is a special case of NAT: all incoming connections are
434 mapped onto the incoming interface's address, causing the packets to
435 come to the local machine instead of passing through. This is
436 useful for transparent proxies.
438 To compile it as a module, choose M here. If unsure, say N.
440 config IP_NF_TARGET_NETMAP
441 tristate "NETMAP target support"
444 NETMAP is an implementation of static 1:1 NAT mapping of network
445 addresses. It maps the network address part, while keeping the host
446 address part intact. It is similar to Fast NAT, except that
447 Netfilter's connection tracking doesn't work well with Fast NAT.
449 To compile it as a module, choose M here. If unsure, say N.
451 config IP_NF_TARGET_SAME
452 tristate "SAME target support"
455 This option adds a `SAME' target, which works like the standard SNAT
456 target, but attempts to give clients the same IP for all connections.
458 To compile it as a module, choose M here. If unsure, say N.
460 config IP_NF_NAT_SNMP_BASIC
461 tristate "Basic SNMP-ALG support (EXPERIMENTAL)"
462 depends on EXPERIMENTAL && IP_NF_NAT
465 This module implements an Application Layer Gateway (ALG) for
466 SNMP payloads. In conjunction with NAT, it allows a network
467 management system to access multiple private networks with
468 conflicting addresses. It works by modifying IP addresses
469 inside SNMP payloads to match IP-layer NAT mapping.
471 This is the "basic" form of SNMP-ALG, as described in RFC 2962
473 To compile it as a module, choose M here. If unsure, say N.
477 depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
478 default IP_NF_NAT if IP_NF_IRC=y
479 default m if IP_NF_IRC=m
481 # If they want FTP, set to $CONFIG_IP_NF_NAT (m or y),
482 # or $CONFIG_IP_NF_FTP (m or y), whichever is weaker. Argh.
485 depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
486 default IP_NF_NAT if IP_NF_FTP=y
487 default m if IP_NF_FTP=m
489 config IP_NF_NAT_TFTP
491 depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
492 default IP_NF_NAT if IP_NF_TFTP=y
493 default m if IP_NF_TFTP=m
495 config IP_NF_NAT_AMANDA
497 depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
498 default IP_NF_NAT if IP_NF_AMANDA=y
499 default m if IP_NF_AMANDA=m
501 config IP_NF_NAT_PPTP
503 depends on IP_NF_NAT!=n && IP_NF_PPTP!=n
504 default IP_NF_NAT if IP_NF_PPTP=y
505 default m if IP_NF_PPTP=m
507 config IP_NF_NAT_H323
509 depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
510 default IP_NF_NAT if IP_NF_H323=y
511 default m if IP_NF_H323=m
513 # mangle + specific targets
515 tristate "Packet mangling"
516 depends on IP_NF_IPTABLES
518 This option adds a `mangle' table to iptables: see the man page for
519 iptables(8). This table is used for various packet alterations
520 which can effect how the packet is routed.
522 To compile it as a module, choose M here. If unsure, say N.
524 config IP_NF_TARGET_TOS
525 tristate "TOS target support"
526 depends on IP_NF_MANGLE
528 This option adds a `TOS' target, which allows you to create rules in
529 the `mangle' table which alter the Type Of Service field of an IP
530 packet prior to routing.
532 To compile it as a module, choose M here. If unsure, say N.
534 config IP_NF_TARGET_ECN
535 tristate "ECN target support"
536 depends on IP_NF_MANGLE
538 This option adds a `ECN' target, which can be used in the iptables mangle
541 You can use this target to remove the ECN bits from the IPv4 header of
542 an IP packet. This is particularly useful, if you need to work around
543 existing ECN blackholes on the internet, but don't want to disable
544 ECN support in general.
546 To compile it as a module, choose M here. If unsure, say N.
548 config IP_NF_TARGET_DSCP
549 tristate "DSCP target support"
550 depends on IP_NF_MANGLE
552 This option adds a `DSCP' match, which allows you to match against
553 the IPv4 header DSCP field (DSCP codepoint).
555 The DSCP codepoint can have any value between 0x0 and 0x4f.
557 To compile it as a module, choose M here. If unsure, say N.
559 config IP_NF_TARGET_TTL
560 tristate 'TTL target support'
561 depends on IP_NF_MANGLE
563 This option adds a `TTL' target, which enables the user to modify
564 the TTL value of the IP header.
566 While it is safe to decrement/lower the TTL, this target also enables
567 functionality to increment and set the TTL value of the IP header to
568 arbitrary values. This is EXTREMELY DANGEROUS since you can easily
569 create immortal packets that loop forever on the network.
571 To compile it as a module, choose M here. If unsure, say N.
573 config IP_NF_TARGET_CLUSTERIP
574 tristate "CLUSTERIP target support (EXPERIMENTAL)"
575 depends on IP_NF_MANGLE && EXPERIMENTAL
576 depends on (IP_NF_CONNTRACK && IP_NF_CONNTRACK_MARK) || (NF_CONNTRACK_MARK && NF_CONNTRACK_IPV4)
578 The CLUSTERIP target allows you to build load-balancing clusters of
579 network servers without having a dedicated load-balancing
580 router/server/switch.
582 To compile it as a module, choose M here. If unsure, say N.
584 # raw + specific targets
586 tristate 'raw table support (required for NOTRACK/TRACE)'
587 depends on IP_NF_IPTABLES
589 This option adds a `raw' table to iptables. This table is the very
590 first in the netfilter framework and hooks in at the PREROUTING
593 If you want to compile it as a module, say M here and read
594 <file:Documentation/modules.txt>. If unsure, say `N'.
597 config IP_NF_ARPTABLES
598 tristate "ARP tables support"
599 depends on NETFILTER_XTABLES
601 arptables is a general, extensible packet identification framework.
602 The ARP packet filtering and mangling (manipulation)subsystems
603 use this: say Y or M here if you want to use either of those.
605 To compile it as a module, choose M here. If unsure, say N.
607 config IP_NF_ARPFILTER
608 tristate "ARP packet filtering"
609 depends on IP_NF_ARPTABLES
611 ARP packet filtering defines a table `filter', which has a series of
612 rules for simple ARP packet filtering at local input and
613 local output. On a bridge, you can also specify filtering rules
614 for forwarded ARP packets. See the man page for arptables(8).
616 To compile it as a module, choose M here. If unsure, say N.
618 config IP_NF_ARP_MANGLE
619 tristate "ARP payload mangling"
620 depends on IP_NF_ARPTABLES
622 Allows altering the ARP packet payload: source and destination
623 hardware and network addresses.