f86aeda3a5a02977a0a09086b34976738272e685
[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 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         depends on IP_NF_NAT=n || IP_NF_NAT
73         help
74           This option enables support for a netlink-based userspace interface
75
76
77 config IP_NF_CT_PROTO_SCTP
78         tristate  'SCTP protocol connection tracking support (EXPERIMENTAL)'
79         depends on IP_NF_CONNTRACK && EXPERIMENTAL
80         help
81           With this option enabled, the connection tracking code will
82           be able to do state tracking on SCTP connections.
83
84           If you want to compile it as a module, say M here and read
85           <file:Documentation/modules.txt>.  If unsure, say `N'.
86
87 config IP_NF_FTP
88         tristate "FTP protocol support"
89         depends on IP_NF_CONNTRACK
90         help
91           Tracking FTP connections is problematic: special helpers are
92           required for tracking them, and doing masquerading and other forms
93           of Network Address Translation on them.
94
95           To compile it as a module, choose M here.  If unsure, say Y.
96
97 config IP_NF_IRC
98         tristate "IRC protocol support"
99         depends on IP_NF_CONNTRACK
100         ---help---
101           There is a commonly-used extension to IRC called
102           Direct Client-to-Client Protocol (DCC).  This enables users to send
103           files to each other, and also chat to each other without the need
104           of a server.  DCC Sending is used anywhere you send files over IRC,
105           and DCC Chat is most commonly used by Eggdrop bots.  If you are
106           using NAT, this extension will enable you to send files and initiate
107           chats.  Note that you do NOT need this extension to get files or
108           have others initiate chats, or everything else in IRC.
109
110           To compile it as a module, choose M here.  If unsure, say Y.
111
112 config IP_NF_NETBIOS_NS
113         tristate "NetBIOS name service protocol support (EXPERIMENTAL)"
114         depends on IP_NF_CONNTRACK && EXPERIMENTAL
115         help
116           NetBIOS name service requests are sent as broadcast messages from an
117           unprivileged port and responded to with unicast messages to the
118           same port. This make them hard to firewall properly because connection
119           tracking doesn't deal with broadcasts. This helper tracks locally
120           originating NetBIOS name service requests and the corresponding
121           responses. It relies on correct IP address configuration, specifically
122           netmask and broadcast address. When properly configured, the output
123           of "ip address show" should look similar to this:
124
125           $ ip -4 address show eth0
126           4: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
127               inet 172.16.2.252/24 brd 172.16.2.255 scope global eth0
128           
129           To compile it as a module, choose M here.  If unsure, say N.
130
131 config IP_NF_TFTP
132         tristate "TFTP protocol support"
133         depends on IP_NF_CONNTRACK
134         help
135           TFTP connection tracking helper, this is required depending
136           on how restrictive your ruleset is.
137           If you are using a tftp client behind -j SNAT or -j MASQUERADING
138           you will need this.
139
140           To compile it as a module, choose M here.  If unsure, say Y.
141
142 config IP_NF_AMANDA
143         tristate "Amanda backup protocol support"
144         depends on IP_NF_CONNTRACK
145         select TEXTSEARCH
146         select TEXTSEARCH_KMP
147         help
148           If you are running the Amanda backup package <http://www.amanda.org/>
149           on this machine or machines that will be MASQUERADED through this
150           machine, then you may want to enable this feature.  This allows the
151           connection tracking and natting code to allow the sub-channels that
152           Amanda requires for communication of the backup data, messages and
153           index.
154
155           To compile it as a module, choose M here.  If unsure, say Y.
156
157 config IP_NF_PPTP
158         tristate  'PPTP protocol support'
159         depends on IP_NF_CONNTRACK
160         help
161           This module adds support for PPTP (Point to Point Tunnelling
162           Protocol, RFC2637) connection tracking and NAT. 
163         
164           If you are running PPTP sessions over a stateful firewall or NAT
165           box, you may want to enable this feature.  
166         
167           Please note that not all PPTP modes of operation are supported yet.
168           For more info, read top of the file
169           net/ipv4/netfilter/ip_conntrack_pptp.c
170         
171           If you want to compile it as a module, say M here and read
172           Documentation/modules.txt.  If unsure, say `N'.
173
174 config IP_NF_H323
175         tristate  'H.323 protocol support (EXPERIMENTAL)'
176         depends on IP_NF_CONNTRACK && EXPERIMENTAL
177         help
178           H.323 is a VoIP signalling protocol from ITU-T. As one of the most
179           important VoIP protocols, it is widely used by voice hardware and
180           software including voice gateways, IP phones, Netmeeting, OpenPhone,
181           Gnomemeeting, etc.
182
183           With this module you can support H.323 on a connection tracking/NAT
184           firewall.
185
186           This module supports RAS, Fast Start, H.245 Tunnelling, Call
187           Forwarding, RTP/RTCP and T.120 based audio, video, fax, chat,
188           whiteboard, file transfer, etc. For more information, please
189           visit http://nath323.sourceforge.net/.
190
191           If you want to compile it as a module, say 'M' here and read
192           Documentation/modules.txt.  If unsure, say 'N'.
193
194 config IP_NF_QUEUE
195         tristate "IP Userspace queueing via NETLINK (OBSOLETE)"
196         help
197           Netfilter has the ability to queue packets to user space: the
198           netlink device can be used to access them using this driver.
199
200           This option enables the old IPv4-only "ip_queue" implementation
201           which has been obsoleted by the new "nfnetlink_queue" code (see
202           CONFIG_NETFILTER_NETLINK_QUEUE).
203
204           To compile it as a module, choose M here.  If unsure, say N.
205
206 config IP_NF_IPTABLES
207         tristate "IP tables support (required for filtering/masq/NAT)"
208         depends on NETFILTER_XTABLES
209         help
210           iptables is a general, extensible packet identification framework.
211           The packet filtering and full NAT (masquerading, port forwarding,
212           etc) subsystems now use this: say `Y' or `M' here if you want to use
213           either of those.
214
215           To compile it as a module, choose M here.  If unsure, say N.
216
217 # The matches.
218 config IP_NF_MATCH_IPRANGE
219         tristate "IP range match support"
220         depends on IP_NF_IPTABLES
221         help
222           This option makes possible to match IP addresses against IP address
223           ranges.
224
225           To compile it as a module, choose M here.  If unsure, say N.
226
227 config IP_NF_MATCH_TOS
228         tristate "TOS match support"
229         depends on IP_NF_IPTABLES
230         help
231           TOS matching allows you to match packets based on the Type Of
232           Service fields of the IP packet.
233
234           To compile it as a module, choose M here.  If unsure, say N.
235
236 config IP_NF_MATCH_RECENT
237         tristate "recent match support"
238         depends on IP_NF_IPTABLES
239         help
240           This match is used for creating one or many lists of recently
241           used addresses and then matching against that/those list(s).
242
243           Short options are available by using 'iptables -m recent -h'
244           Official Website: <http://snowman.net/projects/ipt_recent/>
245
246           To compile it as a module, choose M here.  If unsure, say N.
247
248 config IP_NF_MATCH_ECN
249         tristate "ECN match support"
250         depends on IP_NF_IPTABLES
251         help
252           This option adds a `ECN' match, which allows you to match against
253           the IPv4 and TCP header ECN fields.
254
255           To compile it as a module, choose M here.  If unsure, say N.
256
257 config IP_NF_MATCH_DSCP
258         tristate "DSCP match support"
259         depends on IP_NF_IPTABLES
260         help
261           This option adds a `DSCP' match, which allows you to match against
262           the IPv4 header DSCP field (DSCP codepoint).
263
264           The DSCP codepoint can have any value between 0x0 and 0x4f.
265
266           To compile it as a module, choose M here.  If unsure, say N.
267
268 config IP_NF_MATCH_AH
269         tristate "AH match support"
270         depends on IP_NF_IPTABLES
271         help
272           This match extension allows you to match a range of SPIs
273           inside AH header of IPSec packets.
274
275           To compile it as a module, choose M here.  If unsure, say N.
276
277 config IP_NF_MATCH_TTL
278         tristate "TTL match support"
279         depends on IP_NF_IPTABLES
280         help
281           This adds CONFIG_IP_NF_MATCH_TTL option, which enabled the user
282           to match packets by their TTL value.
283
284           To compile it as a module, choose M here.  If unsure, say N.
285
286 config IP_NF_MATCH_OWNER
287         tristate "Owner match support"
288         depends on IP_NF_IPTABLES
289         help
290           Packet owner matching allows you to match locally-generated packets
291           based on who created them: the user, group, process or session.
292
293           To compile it as a module, choose M here.  If unsure, say N.
294
295 config IP_NF_MATCH_ADDRTYPE
296         tristate  'address type match support'
297         depends on IP_NF_IPTABLES
298         help
299           This option allows you to match what routing thinks of an address,
300           eg. UNICAST, LOCAL, BROADCAST, ...
301         
302           If you want to compile it as a module, say M here and read
303           <file:Documentation/modules.txt>.  If unsure, say `N'.
304
305 config IP_NF_MATCH_HASHLIMIT
306         tristate  'hashlimit match support'
307         depends on IP_NF_IPTABLES
308         help
309           This option adds a new iptables `hashlimit' match.  
310
311           As opposed to `limit', this match dynamically crates a hash table
312           of limit buckets, based on your selection of source/destination
313           ip addresses and/or ports.
314
315           It enables you to express policies like `10kpps for any given
316           destination IP' or `500pps from any given source IP'  with a single
317           IPtables rule.
318
319 # `filter', generic and specific targets
320 config IP_NF_FILTER
321         tristate "Packet filtering"
322         depends on IP_NF_IPTABLES
323         help
324           Packet filtering defines a table `filter', which has a series of
325           rules for simple packet filtering at local input, forwarding and
326           local output.  See the man page for iptables(8).
327
328           To compile it as a module, choose M here.  If unsure, say N.
329
330 config IP_NF_TARGET_REJECT
331         tristate "REJECT target support"
332         depends on IP_NF_FILTER
333         help
334           The REJECT target allows a filtering rule to specify that an ICMP
335           error should be issued in response to an incoming packet, rather
336           than silently being dropped.
337
338           To compile it as a module, choose M here.  If unsure, say N.
339
340 config IP_NF_TARGET_LOG
341         tristate "LOG target support"
342         depends on IP_NF_IPTABLES
343         help
344           This option adds a `LOG' target, which allows you to create rules in
345           any iptables table which records the packet header to the syslog.
346
347           To compile it as a module, choose M here.  If unsure, say N.
348
349 config IP_NF_TARGET_ULOG
350         tristate "ULOG target support"
351         depends on IP_NF_IPTABLES
352         ---help---
353
354           This option enables the old IPv4-only "ipt_ULOG" implementation
355           which has been obsoleted by the new "nfnetlink_log" code (see
356           CONFIG_NETFILTER_NETLINK_LOG).
357
358           This option adds a `ULOG' target, which allows you to create rules in
359           any iptables table. The packet is passed to a userspace logging
360           daemon using netlink multicast sockets; unlike the LOG target
361           which can only be viewed through syslog.
362
363           The apropriate userspace logging daemon (ulogd) may be obtained from
364           <http://www.gnumonks.org/projects/ulogd/>
365
366           To compile it as a module, choose M here.  If unsure, say N.
367
368 config IP_NF_TARGET_TCPMSS
369         tristate "TCPMSS target support"
370         depends on IP_NF_IPTABLES
371         ---help---
372           This option adds a `TCPMSS' target, which allows you to alter the
373           MSS value of TCP SYN packets, to control the maximum size for that
374           connection (usually limiting it to your outgoing interface's MTU
375           minus 40).
376
377           This is used to overcome criminally braindead ISPs or servers which
378           block ICMP Fragmentation Needed packets.  The symptoms of this
379           problem are that everything works fine from your Linux
380           firewall/router, but machines behind it can never exchange large
381           packets:
382                 1) Web browsers connect, then hang with no data received.
383                 2) Small mail works fine, but large emails hang.
384                 3) ssh works fine, but scp hangs after initial handshaking.
385
386           Workaround: activate this option and add a rule to your firewall
387           configuration like:
388
389           iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
390                          -j TCPMSS --clamp-mss-to-pmtu
391
392           To compile it as a module, choose M here.  If unsure, say N.
393
394 # NAT + specific targets
395 config IP_NF_NAT
396         tristate "Full NAT"
397         depends on IP_NF_IPTABLES && IP_NF_CONNTRACK
398         help
399           The Full NAT option allows masquerading, port forwarding and other
400           forms of full Network Address Port Translation.  It is controlled by
401           the `nat' table in iptables: see the man page for iptables(8).
402
403           To compile it as a module, choose M here.  If unsure, say N.
404
405 config IP_NF_NAT_NEEDED
406         bool
407         depends on IP_NF_NAT != n
408         default y
409
410 config IP_NF_TARGET_MASQUERADE
411         tristate "MASQUERADE target support"
412         depends on IP_NF_NAT
413         help
414           Masquerading is a special case of NAT: all outgoing connections are
415           changed to seem to come from a particular interface's address, and
416           if the interface goes down, those connections are lost.  This is
417           only useful for dialup accounts with dynamic IP address (ie. your IP
418           address will be different on next dialup).
419
420           To compile it as a module, choose M here.  If unsure, say N.
421
422 config IP_NF_TARGET_REDIRECT
423         tristate "REDIRECT target support"
424         depends on IP_NF_NAT
425         help
426           REDIRECT is a special case of NAT: all incoming connections are
427           mapped onto the incoming interface's address, causing the packets to
428           come to the local machine instead of passing through.  This is
429           useful for transparent proxies.
430
431           To compile it as a module, choose M here.  If unsure, say N.
432
433 config IP_NF_TARGET_NETMAP
434         tristate "NETMAP target support"
435         depends on IP_NF_NAT
436         help
437           NETMAP is an implementation of static 1:1 NAT mapping of network
438           addresses. It maps the network address part, while keeping the host
439           address part intact. It is similar to Fast NAT, except that
440           Netfilter's connection tracking doesn't work well with Fast NAT.
441
442           To compile it as a module, choose M here.  If unsure, say N.
443
444 config IP_NF_TARGET_SAME
445         tristate "SAME target support"
446         depends on IP_NF_NAT
447         help
448           This option adds a `SAME' target, which works like the standard SNAT
449           target, but attempts to give clients the same IP for all connections.
450
451           To compile it as a module, choose M here.  If unsure, say N.
452
453 config IP_NF_NAT_SNMP_BASIC
454         tristate "Basic SNMP-ALG support (EXPERIMENTAL)"
455         depends on EXPERIMENTAL && IP_NF_NAT
456         ---help---
457
458           This module implements an Application Layer Gateway (ALG) for
459           SNMP payloads.  In conjunction with NAT, it allows a network
460           management system to access multiple private networks with
461           conflicting addresses.  It works by modifying IP addresses
462           inside SNMP payloads to match IP-layer NAT mapping.
463
464           This is the "basic" form of SNMP-ALG, as described in RFC 2962
465
466           To compile it as a module, choose M here.  If unsure, say N.
467
468 config IP_NF_NAT_IRC
469         tristate
470         depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
471         default IP_NF_NAT if IP_NF_IRC=y
472         default m if IP_NF_IRC=m
473
474 # If they want FTP, set to $CONFIG_IP_NF_NAT (m or y), 
475 # or $CONFIG_IP_NF_FTP (m or y), whichever is weaker.  Argh.
476 config IP_NF_NAT_FTP
477         tristate
478         depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
479         default IP_NF_NAT if IP_NF_FTP=y
480         default m if IP_NF_FTP=m
481
482 config IP_NF_NAT_TFTP
483         tristate
484         depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
485         default IP_NF_NAT if IP_NF_TFTP=y
486         default m if IP_NF_TFTP=m
487
488 config IP_NF_NAT_AMANDA
489         tristate
490         depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
491         default IP_NF_NAT if IP_NF_AMANDA=y
492         default m if IP_NF_AMANDA=m
493
494 config IP_NF_NAT_PPTP
495         tristate
496         depends on IP_NF_NAT!=n && IP_NF_PPTP!=n
497         default IP_NF_NAT if IP_NF_PPTP=y
498         default m if IP_NF_PPTP=m
499
500 config IP_NF_NAT_H323
501         tristate
502         depends on IP_NF_IPTABLES!=n && IP_NF_CONNTRACK!=n && IP_NF_NAT!=n
503         default IP_NF_NAT if IP_NF_H323=y
504         default m if IP_NF_H323=m
505
506 # mangle + specific targets
507 config IP_NF_MANGLE
508         tristate "Packet mangling"
509         depends on IP_NF_IPTABLES
510         help
511           This option adds a `mangle' table to iptables: see the man page for
512           iptables(8).  This table is used for various packet alterations
513           which can effect how the packet is routed.
514
515           To compile it as a module, choose M here.  If unsure, say N.
516
517 config IP_NF_TARGET_TOS
518         tristate "TOS target support"
519         depends on IP_NF_MANGLE
520         help
521           This option adds a `TOS' target, which allows you to create rules in
522           the `mangle' table which alter the Type Of Service field of an IP
523           packet prior to routing.
524
525           To compile it as a module, choose M here.  If unsure, say N.
526
527 config IP_NF_TARGET_ECN
528         tristate "ECN target support"
529         depends on IP_NF_MANGLE
530         ---help---
531           This option adds a `ECN' target, which can be used in the iptables mangle
532           table.  
533
534           You can use this target to remove the ECN bits from the IPv4 header of
535           an IP packet.  This is particularly useful, if you need to work around
536           existing ECN blackholes on the internet, but don't want to disable
537           ECN support in general.
538
539           To compile it as a module, choose M here.  If unsure, say N.
540
541 config IP_NF_TARGET_DSCP
542         tristate "DSCP target support"
543         depends on IP_NF_MANGLE
544         help
545           This option adds a `DSCP' match, which allows you to match against
546           the IPv4 header DSCP field (DSCP codepoint).
547
548           The DSCP codepoint can have any value between 0x0 and 0x4f.
549
550           To compile it as a module, choose M here.  If unsure, say N.
551
552 config IP_NF_TARGET_TTL
553         tristate  'TTL target support'
554         depends on IP_NF_MANGLE
555         help
556           This option adds a `TTL' target, which enables the user to modify
557           the TTL value of the IP header.
558
559           While it is safe to decrement/lower the TTL, this target also enables
560           functionality to increment and set the TTL value of the IP header to
561           arbitrary values.  This is EXTREMELY DANGEROUS since you can easily
562           create immortal packets that loop forever on the network.
563
564           To compile it as a module, choose M here.  If unsure, say N.
565
566 config IP_NF_TARGET_CLUSTERIP
567         tristate "CLUSTERIP target support (EXPERIMENTAL)"
568         depends on IP_NF_MANGLE && EXPERIMENTAL
569         depends on (IP_NF_CONNTRACK && IP_NF_CONNTRACK_MARK) || (NF_CONNTRACK_MARK && NF_CONNTRACK_IPV4)
570         help
571           The CLUSTERIP target allows you to build load-balancing clusters of
572           network servers without having a dedicated load-balancing
573           router/server/switch.
574         
575           To compile it as a module, choose M here.  If unsure, say N.
576
577 # raw + specific targets
578 config IP_NF_RAW
579         tristate  'raw table support (required for NOTRACK/TRACE)'
580         depends on IP_NF_IPTABLES
581         help
582           This option adds a `raw' table to iptables. This table is the very
583           first in the netfilter framework and hooks in at the PREROUTING
584           and OUTPUT chains.
585         
586           If you want to compile it as a module, say M here and read
587           <file:Documentation/modules.txt>.  If unsure, say `N'.
588
589 # ARP tables
590 config IP_NF_ARPTABLES
591         tristate "ARP tables support"
592         depends on NETFILTER_XTABLES
593         help
594           arptables is a general, extensible packet identification framework.
595           The ARP packet filtering and mangling (manipulation)subsystems
596           use this: say Y or M here if you want to use either of those.
597
598           To compile it as a module, choose M here.  If unsure, say N.
599
600 config IP_NF_ARPFILTER
601         tristate "ARP packet filtering"
602         depends on IP_NF_ARPTABLES
603         help
604           ARP packet filtering defines a table `filter', which has a series of
605           rules for simple ARP packet filtering at local input and
606           local output.  On a bridge, you can also specify filtering rules
607           for forwarded ARP packets. See the man page for arptables(8).
608
609           To compile it as a module, choose M here.  If unsure, say N.
610
611 config IP_NF_ARP_MANGLE
612         tristate "ARP payload mangling"
613         depends on IP_NF_ARPTABLES
614         help
615           Allows altering the ARP packet payload: source and destination
616           hardware and network addresses.
617
618 endmenu
619