Merge with rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
[linux-2.6] / net / ipv4 / netfilter / Kconfig
1 #
2 # IP netfilter configuration
3 #
4
5 menu "IP: Netfilter Configuration"
6         depends on INET && NETFILTER
7
8 config NF_CONNTRACK_IPV4
9         tristate "IPv4 support for new connection tracking (EXPERIMENTAL)"
10         depends on EXPERIMENTAL && NF_CONNTRACK
11         ---help---
12           Connection tracking keeps a record of what packets have passed
13           through your machine, in order to figure out how they are related
14           into connections.
15
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.
19
20           To compile it as a module, choose M here.  If unsure, say N.
21
22 # connection tracking, helpers and protocols
23 config IP_NF_CONNTRACK
24         tristate "Connection tracking (required for masq/NAT)"
25         ---help---
26           Connection tracking keeps a record of what packets have passed
27           through your machine, in order to figure out how they are related
28           into connections.
29
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'
33           below).
34
35           To compile it as a module, choose M here.  If unsure, say N.
36
37 config IP_NF_CT_ACCT
38         bool "Connection tracking flow accounting"
39         depends on IP_NF_CONNTRACK
40         help
41           If this option is enabled, the connection tracking code will
42           keep per-flow packet and byte counters.
43
44           Those counters can be used for flow-based accounting or the
45           `connbytes' match.
46
47           If unsure, say `N'.
48
49 config IP_NF_CONNTRACK_MARK
50         bool  'Connection mark tracking support'
51         depends on IP_NF_CONNTRACK
52         help
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.
57         
58 config IP_NF_CONNTRACK_EVENTS
59         bool "Connection tracking events (EXPERIMENTAL)"
60         depends on EXPERIMENTAL && IP_NF_CONNTRACK
61         help
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.
65           
66           IF unsure, say `N'.
67
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
72         help
73           This option enables support for a netlink-based userspace interface
74
75
76 config IP_NF_CT_PROTO_SCTP
77         tristate  'SCTP protocol connection tracking support (EXPERIMENTAL)'
78         depends on IP_NF_CONNTRACK && EXPERIMENTAL
79         help
80           With this option enabled, the connection tracking code will
81           be able to do state tracking on SCTP connections.
82
83           If you want to compile it as a module, say M here and read
84           <file:Documentation/modules.txt>.  If unsure, say `N'.
85
86 config IP_NF_FTP
87         tristate "FTP protocol support"
88         depends on IP_NF_CONNTRACK
89         help
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.
93
94           To compile it as a module, choose M here.  If unsure, say Y.
95
96 config IP_NF_IRC
97         tristate "IRC protocol support"
98         depends on IP_NF_CONNTRACK
99         ---help---
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.
108
109           To compile it as a module, choose M here.  If unsure, say Y.
110
111 config IP_NF_NETBIOS_NS
112         tristate "NetBIOS name service protocol support (EXPERIMENTAL)"
113         depends on IP_NF_CONNTRACK && EXPERIMENTAL
114         help
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:
123
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
127           
128           To compile it as a module, choose M here.  If unsure, say N.
129
130 config IP_NF_TFTP
131         tristate "TFTP protocol support"
132         depends on IP_NF_CONNTRACK
133         help
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
137           you will need this.
138
139           To compile it as a module, choose M here.  If unsure, say Y.
140
141 config IP_NF_AMANDA
142         tristate "Amanda backup protocol support"
143         depends on IP_NF_CONNTRACK
144         help
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
150           index.
151
152           To compile it as a module, choose M here.  If unsure, say Y.
153
154 config IP_NF_PPTP
155         tristate  'PPTP protocol support'
156         depends on IP_NF_CONNTRACK
157         help
158           This module adds support for PPTP (Point to Point Tunnelling
159           Protocol, RFC2637) connection tracking and NAT. 
160         
161           If you are running PPTP sessions over a stateful firewall or NAT
162           box, you may want to enable this feature.  
163         
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
167         
168           If you want to compile it as a module, say M here and read
169           Documentation/modules.txt.  If unsure, say `N'.
170
171 config IP_NF_H323
172         tristate  'H.323 protocol support'
173         depends on IP_NF_CONNTRACK
174         help
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,
178           Gnomemeeting, etc.
179
180           With this module you can support H.323 on a connection tracking/NAT
181           firewall.
182
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/.
187
188           If you want to compile it as a module, say 'M' here and read
189           Documentation/modules.txt.  If unsure, say 'N'.
190
191 config IP_NF_QUEUE
192         tristate "IP Userspace queueing via NETLINK (OBSOLETE)"
193         help
194           Netfilter has the ability to queue packets to user space: the
195           netlink device can be used to access them using this driver.
196
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).
200
201           To compile it as a module, choose M here.  If unsure, say N.
202
203 config IP_NF_IPTABLES
204         tristate "IP tables support (required for filtering/masq/NAT)"
205         depends on NETFILTER_XTABLES
206         help
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
210           either of those.
211
212           To compile it as a module, choose M here.  If unsure, say N.
213
214 # The matches.
215 config IP_NF_MATCH_IPRANGE
216         tristate "IP range match support"
217         depends on IP_NF_IPTABLES
218         help
219           This option makes possible to match IP addresses against IP address
220           ranges.
221
222           To compile it as a module, choose M here.  If unsure, say N.
223
224 config IP_NF_MATCH_MULTIPORT
225         tristate "Multiple port match support"
226         depends on IP_NF_IPTABLES
227         help
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.
231
232           To compile it as a module, choose M here.  If unsure, say N.
233
234 config IP_NF_MATCH_TOS
235         tristate "TOS match support"
236         depends on IP_NF_IPTABLES
237         help
238           TOS matching allows you to match packets based on the Type Of
239           Service fields of the IP packet.
240
241           To compile it as a module, choose M here.  If unsure, say N.
242
243 config IP_NF_MATCH_RECENT
244         tristate "recent match support"
245         depends on IP_NF_IPTABLES
246         help
247           This match is used for creating one or many lists of recently
248           used addresses and then matching against that/those list(s).
249
250           Short options are available by using 'iptables -m recent -h'
251           Official Website: <http://snowman.net/projects/ipt_recent/>
252
253           To compile it as a module, choose M here.  If unsure, say N.
254
255 config IP_NF_MATCH_ECN
256         tristate "ECN match support"
257         depends on IP_NF_IPTABLES
258         help
259           This option adds a `ECN' match, which allows you to match against
260           the IPv4 and TCP header ECN fields.
261
262           To compile it as a module, choose M here.  If unsure, say N.
263
264 config IP_NF_MATCH_DSCP
265         tristate "DSCP match support"
266         depends on IP_NF_IPTABLES
267         help
268           This option adds a `DSCP' match, which allows you to match against
269           the IPv4 header DSCP field (DSCP codepoint).
270
271           The DSCP codepoint can have any value between 0x0 and 0x4f.
272
273           To compile it as a module, choose M here.  If unsure, say N.
274
275 config IP_NF_MATCH_AH_ESP
276         tristate "AH/ESP match support"
277         depends on IP_NF_IPTABLES
278         help
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.
281
282           To compile it as a module, choose M here.  If unsure, say N.
283
284 config IP_NF_MATCH_TTL
285         tristate "TTL match support"
286         depends on IP_NF_IPTABLES
287         help
288           This adds CONFIG_IP_NF_MATCH_TTL option, which enabled the user
289           to match packets by their TTL value.
290
291           To compile it as a module, choose M here.  If unsure, say N.
292
293 config IP_NF_MATCH_OWNER
294         tristate "Owner match support"
295         depends on IP_NF_IPTABLES
296         help
297           Packet owner matching allows you to match locally-generated packets
298           based on who created them: the user, group, process or session.
299
300           To compile it as a module, choose M here.  If unsure, say N.
301
302 config IP_NF_MATCH_ADDRTYPE
303         tristate  'address type match support'
304         depends on IP_NF_IPTABLES
305         help
306           This option allows you to match what routing thinks of an address,
307           eg. UNICAST, LOCAL, BROADCAST, ...
308         
309           If you want to compile it as a module, say M here and read
310           <file:Documentation/modules.txt>.  If unsure, say `N'.
311
312 config IP_NF_MATCH_HASHLIMIT
313         tristate  'hashlimit match support'
314         depends on IP_NF_IPTABLES
315         help
316           This option adds a new iptables `hashlimit' match.  
317
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.
321
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
324           IPtables rule.
325
326 # `filter', generic and specific targets
327 config IP_NF_FILTER
328         tristate "Packet filtering"
329         depends on IP_NF_IPTABLES
330         help
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).
334
335           To compile it as a module, choose M here.  If unsure, say N.
336
337 config IP_NF_TARGET_REJECT
338         tristate "REJECT target support"
339         depends on IP_NF_FILTER
340         help
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.
344
345           To compile it as a module, choose M here.  If unsure, say N.
346
347 config IP_NF_TARGET_LOG
348         tristate "LOG target support"
349         depends on IP_NF_IPTABLES
350         help
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.
353
354           To compile it as a module, choose M here.  If unsure, say N.
355
356 config IP_NF_TARGET_ULOG
357         tristate "ULOG target support (OBSOLETE)"
358         depends on IP_NF_IPTABLES
359         ---help---
360
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).
364
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.
369
370           The apropriate userspace logging daemon (ulogd) may be obtained from
371           <http://www.gnumonks.org/projects/ulogd/>
372
373           To compile it as a module, choose M here.  If unsure, say N.
374
375 config IP_NF_TARGET_TCPMSS
376         tristate "TCPMSS target support"
377         depends on IP_NF_IPTABLES
378         ---help---
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
382           minus 40).
383
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
388           packets:
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.
392
393           Workaround: activate this option and add a rule to your firewall
394           configuration like:
395
396           iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
397                          -j TCPMSS --clamp-mss-to-pmtu
398
399           To compile it as a module, choose M here.  If unsure, say N.
400
401 # NAT + specific targets
402 config IP_NF_NAT
403         tristate "Full NAT"
404         depends on IP_NF_IPTABLES && IP_NF_CONNTRACK
405         help
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).
409
410           To compile it as a module, choose M here.  If unsure, say N.
411
412 config IP_NF_NAT_NEEDED
413         bool
414         depends on IP_NF_NAT != n
415         default y
416
417 config IP_NF_TARGET_MASQUERADE
418         tristate "MASQUERADE target support"
419         depends on IP_NF_NAT
420         help
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).
426
427           To compile it as a module, choose M here.  If unsure, say N.
428
429 config IP_NF_TARGET_REDIRECT
430         tristate "REDIRECT target support"
431         depends on IP_NF_NAT
432         help
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.
437
438           To compile it as a module, choose M here.  If unsure, say N.
439
440 config IP_NF_TARGET_NETMAP
441         tristate "NETMAP target support"
442         depends on IP_NF_NAT
443         help
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.
448
449           To compile it as a module, choose M here.  If unsure, say N.
450
451 config IP_NF_TARGET_SAME
452         tristate "SAME target support"
453         depends on IP_NF_NAT
454         help
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.
457
458           To compile it as a module, choose M here.  If unsure, say N.
459
460 config IP_NF_NAT_SNMP_BASIC
461         tristate "Basic SNMP-ALG support (EXPERIMENTAL)"
462         depends on EXPERIMENTAL && IP_NF_NAT
463         ---help---
464
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.
470
471           This is the "basic" form of SNMP-ALG, as described in RFC 2962
472
473           To compile it as a module, choose M here.  If unsure, say N.
474
475 config IP_NF_NAT_IRC
476         tristate
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
480
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.
483 config IP_NF_NAT_FTP
484         tristate
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
488
489 config IP_NF_NAT_TFTP
490         tristate
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
494
495 config IP_NF_NAT_AMANDA
496         tristate
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
500
501 config IP_NF_NAT_PPTP
502         tristate
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
506
507 config IP_NF_NAT_H323
508         tristate
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
512
513 # mangle + specific targets
514 config IP_NF_MANGLE
515         tristate "Packet mangling"
516         depends on IP_NF_IPTABLES
517         help
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.
521
522           To compile it as a module, choose M here.  If unsure, say N.
523
524 config IP_NF_TARGET_TOS
525         tristate "TOS target support"
526         depends on IP_NF_MANGLE
527         help
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.
531
532           To compile it as a module, choose M here.  If unsure, say N.
533
534 config IP_NF_TARGET_ECN
535         tristate "ECN target support"
536         depends on IP_NF_MANGLE
537         ---help---
538           This option adds a `ECN' target, which can be used in the iptables mangle
539           table.  
540
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.
545
546           To compile it as a module, choose M here.  If unsure, say N.
547
548 config IP_NF_TARGET_DSCP
549         tristate "DSCP target support"
550         depends on IP_NF_MANGLE
551         help
552           This option adds a `DSCP' match, which allows you to match against
553           the IPv4 header DSCP field (DSCP codepoint).
554
555           The DSCP codepoint can have any value between 0x0 and 0x4f.
556
557           To compile it as a module, choose M here.  If unsure, say N.
558
559 config IP_NF_TARGET_TTL
560         tristate  'TTL target support'
561         depends on IP_NF_MANGLE
562         help
563           This option adds a `TTL' target, which enables the user to modify
564           the TTL value of the IP header.
565
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.
570
571           To compile it as a module, choose M here.  If unsure, say N.
572
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)
577         help
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.
581         
582           To compile it as a module, choose M here.  If unsure, say N.
583
584 # raw + specific targets
585 config IP_NF_RAW
586         tristate  'raw table support (required for NOTRACK/TRACE)'
587         depends on IP_NF_IPTABLES
588         help
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
591           and OUTPUT chains.
592         
593           If you want to compile it as a module, say M here and read
594           <file:Documentation/modules.txt>.  If unsure, say `N'.
595
596 # ARP tables
597 config IP_NF_ARPTABLES
598         tristate "ARP tables support"
599         depends on NETFILTER_XTABLES
600         help
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.
604
605           To compile it as a module, choose M here.  If unsure, say N.
606
607 config IP_NF_ARPFILTER
608         tristate "ARP packet filtering"
609         depends on IP_NF_ARPTABLES
610         help
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).
615
616           To compile it as a module, choose M here.  If unsure, say N.
617
618 config IP_NF_ARP_MANGLE
619         tristate "ARP payload mangling"
620         depends on IP_NF_ARPTABLES
621         help
622           Allows altering the ARP packet payload: source and destination
623           hardware and network addresses.
624
625 endmenu
626