ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / net / ipv4 / netfilter / Kconfig
1 #
2 # IP netfilter configuration
3 #
4
5 menu "IP: Netfilter Configuration"
6         depends on INET && NETFILTER
7
8 config IP_NF_CONNTRACK
9         tristate "Connection tracking (required for masq/NAT)"
10         ---help---
11           Connection tracking keeps a record of what packets have passed
12           through your machine, in order to figure out how they are related
13           into connections.
14
15           This is required to do Masquerading or other kinds of Network
16           Address Translation (except for Fast NAT).  It can also be used to
17           enhance packet filtering (see `Connection state match support'
18           below).
19
20           To compile it as a module, choose M here.  If unsure, say N.
21
22 config IP_NF_FTP
23         tristate "FTP protocol support"
24         depends on IP_NF_CONNTRACK
25         help
26           Tracking FTP connections is problematic: special helpers are
27           required for tracking them, and doing masquerading and other forms
28           of Network Address Translation on them.
29
30           To compile it as a module, choose M here.  If unsure, say Y.
31
32 config IP_NF_IRC
33         tristate "IRC protocol support"
34         depends on IP_NF_CONNTRACK
35         ---help---
36           There is a commonly-used extension to IRC called
37           Direct Client-to-Client Protocol (DCC).  This enables users to send
38           files to each other, and also chat to each other without the need
39           of a server.  DCC Sending is used anywhere you send files over IRC,
40           and DCC Chat is most commonly used by Eggdrop bots.  If you are
41           using NAT, this extension will enable you to send files and initiate
42           chats.  Note that you do NOT need this extension to get files or
43           have others initiate chats, or everything else in IRC.
44
45           To compile it as a module, choose M here.  If unsure, say Y.
46
47 config IP_NF_TFTP
48         tristate "TFTP protocol support"
49         depends on IP_NF_CONNTRACK
50         help
51           TFTP connection tracking helper, this is required depending
52           on how restrictive your ruleset is.
53           If you are using a tftp client behind -j SNAT or -j MASQUERADING
54           you will need this.
55
56           To compile it as a module, choose M here.  If unsure, say Y.
57
58 config IP_NF_AMANDA
59         tristate "Amanda backup protocol support"
60         depends on IP_NF_CONNTRACK
61         help
62           If you are running the Amanda backup package <http://www.amanda.org/>
63           on this machine or machines that will be MASQUERADED through this
64           machine, then you may want to enable this feature.  This allows the
65           connection tracking and natting code to allow the sub-channels that
66           Amanda requires for communication of the backup data, messages and
67           index.
68
69           To compile it as a module, choose M here.  If unsure, say Y.
70
71 config IP_NF_QUEUE
72         tristate "Userspace queueing via NETLINK"
73         help
74           Netfilter has the ability to queue packets to user space: the
75           netlink device can be used to access them using this driver.
76
77           To compile it as a module, choose M here.  If unsure, say N.
78
79 config IP_NF_IPTABLES
80         tristate "IP tables support (required for filtering/masq/NAT)"
81         help
82           iptables is a general, extensible packet identification framework.
83           The packet filtering and full NAT (masquerading, port forwarding,
84           etc) subsystems now use this: say `Y' or `M' here if you want to use
85           either of those.
86
87           To compile it as a module, choose M here.  If unsure, say N.
88
89 # The simple matches.
90 config IP_NF_MATCH_LIMIT
91         tristate "limit match support"
92         depends on IP_NF_IPTABLES
93         help
94           limit matching allows you to control the rate at which a rule can be
95           matched: mainly useful in combination with the LOG target ("LOG
96           target support", below) and to avoid some Denial of Service attacks.
97
98           To compile it as a module, choose M here.  If unsure, say N.
99
100 config IP_NF_MATCH_IPRANGE
101         tristate "IP range match support"
102         depends on IP_NF_IPTABLES
103         help
104           This option makes possible to match IP addresses against IP address
105           ranges.
106
107           To compile it as a module, choose M here.  If unsure, say N.
108
109 config IP_NF_MATCH_MAC
110         tristate "MAC address match support"
111         depends on IP_NF_IPTABLES
112         help
113           MAC matching allows you to match packets based on the source
114           Ethernet address of the packet.
115
116           To compile it as a module, choose M here.  If unsure, say N.
117
118 config IP_NF_MATCH_PKTTYPE
119         tristate "Packet type match support"
120         depends on IP_NF_IPTABLES
121         help
122          Packet type matching allows you to match a packet by
123          its "class", eg. BROADCAST, MULTICAST, ...
124
125           Typical usage:
126           iptables -A INPUT -m pkttype --pkt-type broadcast -j LOG
127
128           To compile it as a module, choose M here.  If unsure, say N.
129
130 config IP_NF_MATCH_MARK
131         tristate "netfilter MARK match support"
132         depends on IP_NF_IPTABLES
133         help
134           Netfilter mark matching allows you to match packets based on the
135           `nfmark' value in the packet.  This can be set by the MARK target
136           (see below).
137
138           To compile it as a module, choose M here.  If unsure, say N.
139
140 config IP_NF_MATCH_MULTIPORT
141         tristate "Multiple port match support"
142         depends on IP_NF_IPTABLES
143         help
144           Multiport matching allows you to match TCP or UDP packets based on
145           a series of source or destination ports: normally a rule can only
146           match a single range of ports.
147
148           To compile it as a module, choose M here.  If unsure, say N.
149
150 config IP_NF_MATCH_TOS
151         tristate "TOS match support"
152         depends on IP_NF_IPTABLES
153         help
154           TOS matching allows you to match packets based on the Type Of
155           Service fields of the IP packet.
156
157           To compile it as a module, choose M here.  If unsure, say N.
158
159 config IP_NF_MATCH_RECENT
160         tristate "recent match support"
161         depends on IP_NF_IPTABLES
162         help
163           This match is used for creating one or many lists of recently
164           used addresses and then matching against that/those list(s).
165
166           Short options are available by using 'iptables -m recent -h'
167           Official Website: <http://snowman.net/projects/ipt_recent/>
168
169           To compile it as a module, choose M here.  If unsure, say N.
170
171 config IP_NF_MATCH_ECN
172         tristate "ECN match support"
173         depends on IP_NF_IPTABLES
174         help
175           This option adds a `ECN' match, which allows you to match against
176           the IPv4 and TCP header ECN fields.
177
178           To compile it as a module, choose M here.  If unsure, say N.
179
180 config IP_NF_MATCH_DSCP
181         tristate "DSCP match support"
182         depends on IP_NF_IPTABLES
183         help
184           This option adds a `DSCP' match, which allows you to match against
185           the IPv4 header DSCP field (DSCP codepoint).
186
187           The DSCP codepoint can have any value between 0x0 and 0x4f.
188
189           To compile it as a module, choose M here.  If unsure, say N.
190
191 config IP_NF_MATCH_AH_ESP
192         tristate "AH/ESP match support"
193         depends on IP_NF_IPTABLES
194         help
195           These two match extensions (`ah' and `esp') allow you to match a
196           range of SPIs inside AH or ESP headers of IPSec packets.
197
198           To compile it as a module, choose M here.  If unsure, say N.
199
200 config IP_NF_MATCH_LENGTH
201         tristate "LENGTH match support"
202         depends on IP_NF_IPTABLES
203         help
204           This option allows you to match the length of a packet against a
205           specific value or range of values.
206
207           To compile it as a module, choose M here.  If unsure, say N.
208
209 config IP_NF_MATCH_TTL
210         tristate "TTL match support"
211         depends on IP_NF_IPTABLES
212         help
213           This adds CONFIG_IP_NF_MATCH_TTL option, which enabled the user
214           to match packets by their TTL value.
215
216           To compile it as a module, choose M here.  If unsure, say N.
217
218 config IP_NF_MATCH_TCPMSS
219         tristate "tcpmss match support"
220         depends on IP_NF_IPTABLES
221         help
222           This option adds a `tcpmss' match, which allows you to examine the
223           MSS value of TCP SYN packets, which control the maximum packet size
224           for that connection.
225
226           To compile it as a module, choose M here.  If unsure, say N.
227
228 config IP_NF_MATCH_HELPER
229         tristate "Helper match support"
230         depends on IP_NF_CONNTRACK && IP_NF_IPTABLES
231         help
232           Helper matching allows you to match packets in dynamic connections
233           tracked by a conntrack-helper, ie. ip_conntrack_ftp
234
235           To compile it as a module, choose M here.  If unsure, say Y.
236
237 config IP_NF_MATCH_STATE
238         tristate "Connection state match support"
239         depends on IP_NF_CONNTRACK && IP_NF_IPTABLES
240         help
241           Connection state matching allows you to match packets based on their
242           relationship to a tracked connection (ie. previous packets).  This
243           is a powerful tool for packet classification.
244
245           To compile it as a module, choose M here.  If unsure, say N.
246
247 config IP_NF_MATCH_CONNTRACK
248         tristate "Connection tracking match support"
249         depends on IP_NF_CONNTRACK && IP_NF_IPTABLES
250         help
251           This is a general conntrack match module, a superset of the state match.
252
253           It allows matching on additional conntrack information, which is
254           useful in complex configurations, such as NAT gateways with multiple
255           internet links or tunnels.
256
257           To compile it as a module, choose M here.  If unsure, say N.
258
259 config IP_NF_MATCH_OWNER
260         tristate "Owner match support"
261         depends on IP_NF_IPTABLES
262         help
263           Packet owner matching allows you to match locally-generated packets
264           based on who created them: the user, group, process or session.
265
266           To compile it as a module, choose M here.  If unsure, say N.
267
268 config IP_NF_MATCH_PHYSDEV
269         tristate "Physdev match support"
270         depends on IP_NF_IPTABLES && BRIDGE_NETFILTER
271         help
272           Physdev packet matching matches against the physical bridge ports
273           the IP packet arrived on or will leave by.
274
275           To compile it as a module, choose M here.  If unsure, say N.
276
277 # The targets
278 config IP_NF_FILTER
279         tristate "Packet filtering"
280         depends on IP_NF_IPTABLES
281         help
282           Packet filtering defines a table `filter', which has a series of
283           rules for simple packet filtering at local input, forwarding and
284           local output.  See the man page for iptables(8).
285
286           To compile it as a module, choose M here.  If unsure, say N.
287
288 config IP_NF_TARGET_REJECT
289         tristate "REJECT target support"
290         depends on IP_NF_FILTER
291         help
292           The REJECT target allows a filtering rule to specify that an ICMP
293           error should be issued in response to an incoming packet, rather
294           than silently being dropped.
295
296           To compile it as a module, choose M here.  If unsure, say N.
297
298 config IP_NF_NAT
299         tristate "Full NAT"
300         depends on IP_NF_IPTABLES && IP_NF_CONNTRACK
301         help
302           The Full NAT option allows masquerading, port forwarding and other
303           forms of full Network Address Port Translation.  It is controlled by
304           the `nat' table in iptables: see the man page for iptables(8).
305
306           To compile it as a module, choose M here.  If unsure, say N.
307
308 config IP_NF_NAT_NEEDED
309         bool
310         depends on IP_NF_CONNTRACK!=y && IP_NF_IPTABLES!=y && (IP_NF_COMPAT_IPCHAINS!=y && IP_NF_COMPAT_IPFWADM || IP_NF_COMPAT_IPCHAINS) || IP_NF_IPTABLES && IP_NF_CONNTRACK && IP_NF_NAT
311         default y
312
313 config IP_NF_TARGET_MASQUERADE
314         tristate "MASQUERADE target support"
315         depends on IP_NF_NAT
316         help
317           Masquerading is a special case of NAT: all outgoing connections are
318           changed to seem to come from a particular interface's address, and
319           if the interface goes down, those connections are lost.  This is
320           only useful for dialup accounts with dynamic IP address (ie. your IP
321           address will be different on next dialup).
322
323           To compile it as a module, choose M here.  If unsure, say N.
324
325 config IP_NF_TARGET_REDIRECT
326         tristate "REDIRECT target support"
327         depends on IP_NF_NAT
328         help
329           REDIRECT is a special case of NAT: all incoming connections are
330           mapped onto the incoming interface's address, causing the packets to
331           come to the local machine instead of passing through.  This is
332           useful for transparent proxies.
333
334           To compile it as a module, choose M here.  If unsure, say N.
335
336 config IP_NF_TARGET_NETMAP
337         tristate "NETMAP target support"
338         depends on IP_NF_NAT
339         help
340           NETMAP is an implementation of static 1:1 NAT mapping of network
341           addresses. It maps the network address part, while keeping the host
342           address part intact. It is similar to Fast NAT, except that
343           Netfilter's connection tracking doesn't work well with Fast NAT.
344
345           To compile it as a module, choose M here.  If unsure, say N.
346
347 config IP_NF_TARGET_SAME
348         tristate "SAME target support"
349         depends on IP_NF_NAT
350         help
351           This option adds a `SAME' target, which works like the standard SNAT
352           target, but attempts to give clients the same IP for all connections.
353
354           To compile it as a module, choose M here.  If unsure, say N.
355
356 config IP_NF_NAT_LOCAL
357         bool "NAT of local connections (READ HELP)"
358         depends on IP_NF_NAT
359         help
360           This option enables support for NAT of locally originated connections. 
361           Enable this if you need to use destination NAT on connections
362           originating from local processes on the nat box itself.
363
364           Please note that you will need a recent version (>= 1.2.6a)
365           of the iptables userspace program in order to use this feature.
366           See <http://www.iptables.org/> for download instructions.
367
368           If unsure, say 'N'.
369
370 config IP_NF_NAT_SNMP_BASIC
371         tristate "Basic SNMP-ALG support (EXPERIMENTAL)"
372         depends on EXPERIMENTAL && IP_NF_NAT
373         ---help---
374
375           This module implements an Application Layer Gateway (ALG) for
376           SNMP payloads.  In conjunction with NAT, it allows a network
377           management system to access multiple private networks with
378           conflicting addresses.  It works by modifying IP addresses
379           inside SNMP payloads to match IP-layer NAT mapping.
380
381           This is the "basic" form of SNMP-ALG, as described in RFC 2962
382
383           To compile it as a module, choose M here.  If unsure, say N.
384
385 config IP_NF_NAT_IRC
386         tristate
387         depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
388         default IP_NF_NAT if IP_NF_IRC=y
389         default m if IP_NF_IRC=m
390
391 # If they want FTP, set to $CONFIG_IP_NF_NAT (m or y), 
392 # or $CONFIG_IP_NF_FTP (m or y), whichever is weaker.  Argh.
393 config IP_NF_NAT_FTP
394         tristate
395         depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
396         default IP_NF_NAT if IP_NF_FTP=y
397         default m if IP_NF_FTP=m
398
399 config IP_NF_NAT_TFTP
400         tristate
401         depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
402         default IP_NF_NAT if IP_NF_TFTP=y
403         default m if IP_NF_TFTP=m
404
405 config IP_NF_NAT_AMANDA
406         tristate
407         depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
408         default IP_NF_NAT if IP_NF_AMANDA=y
409         default m if IP_NF_AMANDA=m
410
411 config IP_NF_MANGLE
412         tristate "Packet mangling"
413         depends on IP_NF_IPTABLES
414         help
415           This option adds a `mangle' table to iptables: see the man page for
416           iptables(8).  This table is used for various packet alterations
417           which can effect how the packet is routed.
418
419           To compile it as a module, choose M here.  If unsure, say N.
420
421 config IP_NF_TARGET_TOS
422         tristate "TOS target support"
423         depends on IP_NF_MANGLE
424         help
425           This option adds a `TOS' target, which allows you to create rules in
426           the `mangle' table which alter the Type Of Service field of an IP
427           packet prior to routing.
428
429           To compile it as a module, choose M here.  If unsure, say N.
430
431 config IP_NF_TARGET_ECN
432         tristate "ECN target support"
433         depends on IP_NF_MANGLE
434         ---help---
435           This option adds a `ECN' target, which can be used in the iptables mangle
436           table.  
437
438           You can use this target to remove the ECN bits from the IPv4 header of
439           an IP packet.  This is particularly useful, if you need to work around
440           existing ECN blackholes on the internet, but don't want to disable
441           ECN support in general.
442
443           To compile it as a module, choose M here.  If unsure, say N.
444
445 config IP_NF_TARGET_DSCP
446         tristate "DSCP target support"
447         depends on IP_NF_MANGLE
448         help
449           This option adds a `DSCP' match, which allows you to match against
450           the IPv4 header DSCP field (DSCP codepoint).
451
452           The DSCP codepoint can have any value between 0x0 and 0x4f.
453
454           To compile it as a module, choose M here.  If unsure, say N.
455
456 config IP_NF_TARGET_MARK
457         tristate "MARK target support"
458         depends on IP_NF_MANGLE
459         help
460           This option adds a `MARK' target, which allows you to create rules
461           in the `mangle' table which alter the netfilter mark (nfmark) field
462           associated with the packet prior to routing. This can change
463           the routing method (see `Use netfilter MARK value as routing
464           key') and can also be used by other subsystems to change their
465           behavior.
466
467           To compile it as a module, choose M here.  If unsure, say N.
468
469 config IP_NF_TARGET_CLASSIFY
470         tristate "CLASSIFY target support"
471         depends on IP_NF_MANGLE
472         help
473           This option adds a `CLASSIFY' target, which enables the user to set
474           the priority of a packet. Some qdiscs can use this value for
475           classification, among these are:
476
477           atm, cbq, dsmark, pfifo_fast, htb, prio
478
479           To compile it as a module, choose M here.  If unsure, say N.
480
481 config IP_NF_TARGET_LOG
482         tristate "LOG target support"
483         depends on IP_NF_IPTABLES
484         help
485           This option adds a `LOG' target, which allows you to create rules in
486           any iptables table which records the packet header to the syslog.
487
488           To compile it as a module, choose M here.  If unsure, say N.
489
490 config IP_NF_TARGET_ULOG
491         tristate "ULOG target support"
492         depends on IP_NF_IPTABLES
493         ---help---
494           This option adds a `ULOG' target, which allows you to create rules in
495           any iptables table. The packet is passed to a userspace logging
496           daemon using netlink multicast sockets; unlike the LOG target
497           which can only be viewed through syslog.
498
499           The apropriate userspace logging daemon (ulogd) may be obtained from
500           <http://www.gnumonks.org/projects/ulogd/>
501
502           To compile it as a module, choose M here.  If unsure, say N.
503
504 config IP_NF_TARGET_TCPMSS
505         tristate "TCPMSS target support"
506         depends on IP_NF_IPTABLES
507         ---help---
508           This option adds a `TCPMSS' target, which allows you to alter the
509           MSS value of TCP SYN packets, to control the maximum size for that
510           connection (usually limiting it to your outgoing interface's MTU
511           minus 40).
512
513           This is used to overcome criminally braindead ISPs or servers which
514           block ICMP Fragmentation Needed packets.  The symptoms of this
515           problem are that everything works fine from your Linux
516           firewall/router, but machines behind it can never exchange large
517           packets:
518                 1) Web browsers connect, then hang with no data received.
519                 2) Small mail works fine, but large emails hang.
520                 3) ssh works fine, but scp hangs after initial handshaking.
521
522           Workaround: activate this option and add a rule to your firewall
523           configuration like:
524
525           iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
526                          -j TCPMSS --clamp-mss-to-pmtu
527
528           To compile it as a module, choose M here.  If unsure, say N.
529
530 config IP_NF_ARPTABLES
531         tristate "ARP tables support"
532         help
533           arptables is a general, extensible packet identification framework.
534           The ARP packet filtering and mangling (manipulation)subsystems
535           use this: say Y or M here if you want to use either of those.
536
537           To compile it as a module, choose M here.  If unsure, say N.
538
539 config IP_NF_ARPFILTER
540         tristate "ARP packet filtering"
541         depends on IP_NF_ARPTABLES
542         help
543           ARP packet filtering defines a table `filter', which has a series of
544           rules for simple ARP packet filtering at local input and
545           local output.  On a bridge, you can also specify filtering rules
546           for forwarded ARP packets. See the man page for arptables(8).
547
548           To compile it as a module, choose M here.  If unsure, say N.
549
550 config IP_NF_ARP_MANGLE
551         tristate "ARP payload mangling"
552         depends on IP_NF_ARPTABLES
553         help
554           Allows altering the ARP packet payload: source and destination
555           hardware and network addresses.
556
557 # Backwards compatibility modules: only if you don't build in the others.
558 config IP_NF_COMPAT_IPCHAINS
559         tristate "ipchains (2.2-style) support"
560         depends on IP_NF_CONNTRACK!=y && IP_NF_IPTABLES!=y
561         help
562           This option places ipchains (with masquerading and redirection
563           support) back into the kernel, using the new netfilter
564           infrastructure.  It is not recommended for new installations (see
565           `Packet filtering').  With this enabled, you should be able to use
566           the ipchains tool exactly as in 2.2 kernels.
567
568           To compile it as a module, choose M here.  If unsure, say N.
569
570 config IP_NF_COMPAT_IPFWADM
571         tristate "ipfwadm (2.0-style) support"
572         depends on IP_NF_CONNTRACK!=y && IP_NF_IPTABLES!=y && IP_NF_COMPAT_IPCHAINS!=y
573         help
574           This option places ipfwadm (with masquerading and redirection
575           support) back into the kernel, using the new netfilter
576           infrastructure.  It is not recommended for new installations (see
577           `Packet filtering').  With this enabled, you should be able to use
578           the ipfwadm tool exactly as in 2.0 kernels.
579
580           To compile it as a module, choose M here.  If unsure, say N.
581
582 config IP_NF_TARGET_NOTRACK
583         tristate  'NOTRACK target support'
584         depends on IP_NF_RAW
585         help
586           The NOTRACK target allows a select rule to specify
587           which packets *not* to enter the conntrack/NAT
588           subsystem with all the consequences (no ICMP error tracking,
589           no protocol helpers for the selected packets).
590         
591           If you want to compile it as a module, say M here and read
592           <file:Documentation/modules.txt>.  If unsure, say `N'.
593
594 config IP_NF_RAW
595         tristate  'raw table support (required for NOTRACK/TRACE)'
596         depends on IP_NF_IPTABLES
597         help
598           This option adds a `raw' table to iptables. This table is the very
599           first in the netfilter framework and hooks in at the PREROUTING
600           and OUTPUT chains.
601         
602           If you want to compile it as a module, say M here and read
603           <file:Documentation/modules.txt>.  If unsure, say `N'.
604           help
605
606 endmenu
607