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