12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586 |
- // Copyright (c) The Tor Project, Inc.
- // See LICENSE for licensing information
- // This is an asciidoc file used to generate the manpage/html reference.
- // Learn asciidoc on http://www.methods.co.nz/asciidoc/userguide.html
- TOR(1)
- ======
- NAME
- ----
- tor - The second-generation onion router
- SYNOPSIS
- --------
- **tor** [__OPTION__ __value__]...
- DESCRIPTION
- -----------
- __tor__ is a connection-oriented anonymizing communication
- service. Users choose a source-routed path through a set of nodes, and
- negotiate a "virtual circuit" through the network, in which each node
- knows its predecessor and successor, but no others. Traffic flowing down
- the circuit is unwrapped by a symmetric key at each node, which reveals
- the downstream node. +
- Basically __tor__ provides a distributed network of servers ("onion routers").
- Users bounce their TCP streams -- web traffic, ftp, ssh, etc -- around the
- routers, and recipients, observers, and even the routers themselves have
- difficulty tracking the source of the stream.
- OPTIONS
- -------
- **-h**, **-help**::
- Display a short help message and exit.
- **-f** __FILE__::
- FILE contains further "option value" pairs. (Default: @CONFDIR@/torrc)
- **--hash-password**::
- Generates a hashed password for control port access.
- **--list-fingerprint**::
- Generate your keys and output your nickname and fingerprint.
- **--verify-config**::
- Verify the configuration file is valid.
- **--nt-service**::
- **--service [install|remove|start|stop]** Manage the Tor Windows
- NT/2000/XP service. Current instructions can be found at
- https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#WinNTService
- **--list-torrc-options**::
- List all valid options.
- **--version**::
- Display Tor version and exit.
- **--quiet**::
- Do not start Tor with a console log unless explicitly requested to do so.
- (By default, Tor starts out logging messages at level "notice" or higher to
- the console, until it has parsed its configuration.)
- Other options can be specified either on the command-line (--option
- value), or in the configuration file (option value or option "value").
- Options are case-insensitive. C-style escaped characters are allowed inside
- quoted values. Options on the command line take precedence over
- options found in the configuration file, except indicated otherwise. To
- split one configuration entry into multiple lines, use a single \ before
- the end of the line. Comments can be used in such multiline entries, but
- they must start at the beginning of a line.
- **BandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
- A token bucket limits the average incoming bandwidth usage on this node to
- the specified number of bytes per second, and the average outgoing
- bandwidth usage to that same value. If you want to run a relay in the
- public network, this needs to be _at the very least_ 20 KB (that is,
- 20480 bytes). (Default: 5 MB)
- **BandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
- Limit the maximum token bucket size (also known as the burst) to the given
- number of bytes in each direction. (Default: 10 MB)
- **MaxAdvertisedBandwidth** __N__ **bytes**|**KB**|**MB**|**GB**::
- If set, we will not advertise more than this amount of bandwidth for our
- BandwidthRate. Server operators who want to reduce the number of clients
- who ask to build circuits through them (since this is proportional to
- advertised bandwidth rate) can thus reduce the CPU demands on their server
- without impacting network performance.
- **RelayBandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
- If not 0, a separate token bucket limits the average incoming bandwidth
- usage for \_relayed traffic_ on this node to the specified number of bytes
- per second, and the average outgoing bandwidth usage to that same value.
- Relayed traffic currently is calculated to include answers to directory
- requests, but that may change in future versions. (Default: 0)
- **RelayBandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
- If not 0, limit the maximum token bucket size (also known as the burst) for
- \_relayed traffic_ to the given number of bytes in each direction.
- (Default: 0)
- **PerConnBWRate** __N__ **bytes**|**KB**|**MB**|**GB**::
- If set, do separate rate limiting for each connection from a non-relay.
- You should never need to change this value, since a network-wide value is
- published in the consensus and your relay will use that value. (Default: 0)
- **PerConnBWBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
- If set, do separate rate limiting for each connection from a non-relay.
- You should never need to change this value, since a network-wide value is
- published in the consensus and your relay will use that value. (Default: 0)
- **ConnLimit** __NUM__::
- The minimum number of file descriptors that must be available to the Tor
- process before it will start. Tor will ask the OS for as many file
- descriptors as the OS will allow (you can find this by "ulimit -H -n").
- If this number is less than ConnLimit, then Tor will refuse to start. +
- +
- You probably don't need to adjust this. It has no effect on Windows
- since that platform lacks getrlimit(). (Default: 1000)
- **ConstrainedSockets** **0**|**1**::
- If set, Tor will tell the kernel to attempt to shrink the buffers for all
- sockets to the size specified in **ConstrainedSockSize**. This is useful for
- virtual servers and other environments where system level TCP buffers may
- be limited. If you're on a virtual server, and you encounter the "Error
- creating network socket: No buffer space available" message, you are
- likely experiencing this problem. +
- +
- The preferred solution is to have the admin increase the buffer pool for
- the host itself via /proc/sys/net/ipv4/tcp_mem or equivalent facility;
- this configuration option is a second-resort. +
- +
- The DirPort option should also not be used if TCP buffers are scarce. The
- cached directory requests consume additional sockets which exacerbates
- the problem. +
- +
- You should **not** enable this feature unless you encounter the "no buffer
- space available" issue. Reducing the TCP buffers affects window size for
- the TCP stream and will reduce throughput in proportion to round trip
- time on long paths. (Default: 0.)
- **ConstrainedSockSize** __N__ **bytes**|**KB**::
- When **ConstrainedSockets** is enabled the receive and transmit buffers for
- all sockets will be set to this limit. Must be a value between 2048 and
- 262144, in 1024 byte increments. Default of 8192 is recommended.
- **ControlPort** __PORT__|**auto**::
- If set, Tor will accept connections on this port and allow those
- connections to control the Tor process using the Tor Control Protocol
- (described in control-spec.txt). Note: unless you also specify one or
- more of **HashedControlPassword** or **CookieAuthentication**,
- setting this option will cause Tor to allow any process on the local
- host to control it. (Setting both authentication methods means either
- method is sufficient to authenticate to Tor.) This
- option is required for many Tor controllers; most use the value of 9051.
- Set it to "auto" to have Tor pick a port for you. (Default: 0).
- **ControlListenAddress** __IP__[:__PORT__]::
- Bind the controller listener to this address. If you specify a port, bind
- to this port rather than the one specified in ControlPort. We strongly
- recommend that you leave this alone unless you know what you're doing,
- since giving attackers access to your control listener is really
- dangerous. (Default: 127.0.0.1) This directive can be specified multiple
- times to bind to multiple addresses/ports.
- **ControlSocket** __Path__::
- Like ControlPort, but listens on a Unix domain socket, rather than a TCP
- socket. (Unix and Unix-like systems only.)
- **ControlSocketsGroupWritable** **0**|**1**::
- If this option is set to 0, don't allow the filesystem group to read and
- write unix sockets (e.g. ControlSocket). If the option is set to 1, make
- the control socket readable and writable by the default GID. (Default: 0)
- **HashedControlPassword** __hashed_password__::
- Allow connections on the control port if they present
- the password whose one-way hash is __hashed_password__. You
- can compute the hash of a password by running "tor --hash-password
- __password__". You can provide several acceptable passwords by using more
- than one HashedControlPassword line.
- **CookieAuthentication** **0**|**1**::
- If this option is set to 1, allow connections on the control port
- when the connecting process knows the contents of a file named
- "control_auth_cookie", which Tor will create in its data directory. This
- authentication method should only be used on systems with good filesystem
- security. (Default: 0)
- **CookieAuthFile** __Path__::
- If set, this option overrides the default location and file name
- for Tor's cookie file. (See CookieAuthentication above.)
- **CookieAuthFileGroupReadable** **0**|**1**|__Groupname__::
- If this option is set to 0, don't allow the filesystem group to read the
- cookie file. If the option is set to 1, make the cookie file readable by
- the default GID. [Making the file readable by other groups is not yet
- implemented; let us know if you need this for some reason.] (Default: 0).
- **ControlPortWriteToFile** __Path__::
- If set, Tor writes the address and port of any control port it opens to
- this address. Usable by controllers to learn the actual control port
- when ControlPort is set to "auto".
- **ControlPortFileGroupReadable** **0**|**1**::
- If this option is set to 0, don't allow the filesystem group to read the
- control port file. If the option is set to 1, make the control port
- file readable by the default GID. (Default: 0).
- **DataDirectory** __DIR__::
- Store working data in DIR (Default: @LOCALSTATEDIR@/lib/tor)
- **DirServer** [__nickname__] [**flags**] __address__:__port__ __fingerprint__::
- Use a nonstandard authoritative directory server at the provided address
- and port, with the specified key fingerprint. This option can be repeated
- many times, for multiple authoritative directory servers. Flags are
- separated by spaces, and determine what kind of an authority this directory
- is. By default, every authority is authoritative for current ("v2")-style
- directories, unless the "no-v2" flag is given. If the "v1" flags is
- provided, Tor will use this server as an authority for old-style (v1)
- directories as well. (Only directory mirrors care about this.) Tor will
- use this server as an authority for hidden service information if the "hs"
- flag is set, or if the "v1" flag is set and the "no-hs" flag is **not** set.
- Tor will use this authority as a bridge authoritative directory if the
- "bridge" flag is set. If a flag "orport=**port**" is given, Tor will use the
- given port when opening encrypted tunnels to the dirserver. Lastly, if a
- flag "v3ident=**fp**" is given, the dirserver is a v3 directory authority
- whose v3 long-term signing key has the fingerprint **fp**. +
- +
- If no **dirserver** line is given, Tor will use the default directory
- servers. NOTE: this option is intended for setting up a private Tor
- network with its own directory authorities. If you use it, you will be
- distinguishable from other users, because you won't believe the same
- authorities they do.
- **AlternateDirAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ +
- **AlternateHSAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ +
- **AlternateBridgeAuthority** [__nickname__] [**flags**] __address__:__port__ __ fingerprint__::
- As DirServer, but replaces less of the default directory authorities. Using
- AlternateDirAuthority replaces the default Tor directory authorities, but
- leaves the hidden service authorities and bridge authorities in place.
- Similarly, Using AlternateHSAuthority replaces the default hidden service
- authorities, but not the directory or bridge authorities.
- **DisableAllSwap** **0**|**1**::
- If set to 1, Tor will attempt to lock all current and future memory pages,
- so that memory cannot be paged out. Windows, OS X and Solaris are currently
- not supported. We believe that this feature works on modern Gnu/Linux
- distributions, and that it should work on *BSD systems (untested). This
- option requires that you start your Tor as root, and you should use the
- **User** option to properly reduce Tor's privileges. (Default: 0)
- **FetchDirInfoEarly** **0**|**1**::
- If set to 1, Tor will always fetch directory information like other
- directory caches, even if you don't meet the normal criteria for fetching
- early. Normal users should leave it off. (Default: 0)
- **FetchDirInfoExtraEarly** **0**|**1**::
- If set to 1, Tor will fetch directory information before other directory
- caches. It will attempt to download directory information closer to the
- start of the consensus period. Normal users should leave it off.
- (Default: 0)
- **FetchHidServDescriptors** **0**|**1**::
- If set to 0, Tor will never fetch any hidden service descriptors from the
- rendezvous directories. This option is only useful if you're using a Tor
- controller that handles hidden service fetches for you. (Default: 1)
- **FetchServerDescriptors** **0**|**1**::
- If set to 0, Tor will never fetch any network status summaries or server
- descriptors from the directory servers. This option is only useful if
- you're using a Tor controller that handles directory fetches for you.
- (Default: 1)
- **FetchUselessDescriptors** **0**|**1**::
- If set to 1, Tor will fetch every non-obsolete descriptor from the
- authorities that it hears about. Otherwise, it will avoid fetching useless
- descriptors, for example for routers that are not running. This option is
- useful if you're using the contributed "exitlist" script to enumerate Tor
- nodes that exit to certain addresses. (Default: 0)
- **HTTPProxy** __host__[:__port__]::
- Tor will make all its directory requests through this host:port (or host:80
- if port is not specified), rather than connecting directly to any directory
- servers.
- **HTTPProxyAuthenticator** __username:password__::
- If defined, Tor will use this username:password for Basic HTTP proxy
- authentication, as in RFC 2617. This is currently the only form of HTTP
- proxy authentication that Tor supports; feel free to submit a patch if you
- want it to support others.
- **HTTPSProxy** __host__[:__port__]::
- Tor will make all its OR (SSL) connections through this host:port (or
- host:443 if port is not specified), via HTTP CONNECT rather than connecting
- directly to servers. You may want to set **FascistFirewall** to restrict
- the set of ports you might try to connect to, if your HTTPS proxy only
- allows connecting to certain ports.
- **HTTPSProxyAuthenticator** __username:password__::
- If defined, Tor will use this username:password for Basic HTTPS proxy
- authentication, as in RFC 2617. This is currently the only form of HTTPS
- proxy authentication that Tor supports; feel free to submit a patch if you
- want it to support others.
- **Socks4Proxy** __host__[:__port__]::
- Tor will make all OR connections through the SOCKS 4 proxy at host:port
- (or host:1080 if port is not specified).
- **Socks5Proxy** __host__[:__port__]::
- Tor will make all OR connections through the SOCKS 5 proxy at host:port
- (or host:1080 if port is not specified).
- **Socks5ProxyUsername** __username__ +
- **Socks5ProxyPassword** __password__::
- If defined, authenticate to the SOCKS 5 server using username and password
- in accordance to RFC 1929. Both username and password must be between 1 and
- 255 characters.
- **KeepalivePeriod** __NUM__::
- To keep firewalls from expiring connections, send a padding keepalive cell
- every NUM seconds on open connections that are in use. If the connection
- has no open circuits, it will instead be closed after NUM seconds of
- idleness. (Default: 5 minutes)
- **Log** __minSeverity__[-__maxSeverity__] **stderr**|**stdout**|**syslog**::
- Send all messages between __minSeverity__ and __maxSeverity__ to the standard
- output stream, the standard error stream, or to the system log. (The
- "syslog" value is only supported on Unix.) Recognized severity levels are
- debug, info, notice, warn, and err. We advise using "notice" in most cases,
- since anything more verbose may provide sensitive information to an
- attacker who obtains the logs. If only one severity level is given, all
- messages of that level or higher will be sent to the listed destination.
- **Log** __minSeverity__[-__maxSeverity__] **file** __FILENAME__::
- As above, but send log messages to the listed filename. The
- "Log" option may appear more than once in a configuration file.
- Messages are sent to all the logs that match their severity
- level.
- **Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **file** __FILENAME__ +
- **Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **stderr**|**stdout**|**syslog**::
- As above, but select messages by range of log severity __and__ by a
- set of "logging domains". Each logging domain corresponds to an area of
- functionality inside Tor. You can specify any number of severity ranges
- for a single log statement, each of them prefixed by a comma-separated
- list of logging domains. You can prefix a domain with $$~$$ to indicate
- negation, and use * to indicate "all domains". If you specify a severity
- range without a list of domains, it matches all domains. +
- +
- This is an advanced feature which is most useful for debugging one or two
- of Tor's subsystems at a time. +
- +
- The currently recognized domains are: general, crypto, net, config, fs,
- protocol, mm, http, app, control, circ, rend, bug, dir, dirserv, or, edge,
- acct, hist, and handshake. Domain names are case-insensitive. +
- +
- For example, "`Log [handshake]debug [~net,~mm]info notice stdout`" sends
- to stdout: all handshake messages of any severity, all info-and-higher
- messages from domains other than networking and memory management, and all
- messages of severity notice or higher.
- **LogMessageDomains** **0**|**1**::
- If 1, Tor includes message domains with each log message. Every log
- message currently has at least one domain; most currently have exactly
- one. This doesn't affect controller log messages. (Default: 0)
- **OutboundBindAddress** __IP__::
- Make all outbound connections originate from the IP address specified. This
- is only useful when you have multiple network interfaces, and you want all
- of Tor's outgoing connections to use a single one. This setting will be
- ignored for connections to the loopback addresses (127.0.0.0/8 and ::1).
- **PidFile** __FILE__::
- On startup, write our PID to FILE. On clean shutdown, remove
- FILE.
- **ProtocolWarnings** **0**|**1**::
- If 1, Tor will log with severity \'warn' various cases of other parties not
- following the Tor specification. Otherwise, they are logged with severity
- \'info'. (Default: 0)
- **RunAsDaemon** **0**|**1**::
- If 1, Tor forks and daemonizes to the background. This option has no effect
- on Windows; instead you should use the --service command-line option.
- (Default: 0)
- **SafeLogging** **0**|**1**|**relay**::
- Tor can scrub potentially sensitive strings from log messages (e.g.
- addresses) by replacing them with the string [scrubbed]. This way logs can
- still be useful, but they don't leave behind personally identifying
- information about what sites a user might have visited. +
- +
- If this option is set to 0, Tor will not perform any scrubbing, if it is
- set to 1, all potentially sensitive strings are replaced. If it is set to
- relay, all log messages generated when acting as a relay are sanitized, but
- all messages generated when acting as a client are not. (Default: 1)
- **User** __UID__::
- On startup, setuid to this user and setgid to their primary group.
- **HardwareAccel** **0**|**1**::
- If non-zero, try to use built-in (static) crypto hardware acceleration when
- available. (Default: 0)
- **AccelName** __NAME__::
- When using OpenSSL hardware crypto acceleration attempt to load the dynamic
- engine of this name. This must be used for any dynamic hardware engine.
- Names can be verified with the openssl engine command.
- **AccelDir** __DIR__::
- Specify this option if using dynamic hardware acceleration and the engine
- implementation library resides somewhere other than the OpenSSL default.
- **AvoidDiskWrites** **0**|**1**::
- If non-zero, try to write to disk less frequently than we would otherwise.
- This is useful when running on flash memory or other media that support
- only a limited number of writes. (Default: 0)
- **TunnelDirConns** **0**|**1**::
- If non-zero, when a directory server we contact supports it, we will build
- a one-hop circuit and make an encrypted connection via its ORPort.
- (Default: 1)
- **PreferTunneledDirConns** **0**|**1**::
- If non-zero, we will avoid directory servers that don't support tunneled
- directory connections, when possible. (Default: 1)
- **CircuitPriorityHalflife** __NUM1__::
- If this value is set, we override the default algorithm for choosing which
- circuit's cell to deliver or relay next. When the value is 0, we
- round-robin between the active circuits on a connection, delivering one
- cell from each in turn. When the value is positive, we prefer delivering
- cells from whichever connection has the lowest weighted cell count, where
- cells are weighted exponentially according to the supplied
- CircuitPriorityHalflife value (in seconds). If this option is not set at
- all, we use the behavior recommended in the current consensus
- networkstatus. This is an advanced option; you generally shouldn't have
- to mess with it. (Default: not set.)
- CLIENT OPTIONS
- --------------
- The following options are useful only for clients (that is, if
- **SocksPort** is non-zero):
- **AllowInvalidNodes** **entry**|**exit**|**middle**|**introduction**|**rendezvous**|**...**::
- If some Tor servers are obviously not working right, the directory
- authorities can manually mark them as invalid, meaning that it's not
- recommended you use them for entry or exit positions in your circuits. You
- can opt to use them in some circuit positions, though. The default is
- "middle,rendezvous", and other choices are not advised.
- **ExcludeSingleHopRelays** **0**|**1**::
- This option controls whether circuits built by Tor will include relays with
- the AllowSingleHopExits flag set to true. If ExcludeSingleHopRelays is set
- to 0, these relays will be included. Note that these relays might be at
- higher risk of being seized or observed, so they are not normally
- included. Also note that relatively few clients turn off this option,
- so using these relays might make your client stand out.
- (Default: 1)
- **Bridge** __IP__:__ORPort__ [fingerprint]::
- When set along with UseBridges, instructs Tor to use the relay at
- "IP:ORPort" as a "bridge" relaying into the Tor network. If "fingerprint"
- is provided (using the same format as for DirServer), we will verify that
- the relay running at that location has the right fingerprint. We also use
- fingerprint to look up the bridge descriptor at the bridge authority, if
- it's provided and if UpdateBridgesFromAuthority is set too.
- **LearnCircuitBuildTimeout** **0**|**1**::
- If 0, CircuitBuildTimeout adaptive learning is disabled. (Default: 1)
- **CircuitBuildTimeout** __NUM__::
- Try for at most NUM seconds when building circuits. If the circuit isn't
- open in that time, give up on it. If LearnCircuitBuildTimeout is 1, this
- value serves as the initial value to use before a timeout is learned. If
- LearnCircuitBuildTimeout is 0, this value is the only value used.
- (Default: 60 seconds.)
- **CircuitIdleTimeout** __NUM__::
- If we have kept a clean (never used) circuit around for NUM seconds, then
- close it. This way when the Tor client is entirely idle, it can expire all
- of its circuits, and then expire its TLS connections. Also, if we end up
- making a circuit that is not useful for exiting any of the requests we're
- receiving, it won't forever take up a slot in the circuit list. (Default: 1
- hour.)
- **CircuitStreamTimeout** __NUM__::
- If non-zero, this option overrides our internal timeout schedule for how
- many seconds until we detach a stream from a circuit and try a new circuit.
- If your network is particularly slow, you might want to set this to a
- number like 60. (Default: 0)
- **ClientOnly** **0**|**1**::
- If set to 1, Tor will under no circumstances run as a relay or serve
- directory requests. This config option is mostly meaningless: we
- added it back when we were considering having Tor clients auto-promote
- themselves to being relays if they were stable and fast enough. The
- current behavior is simply that Tor is a client unless ORPort or
- DirPort are configured. (Default: 0)
- **ExcludeNodes** __node__,__node__,__...__::
- A list of identity fingerprints, nicknames, country codes and address
- patterns of nodes to avoid when building a circuit.
- (Example:
- ExcludeNodes SlowServer, ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, \{cc}, 255.254.0.0/8) +
- +
- By default, this option is treated as a preference that Tor is allowed
- to override in order to keep working.
- For example, if you try to connect to a hidden service,
- but you have excluded all of the hidden service's introduction points,
- Tor will connect to one of them anyway. If you do not want this
- behavior, set the StrictNodes option (documented below). +
- +
- Note also that if you are a relay, this (and the other node selection
- options below) only affects your own circuits that Tor builds for you.
- Clients can still build circuits through you to any node. Controllers
- can tell Tor to build circuits through any node.
- **ExcludeExitNodes** __node__,__node__,__...__::
- A list of identity fingerprints, nicknames, country codes and address
- patterns of nodes to never use when picking an exit node---that is, a
- node that delivers traffic for you outside the Tor network. Note that any
- node listed in ExcludeNodes is automatically considered to be part of this
- list too. See also the caveats on the "ExitNodes" option below.
- **ExitNodes** __node__,__node__,__...__::
- A list of identity fingerprints, nicknames, country codes and address
- patterns of nodes to use as exit node---that is, a
- node that delivers traffic for you outside the Tor network. +
- +
- Note that if you list too few nodes here, or if you exclude too many exit
- nodes with ExcludeExitNodes, you can degrade functionality. For example,
- if none of the exits you list allows traffic on port 80 or 443, you won't
- be able to browse the web. +
- +
- Note also that not every circuit is used to deliver traffic outside of
- the Tor network. It is normal to see non-exit circuits (such as those
- used to connect to hidden services, those that do directory fetches,
- those used for relay reachability self-tests, and so on) that end
- at a non-exit node. To
- keep a node from being used entirely, see ExcludeNodes and StrictNodes. +
- +
- The ExcludeNodes option overrides this option: any node listed in both
- ExitNodes and ExcludeNodes is treated as excluded. +
- +
- The .exit address notation, if enabled via AllowDotExit, overrides
- this option.
- **EntryNodes** __node__,__node__,__...__::
- A list of identity fingerprints and nicknames of nodes
- to use for the first hop in your normal circuits. (Country codes and
- address patterns are not yet supported.) Normal circuits include all
- circuits except for direct connections to directory servers. The Bridge
- option overrides this option; if you have configured bridges and
- UseBridges is 1, the Bridges are used as your entry nodes. +
- +
- The ExcludeNodes option overrides this option: any node listed in both
- EntryNodes and ExcludeNodes is treated as excluded.
- **StrictNodes** **0**|**1**::
- If StrictNodes is set to 1, Tor will treat the ExcludeNodes option as a
- requirement to follow for all the circuits you generate, even if doing so
- will break functionality for you. If StrictNodes is set to 0, Tor will
- still try to avoid nodes in the ExcludeNodes list, but it will err on the
- side of avoiding unexpected errors. Specifically, StrictNodes 0 tells
- Tor that it is okay to use an excluded node when it is *necessary* to
- perform relay reachability self-tests, connect to
- a hidden service, provide a hidden service to a client, fulfill a .exit
- request, upload directory information, or download directory information.
- (Default: 0)
- **FascistFirewall** **0**|**1**::
- If 1, Tor will only create outgoing connections to ORs running on ports
- that your firewall allows (defaults to 80 and 443; see **FirewallPorts**).
- This will allow you to run Tor as a client behind a firewall with
- restrictive policies, but will not allow you to run as a server behind such
- a firewall. If you prefer more fine-grained control, use
- ReachableAddresses instead.
- **FirewallPorts** __PORTS__::
- A list of ports that your firewall allows you to connect to. Only used when
- **FascistFirewall** is set. This option is deprecated; use ReachableAddresses
- instead. (Default: 80, 443)
- **HidServAuth** __onion-address__ __auth-cookie__ [__service-name__]::
- Client authorization for a hidden service. Valid onion addresses contain 16
- characters in a-z2-7 plus ".onion", and valid auth cookies contain 22
- characters in A-Za-z0-9+/. The service name is only used for internal
- purposes, e.g., for Tor controllers. This option may be used multiple times
- for different hidden services. If a hidden service uses authorization and
- this option is not set, the hidden service is not accessible. Hidden
- services can be configured to require authorization using the
- **HiddenServiceAuthorizeClient** option.
- **ReachableAddresses** __ADDR__[/__MASK__][:__PORT__]...::
- A comma-separated list of IP addresses and ports that your firewall allows
- you to connect to. The format is as for the addresses in ExitPolicy, except
- that "accept" is understood unless "reject" is explicitly provided. For
- example, \'ReachableAddresses 99.0.0.0/8, reject 18.0.0.0/8:80, accept
- \*:80' means that your firewall allows connections to everything inside net
- 99, rejects port 80 connections to net 18, and accepts connections to port
- 80 otherwise. (Default: \'accept \*:*'.)
- **ReachableDirAddresses** __ADDR__[/__MASK__][:__PORT__]...::
- Like **ReachableAddresses**, a list of addresses and ports. Tor will obey
- these restrictions when fetching directory information, using standard HTTP
- GET requests. If not set explicitly then the value of
- **ReachableAddresses** is used. If **HTTPProxy** is set then these
- connections will go through that proxy.
- **ReachableORAddresses** __ADDR__[/__MASK__][:__PORT__]...::
- Like **ReachableAddresses**, a list of addresses and ports. Tor will obey
- these restrictions when connecting to Onion Routers, using TLS/SSL. If not
- set explicitly then the value of **ReachableAddresses** is used. If
- **HTTPSProxy** is set then these connections will go through that proxy. +
- +
- The separation between **ReachableORAddresses** and
- **ReachableDirAddresses** is only interesting when you are connecting
- through proxies (see **HTTPProxy** and **HTTPSProxy**). Most proxies limit
- TLS connections (which Tor uses to connect to Onion Routers) to port 443,
- and some limit HTTP GET requests (which Tor uses for fetching directory
- information) to port 80.
- **LongLivedPorts** __PORTS__::
- A list of ports for services that tend to have long-running connections
- (e.g. chat and interactive shells). Circuits for streams that use these
- ports will contain only high-uptime nodes, to reduce the chance that a node
- will go down before the stream is finished. (Default: 21, 22, 706, 1863,
- 5050, 5190, 5222, 5223, 6667, 6697, 8300)
- **MapAddress** __address__ __newaddress__::
- When a request for address arrives to Tor, it will rewrite it to newaddress
- before processing it. For example, if you always want connections to
- www.indymedia.org to exit via __torserver__ (where __torserver__ is the
- nickname of the server), use "MapAddress www.indymedia.org
- www.indymedia.org.torserver.exit".
- **NewCircuitPeriod** __NUM__::
- Every NUM seconds consider whether to build a new circuit. (Default: 30
- seconds)
- **MaxCircuitDirtiness** __NUM__::
- Feel free to reuse a circuit that was first used at most NUM seconds ago,
- but never attach a new stream to a circuit that is too old. (Default: 10
- minutes)
- **NodeFamily** __node__,__node__,__...__::
- The Tor servers, defined by their identity fingerprints or nicknames,
- constitute a "family" of similar or co-administered servers, so never use
- any two of them in the same circuit. Defining a NodeFamily is only needed
- when a server doesn't list the family itself (with MyFamily). This option
- can be used multiple times.
- **EnforceDistinctSubnets** **0**|**1**::
- If 1, Tor will not put two servers whose IP addresses are "too close" on
- the same circuit. Currently, two addresses are "too close" if they lie in
- the same /16 range. (Default: 1)
- **SocksPort** __PORT__|**auto**::
- Advertise this port to listen for connections from Socks-speaking
- applications. Set this to 0 if you don't want to allow application
- connections via SOCKS. Set it to "auto" to have Tor pick a port for
- you. (Default: 9050)
- **SocksListenAddress** __IP__[:__PORT__]::
- Bind to this address to listen for connections from Socks-speaking
- applications. (Default: 127.0.0.1) You can also specify a port (e.g.
- 192.168.0.1:9100). This directive can be specified multiple times to bind
- to multiple addresses/ports.
- **SocksPolicy** __policy__,__policy__,__...__::
- Set an entrance policy for this server, to limit who can connect to the
- SocksPort and DNSPort ports. The policies have the same form as exit
- policies below.
- **SocksTimeout** __NUM__::
- Let a socks connection wait NUM seconds handshaking, and NUM seconds
- unattached waiting for an appropriate circuit, before we fail it. (Default:
- 2 minutes.)
- **TrackHostExits** __host__,__.domain__,__...__::
- For each value in the comma separated list, Tor will track recent
- connections to hosts that match this value and attempt to reuse the same
- exit node for each. If the value is prepended with a \'.\', it is treated as
- matching an entire domain. If one of the values is just a \'.', it means
- match everything. This option is useful if you frequently connect to sites
- that will expire all your authentication cookies (i.e. log you out) if
- your IP address changes. Note that this option does have the disadvantage
- of making it more clear that a given history is associated with a single
- user. However, most people who would wish to observe this will observe it
- through cookies or other protocol-specific means anyhow.
- **TrackHostExitsExpire** __NUM__::
- Since exit servers go up and down, it is desirable to expire the
- association between host and exit server after NUM seconds. The default is
- 1800 seconds (30 minutes).
- **UpdateBridgesFromAuthority** **0**|**1**::
- When set (along with UseBridges), Tor will try to fetch bridge descriptors
- from the configured bridge authorities when feasible. It will fall back to
- a direct request if the authority responds with a 404. (Default: 0)
- **UseBridges** **0**|**1**::
- When set, Tor will fetch descriptors for each bridge listed in the "Bridge"
- config lines, and use these relays as both entry guards and directory
- guards. (Default: 0)
- **UseEntryGuards** **0**|**1**::
- If this option is set to 1, we pick a few long-term entry servers, and try
- to stick with them. This is desirable because constantly changing servers
- increases the odds that an adversary who owns some servers will observe a
- fraction of your paths. (Defaults to 1.)
- **NumEntryGuards** __NUM__::
- If UseEntryGuards is set to 1, we will try to pick a total of NUM routers
- as long-term entries for our circuits. (Defaults to 3.)
- **SafeSocks** **0**|**1**::
- When this option is enabled, Tor will reject application connections that
- use unsafe variants of the socks protocol -- ones that only provide an IP
- address, meaning the application is doing a DNS resolve first.
- Specifically, these are socks4 and socks5 when not doing remote DNS.
- (Defaults to 0.)
- **TestSocks** **0**|**1**::
- When this option is enabled, Tor will make a notice-level log entry for
- each connection to the Socks port indicating whether the request used a
- safe socks protocol or an unsafe one (see above entry on SafeSocks). This
- helps to determine whether an application using Tor is possibly leaking
- DNS requests. (Default: 0)
- **WarnUnsafeSocks** **0**|**1**::
- When this option is enabled, Tor will warn whenever a request is
- received that only contains an IP address instead of a hostname. Allowing
- applications to do DNS resolves themselves is usually a bad idea and
- can leak your location to attackers. (Default: 1)
- **VirtualAddrNetwork** __Address__/__bits__::
- When Tor needs to assign a virtual (unused) address because of a MAPADDRESS
- command from the controller or the AutomapHostsOnResolve feature, Tor
- picks an unassigned address from this range. (Default:
- 127.192.0.0/10) +
- +
- When providing proxy server service to a network of computers using a tool
- like dns-proxy-tor, change this address to "10.192.0.0/10" or
- "172.16.0.0/12". The default **VirtualAddrNetwork** address range on a
- properly configured machine will route to the loopback interface. For
- local use, no change to the default VirtualAddrNetwork setting is needed.
- **AllowNonRFC953Hostnames** **0**|**1**::
- When this option is disabled, Tor blocks hostnames containing illegal
- characters (like @ and :) rather than sending them to an exit node to be
- resolved. This helps trap accidental attempts to resolve URLs and so on.
- (Default: 0)
- **AllowDotExit** **0**|**1**::
- If enabled, we convert "www.google.com.foo.exit" addresses on the
- SocksPort/TransPort/NATDPort into "www.google.com" addresses that exit from
- the node "foo". Disabled by default since attacking websites and exit
- relays can use it to manipulate your path selection. (Default: 0)
- **FastFirstHopPK** **0**|**1**::
- When this option is disabled, Tor uses the public key step for the first
- hop of creating circuits. Skipping it is generally safe since we have
- already used TLS to authenticate the relay and to establish forward-secure
- keys. Turning this option off makes circuit building slower. +
- +
- Note that Tor will always use the public key step for the first hop if it's
- operating as a relay, and it will never use the public key step if it
- doesn't yet know the onion key of the first hop. (Default: 1)
- **TransPort** __PORT__|**auto**::
- If non-zero, enables transparent proxy support on __PORT__ (by convention,
- 9040). Requires OS support for transparent proxies, such as BSDs' pf or
- Linux's IPTables. If you're planning to use Tor as a transparent proxy for
- a network, you'll want to examine and change VirtualAddrNetwork from the
- default setting. You'll also want to set the TransListenAddress option for
- the network you'd like to proxy. Set it to "auto" to have Tor pick a
- port for you. (Default: 0).
- **TransListenAddress** __IP__[:__PORT__]::
- Bind to this address to listen for transparent proxy connections. (Default:
- 127.0.0.1). This is useful for exporting a transparent proxy server to an
- entire network.
- **NATDPort** __PORT__|**auto**::
- Allow old versions of ipfw (as included in old versions of FreeBSD, etc.)
- to send connections through Tor using the NATD protocol. This option is
- only for people who cannot use TransPort. Set it to "auto" to have Tor
- pick a port for you. (Default: 0)
- **NATDListenAddress** __IP__[:__PORT__]::
- Bind to this address to listen for NATD connections. (Default: 127.0.0.1).
- **AutomapHostsOnResolve** **0**|**1**::
- When this option is enabled, and we get a request to resolve an address
- that ends with one of the suffixes in **AutomapHostsSuffixes**, we map an
- unused virtual address to that address, and return the new virtual address.
- This is handy for making ".onion" addresses work with applications that
- resolve an address and then connect to it. (Default: 0).
- **AutomapHostsSuffixes** __SUFFIX__,__SUFFIX__,__...__::
- A comma-separated list of suffixes to use with **AutomapHostsOnResolve**.
- The "." suffix is equivalent to "all addresses." (Default: .exit,.onion).
- **DNSPort** __PORT__|**auto**::
- If non-zero, Tor listens for UDP DNS requests on this port and resolves
- them anonymously. Set it to "auto" to have Tor pick a port for
- you. (Default: 0).
- **DNSListenAddress** __IP__[:__PORT__]::
- Bind to this address to listen for DNS connections. (Default: 127.0.0.1).
- **ClientDNSRejectInternalAddresses** **0**|**1**::
- If true, Tor does not believe any anonymously retrieved DNS answer that
- tells it that an address resolves to an internal address (like 127.0.0.1 or
- 192.168.0.1). This option prevents certain browser-based attacks; don't
- turn it off unless you know what you're doing. (Default: 1).
- **ClientRejectInternalAddresses** **0**|**1**::
- If true, Tor does not try to fulfill requests to connect to an internal
- address (like 127.0.0.1 or 192.168.0.1) __unless a exit node is
- specifically requested__ (for example, via a .exit hostname, or a
- controller request). (Default: 1).
- **DownloadExtraInfo** **0**|**1**::
- If true, Tor downloads and caches "extra-info" documents. These documents
- contain information about servers other than the information in their
- regular router descriptors. Tor does not use this information for anything
- itself; to save bandwidth, leave this option turned off. (Default: 0).
- **FallbackNetworkstatusFile** __FILENAME__::
- If Tor doesn't have a cached networkstatus file, it starts out using this
- one instead. Even if this file is out of date, Tor can still use it to
- learn about directory mirrors, so it doesn't need to put load on the
- authorities. (Default: None).
- **WarnPlaintextPorts** __port__,__port__,__...__::
- Tells Tor to issue a warnings whenever the user tries to make an anonymous
- connection to one of these ports. This option is designed to alert users
- to services that risk sending passwords in the clear. (Default:
- 23,109,110,143).
- **RejectPlaintextPorts** __port__,__port__,__...__::
- Like WarnPlaintextPorts, but instead of warning about risky port uses, Tor
- will instead refuse to make the connection. (Default: None).
- **AllowSingleHopCircuits** **0**|**1**::
- When this option is set, the attached Tor controller can use relays
- that have the **AllowSingleHopExits** option turned on to build
- one-hop Tor connections. (Default: 0)
- SERVER OPTIONS
- --------------
- The following options are useful only for servers (that is, if ORPort
- is non-zero):
- **Address** __address__::
- The IP address or fully qualified domain name of this server (e.g.
- moria.mit.edu). You can leave this unset, and Tor will guess your IP
- address. This IP address is the one used to tell clients and other
- servers where to find your Tor server; it doesn't affect the IP that your
- Tor client binds to. To bind to a different address, use the
- *ListenAddress and OutboundBindAddress options.
- **AllowSingleHopExits** **0**|**1**::
- This option controls whether clients can use this server as a single hop
- proxy. If set to 1, clients can use this server as an exit even if it is
- the only hop in the circuit. Note that most clients will refuse to use
- servers that set this option, since most clients have
- ExcludeSingleHopRelays set. (Default: 0)
- **AssumeReachable** **0**|**1**::
- This option is used when bootstrapping a new Tor network. If set to 1,
- don't do self-reachability testing; just upload your server descriptor
- immediately. If **AuthoritativeDirectory** is also set, this option
- instructs the dirserver to bypass remote reachability testing too and list
- all connected servers as running.
- **BridgeRelay** **0**|**1**::
- Sets the relay to act as a "bridge" with respect to relaying connections
- from bridge users to the Tor network. It mainly causes Tor to publish a
- server descriptor to the bridge database, rather than publishing a relay
- descriptor to the public directory authorities.
- **ContactInfo** __email_address__::
- Administrative contact information for server. This line might get picked
- up by spam harvesters, so you may want to obscure the fact that it's an
- email address.
- **ExitPolicy** __policy__,__policy__,__...__::
- Set an exit policy for this server. Each policy is of the form
- "**accept**|**reject** __ADDR__[/__MASK__][:__PORT__]". If /__MASK__ is
- omitted then this policy just applies to the host given. Instead of giving
- a host or network you can also use "\*" to denote the universe (0.0.0.0/0).
- __PORT__ can be a single port number, an interval of ports
- "__FROM_PORT__-__TO_PORT__", or "\*". If __PORT__ is omitted, that means
- "\*". +
- +
- For example, "accept 18.7.22.69:\*,reject 18.0.0.0/8:\*,accept \*:\*" would
- reject any traffic destined for MIT except for web.mit.edu, and accept
- anything else. +
- +
- To specify all internal and link-local networks (including 0.0.0.0/8,
- 169.254.0.0/16, 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, and
- 172.16.0.0/12), you can use the "private" alias instead of an address.
- These addresses are rejected by default (at the beginning of your exit
- policy), along with your public IP address, unless you set the
- ExitPolicyRejectPrivate config option to 0. For example, once you've done
- that, you could allow HTTP to 127.0.0.1 and block all other connections to
- internal networks with "accept 127.0.0.1:80,reject private:\*", though that
- may also allow connections to your own computer that are addressed to its
- public (external) IP address. See RFC 1918 and RFC 3330 for more details
- about internal and reserved IP address space. +
- +
- This directive can be specified multiple times so you don't have to put it
- all on one line. +
- +
- Policies are considered first to last, and the first match wins. If you
- want to \_replace_ the default exit policy, end your exit policy with
- either a reject \*:* or an accept \*:*. Otherwise, you're \_augmenting_
- (prepending to) the default exit policy. The default exit policy is: +
- reject *:25
- reject *:119
- reject *:135-139
- reject *:445
- reject *:563
- reject *:1214
- reject *:4661-4666
- reject *:6346-6429
- reject *:6699
- reject *:6881-6999
- accept *:*
- **ExitPolicyRejectPrivate** **0**|**1**::
- Reject all private (local) networks, along with your own public IP address,
- at the beginning of your exit policy. See above entry on ExitPolicy.
- (Default: 1)
- **MaxOnionsPending** __NUM__::
- If you have more than this number of onionskins queued for decrypt, reject
- new ones. (Default: 100)
- **MyFamily** __node__,__node__,__...__::
- Declare that this Tor server is controlled or administered by a group or
- organization identical or similar to that of the other servers, defined by
- their identity fingerprints or nicknames. When two servers both declare
- that they are in the same \'family', Tor clients will not use them in the
- same circuit. (Each server only needs to list the other servers in its
- family; it doesn't need to list itself, but it won't hurt.)
- **Nickname** __name__::
- Set the server's nickname to \'name'. Nicknames must be between 1 and 19
- characters inclusive, and must contain only the characters [a-zA-Z0-9].
- **NumCPUs** __num__::
- How many processes to use at once for decrypting onionskins. (Default: 1)
- **ORPort** __PORT__|**auto**::
- Advertise this port to listen for connections from Tor clients and
- servers. This option is required to be a Tor server.
- Set it to "auto" to have Tor pick a port for you. (Default: 0).
- **ORListenAddress** __IP__[:__PORT__]::
- Bind to this IP address to listen for connections from Tor clients and
- servers. If you specify a port, bind to this port rather than the one
- specified in ORPort. (Default: 0.0.0.0) This directive can be specified
- multiple times to bind to multiple addresses/ports.
- **PublishServerDescriptor** **0**|**1**|**v1**|**v2**|**v3**|**bridge**,**...**::
- This option specifies which descriptors Tor will publish when acting as
- a relay. You can
- choose multiple arguments, separated by commas.
- +
- If this option is set to 0, Tor will not publish its
- descriptors to any directories. (This is useful if you're testing
- out your server, or if you're using a Tor controller that handles directory
- publishing for you.) Otherwise, Tor will publish its descriptors of all
- type(s) specified. The default is "1",
- which means "if running as a server, publish the
- appropriate descriptors to the authorities".
- **ShutdownWaitLength** __NUM__::
- When we get a SIGINT and we're a server, we begin shutting down:
- we close listeners and start refusing new circuits. After **NUM**
- seconds, we exit. If we get a second SIGINT, we exit immedi-
- ately. (Default: 30 seconds)
- **AccountingMax** __N__ **bytes**|**KB**|**MB**|**GB**|**TB**::
- Never send more than the specified number of bytes in a given accounting
- period, or receive more than that number in the period. For example, with
- AccountingMax set to 1 GB, a server could send 900 MB and receive 800 MB
- and continue running. It will only hibernate once one of the two reaches 1
- GB. When the number of bytes gets low, Tor will stop accepting new
- connections and circuits. When the number of bytes
- is exhausted, Tor will hibernate until some
- time in the next accounting period. To prevent all servers from waking at
- the same time, Tor will also wait until a random point in each period
- before waking up. If you have bandwidth cost issues, enabling hibernation
- is preferable to setting a low bandwidth, since it provides users with a
- collection of fast servers that are up some of the time, which is more
- useful than a set of slow servers that are always "available".
- **AccountingStart** **day**|**week**|**month** [__day__] __HH:MM__::
- Specify how long accounting periods last. If **month** is given, each
- accounting period runs from the time __HH:MM__ on the __dayth__ day of one
- month to the same day and time of the next. (The day must be between 1 and
- 28.) If **week** is given, each accounting period runs from the time __HH:MM__
- of the __dayth__ day of one week to the same day and time of the next week,
- with Monday as day 1 and Sunday as day 7. If **day** is given, each
- accounting period runs from the time __HH:MM__ each day to the same time on
- the next day. All times are local, and given in 24-hour time. (Defaults to
- "month 1 0:00".)
- **RefuseUnknownExits** **0**|**1**|**auto**::
- Prevent nodes that don't appear in the consensus from exiting using this
- relay. If the option is 1, we always block exit attempts from such
- nodes; if it's 0, we never do, and if the option is "auto", then we do
- whatever the authorities suggest in the consensus. (Defaults to auto.)
- **ServerDNSResolvConfFile** __filename__::
- Overrides the default DNS configuration with the configuration in
- __filename__. The file format is the same as the standard Unix
- "**resolv.conf**" file (7). This option, like all other ServerDNS options,
- only affects name lookups that your server does on behalf of clients.
- (Defaults to use the system DNS configuration.)
- **ServerDNSAllowBrokenConfig** **0**|**1**::
- If this option is false, Tor exits immediately if there are problems
- parsing the system DNS configuration or connecting to nameservers.
- Otherwise, Tor continues to periodically retry the system nameservers until
- it eventually succeeds. (Defaults to "1".)
- **ServerDNSSearchDomains** **0**|**1**::
- If set to 1, then we will search for addresses in the local search domain.
- For example, if this system is configured to believe it is in
- "example.com", and a client tries to connect to "www", the client will be
- connected to "www.example.com". This option only affects name lookups that
- your server does on behalf of clients. (Defaults to "0".)
- **ServerDNSDetectHijacking** **0**|**1**::
- When this option is set to 1, we will test periodically to determine
- whether our local nameservers have been configured to hijack failing DNS
- requests (usually to an advertising site). If they are, we will attempt to
- correct this. This option only affects name lookups that your server does
- on behalf of clients. (Defaults to "1".)
- **ServerDNSTestAddresses** __address__,__address__,__...__::
- When we're detecting DNS hijacking, make sure that these __valid__ addresses
- aren't getting redirected. If they are, then our DNS is completely useless,
- and we'll reset our exit policy to "reject *:*". This option only affects
- name lookups that your server does on behalf of clients. (Defaults to
- "www.google.com, www.mit.edu, www.yahoo.com, www.slashdot.org".)
- **ServerDNSAllowNonRFC953Hostnames** **0**|**1**::
- When this option is disabled, Tor does not try to resolve hostnames
- containing illegal characters (like @ and :) rather than sending them to an
- exit node to be resolved. This helps trap accidental attempts to resolve
- URLs and so on. This option only affects name lookups that your server does
- on behalf of clients. (Default: 0)
- **BridgeRecordUsageByCountry** **0**|**1**::
- When this option is enabled and BridgeRelay is also enabled, and we have
- GeoIP data, Tor keeps a keep a per-country count of how many client
- addresses have contacted it so that it can help the bridge authority guess
- which countries have blocked access to it. (Default: 1)
- **ServerDNSRandomizeCase** **0**|**1**::
- When this option is set, Tor sets the case of each character randomly in
- outgoing DNS requests, and makes sure that the case matches in DNS replies.
- This so-called "0x20 hack" helps resist some types of DNS poisoning attack.
- For more information, see "Increased DNS Forgery Resistance through
- 0x20-Bit Encoding". This option only affects name lookups that your server
- does on behalf of clients. (Default: 1)
- **GeoIPFile** __filename__::
- A filename containing GeoIP data, for use with BridgeRecordUsageByCountry.
- **CellStatistics** **0**|**1**::
- When this option is enabled, Tor writes statistics on the mean time that
- cells spend in circuit queues to disk every 24 hours. (Default: 0)
- **DirReqStatistics** **0**|**1**::
- When this option is enabled, Tor writes statistics on the number and
- response time of network status requests to disk every 24 hours.
- (Default: 0)
- **EntryStatistics** **0**|**1**::
- When this option is enabled, Tor writes statistics on the number of
- directly connecting clients to disk every 24 hours. (Default: 0)
- **ExitPortStatistics** **0**|**1**::
- When this option is enabled, Tor writes statistics on the number of relayed
- bytes and opened stream per exit port to disk every 24 hours. (Default: 0)
- **ExtraInfoStatistics** **0**|**1**::
- When this option is enabled, Tor includes previously gathered statistics in
- its extra-info documents that it uploads to the directory authorities.
- (Default: 0)
- DIRECTORY SERVER OPTIONS
- ------------------------
- The following options are useful only for directory servers (that is,
- if DirPort is non-zero):
- **AuthoritativeDirectory** **0**|**1**::
- When this option is set to 1, Tor operates as an authoritative directory
- server. Instead of caching the directory, it generates its own list of
- good servers, signs it, and sends that to the clients. Unless the clients
- already have you listed as a trusted directory, you probably do not want
- to set this option. Please coordinate with the other admins at
- tor-ops@torproject.org if you think you should be a directory.
- **DirPortFrontPage** __FILENAME__::
- When this option is set, it takes an HTML file and publishes it as "/" on
- the DirPort. Now relay operators can provide a disclaimer without needing
- to set up a separate webserver. There's a sample disclaimer in
- contrib/tor-exit-notice.html.
- **V1AuthoritativeDirectory** **0**|**1**::
- When this option is set in addition to **AuthoritativeDirectory**, Tor
- generates version 1 directory and running-routers documents (for legacy
- Tor clients up to 0.1.0.x).
- **V2AuthoritativeDirectory** **0**|**1**::
- When this option is set in addition to **AuthoritativeDirectory**, Tor
- generates version 2 network statuses and serves descriptors, etc as
- described in doc/spec/dir-spec-v2.txt (for Tor clients and servers running
- 0.1.1.x and 0.1.2.x).
- **V3AuthoritativeDirectory** **0**|**1**::
- When this option is set in addition to **AuthoritativeDirectory**, Tor
- generates version 3 network statuses and serves descriptors, etc as
- described in doc/spec/dir-spec.txt (for Tor clients and servers running at
- least 0.2.0.x).
- **VersioningAuthoritativeDirectory** **0**|**1**::
- When this option is set to 1, Tor adds information on which versions of
- Tor are still believed safe for use to the published directory. Each
- version 1 authority is automatically a versioning authority; version 2
- authorities provide this service optionally. See **RecommendedVersions**,
- **RecommendedClientVersions**, and **RecommendedServerVersions**.
- **NamingAuthoritativeDirectory** **0**|**1**::
- When this option is set to 1, then the server advertises that it has
- opinions about nickname-to-fingerprint bindings. It will include these
- opinions in its published network-status pages, by listing servers with
- the flag "Named" if a correct binding between that nickname and fingerprint
- has been registered with the dirserver. Naming dirservers will refuse to
- accept or publish descriptors that contradict a registered binding. See
- **approved-routers** in the **FILES** section below.
- **HSAuthoritativeDir** **0**|**1**::
- When this option is set in addition to **AuthoritativeDirectory**, Tor also
- accepts and serves v0 hidden service descriptors,
- which are produced and used by Tor 0.2.1.x and older. (Default: 0)
- **HidServDirectoryV2** **0**|**1**::
- When this option is set, Tor accepts and serves v2 hidden service
- descriptors. Setting DirPort is not required for this, because clients
- connect via the ORPort by default. (Default: 1)
- **BridgeAuthoritativeDir** **0**|**1**::
- When this option is set in addition to **AuthoritativeDirectory**, Tor
- accepts and serves router descriptors, but it caches and serves the main
- networkstatus documents rather than generating its own. (Default: 0)
- **MinUptimeHidServDirectoryV2** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
- Minimum uptime of a v2 hidden service directory to be accepted as such by
- authoritative directories. (Default: 25 hours)
- **DirPort** __PORT__|**auto**::
- If this option is nonzero, advertise the directory service on this port.
- Set it to "auto" to have Tor pick a port for you. (Default: 0)
- **DirListenAddress** __IP__[:__PORT__]::
- Bind the directory service to this address. If you specify a port, bind to
- this port rather than the one specified in DirPort. (Default: 0.0.0.0)
- This directive can be specified multiple times to bind to multiple
- addresses/ports.
- **DirPolicy** __policy__,__policy__,__...__::
- Set an entrance policy for this server, to limit who can connect to the
- directory ports. The policies have the same form as exit policies above.
- **FetchV2Networkstatus** **0**|**1**::
- If set, we try to fetch the (obsolete, unused) version 2 network status
- consensus documents from the directory authorities. No currently
- supported Tor version uses them. (Default: 0.)
- DIRECTORY AUTHORITY SERVER OPTIONS
- ----------------------------------
- **RecommendedVersions** __STRING__::
- STRING is a comma-separated list of Tor versions currently believed to be
- safe. The list is included in each directory, and nodes which pull down the
- directory learn whether they need to upgrade. This option can appear
- multiple times: the values from multiple lines are spliced together. When
- this is set then **VersioningAuthoritativeDirectory** should be set too.
- **RecommendedClientVersions** __STRING__::
- STRING is a comma-separated list of Tor versions currently believed to be
- safe for clients to use. This information is included in version 2
- directories. If this is not set then the value of **RecommendedVersions**
- is used. When this is set then **VersioningAuthoritativeDirectory** should
- be set too.
- **RecommendedServerVersions** __STRING__::
- STRING is a comma-separated list of Tor versions currently believed to be
- safe for servers to use. This information is included in version 2
- directories. If this is not set then the value of **RecommendedVersions**
- is used. When this is set then **VersioningAuthoritativeDirectory** should
- be set too.
- **ConsensusParams** __STRING__::
- STRING is a space-separated list of key=value pairs that Tor will include
- in the "params" line of its networkstatus vote.
- **DirAllowPrivateAddresses** **0**|**1**::
- If set to 1, Tor will accept router descriptors with arbitrary "Address"
- elements. Otherwise, if the address is not an IP address or is a private IP
- address, it will reject the router descriptor. Defaults to 0.
- **AuthDirBadDir** __AddressPattern...__::
- Authoritative directories only. A set of address patterns for servers that
- will be listed as bad directories in any network status document this
- authority publishes, if **AuthDirListBadDirs** is set.
- **AuthDirBadExit** __AddressPattern...__::
- Authoritative directories only. A set of address patterns for servers that
- will be listed as bad exits in any network status document this authority
- publishes, if **AuthDirListBadExits** is set.
- **AuthDirInvalid** __AddressPattern...__::
- Authoritative directories only. A set of address patterns for servers that
- will never be listed as "valid" in any network status document that this
- authority publishes.
- **AuthDirReject** __AddressPattern__...::
- Authoritative directories only. A set of address patterns for servers that
- will never be listed at all in any network status document that this
- authority publishes, or accepted as an OR address in any descriptor
- submitted for publication by this authority.
- **AuthDirListBadDirs** **0**|**1**::
- Authoritative directories only. If set to 1, this directory has some
- opinion about which nodes are unsuitable as directory caches. (Do not set
- this to 1 unless you plan to list non-functioning directories as bad;
- otherwise, you are effectively voting in favor of every declared
- directory.)
- **AuthDirListBadExits** **0**|**1**::
- Authoritative directories only. If set to 1, this directory has some
- opinion about which nodes are unsuitable as exit nodes. (Do not set this to
- 1 unless you plan to list non-functioning exits as bad; otherwise, you are
- effectively voting in favor of every declared exit as an exit.)
- **AuthDirRejectUnlisted** **0**|**1**::
- Authoritative directories only. If set to 1, the directory server rejects
- all uploaded server descriptors that aren't explicitly listed in the
- fingerprints file. This acts as a "panic button" if we get hit with a Sybil
- attack. (Default: 0)
- **AuthDirMaxServersPerAddr** __NUM__::
- Authoritative directories only. The maximum number of servers that we will
- list as acceptable on a single IP address. Set this to "0" for "no limit".
- (Default: 2)
- **AuthDirMaxServersPerAuthAddr** __NUM__::
- Authoritative directories only. Like AuthDirMaxServersPerAddr, but applies
- to addresses shared with directory authorities. (Default: 5)
- **AuthDirFastGuarantee** __N__ **bytes**|**KB**|**MB**|**GB**::
- Authoritative directories only. If non-zero, always vote the
- Fast flag for any relay advertising this amount of capacity or
- more. (Default: 20 KB)
- **AuthDirGuardBWGuarantee** __N__ **bytes**|**KB**|**MB**|**GB**::
- Authoritative directories only. If non-zero, this advertised capacity
- or more is always sufficient to satisfy the bandwidth requirement
- for the Guard flag. (Default: 250 KB)
- **BridgePassword** __Password__::
- If set, contains an HTTP authenticator that tells a bridge authority to
- serve all requested bridge information. Used for debugging. (Default:
- not set.)
- **V3AuthVotingInterval** __N__ **minutes**|**hours**::
- V3 authoritative directories only. Configures the server's preferred voting
- interval. Note that voting will __actually__ happen at an interval chosen
- by consensus from all the authorities' preferred intervals. This time
- SHOULD divide evenly into a day. (Default: 1 hour)
- **V3AuthVoteDelay** __N__ **minutes**|**hours**::
- V3 authoritative directories only. Configures the server's preferred delay
- between publishing its vote and assuming it has all the votes from all the
- other authorities. Note that the actual time used is not the server's
- preferred time, but the consensus of all preferences. (Default: 5 minutes.)
- **V3AuthDistDelay** __N__ **minutes**|**hours**::
- V3 authoritative directories only. Configures the server's preferred delay
- between publishing its consensus and signature and assuming it has all the
- signatures from all the other authorities. Note that the actual time used
- is not the server's preferred time, but the consensus of all preferences.
- (Default: 5 minutes.)
- **V3AuthNIntervalsValid** __NUM__::
- V3 authoritative directories only. Configures the number of VotingIntervals
- for which each consensus should be valid for. Choosing high numbers
- increases network partitioning risks; choosing low numbers increases
- directory traffic. Note that the actual number of intervals used is not the
- server's preferred number, but the consensus of all preferences. Must be at
- least 2. (Default: 3.)
- **V3BandwidthsFile** __FILENAME__::
- V3 authoritative directories only. Configures the location of the
- bandiwdth-authority generated file storing information on relays' measured
- bandwidth capacities. (Default: unset.)
- **V3AuthUseLegacyKey** **0**|**1**::
- If set, the directory authority will sign consensuses not only with its
- own signing key, but also with a "legacy" key and certificate with a
- different identity. This feature is used to migrate directory authority
- keys in the event of a compromise. (Default: 0.)
- **RephistTrackTime** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
- Tells an authority, or other node tracking node reliability and history,
- that fine-grained information about nodes can be discarded when it hasn't
- changed for a given amount of time. (Default: 24 hours)
- **VoteOnHidServDirectoriesV2** **0**|**1**::
- When this option is set in addition to **AuthoritativeDirectory**, Tor
- votes on whether to accept relays as hidden service directories.
- (Default: 1)
- GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays **0**|**1**::
- When this option is set to 0, do not vote to give the Guard flag to any
- version of Tor vulnerable to CVE-2011-2769. (Default: 0)
- HIDDEN SERVICE OPTIONS
- ----------------------
- The following options are used to configure a hidden service.
- **HiddenServiceDir** __DIRECTORY__::
- Store data files for a hidden service in DIRECTORY. Every hidden service
- must have a separate directory. You may use this option multiple times to
- specify multiple services. DIRECTORY must be an existing directory.
- **HiddenServicePort** __VIRTPORT__ [__TARGET__]::
- Configure a virtual port VIRTPORT for a hidden service. You may use this
- option multiple times; each time applies to the service using the most
- recent hiddenservicedir. By default, this option maps the virtual port to
- the same port on 127.0.0.1. You may override the target port, address, or
- both by specifying a target of addr, port, or addr:port. You may also have
- multiple lines with the same VIRTPORT: when a user connects to that
- VIRTPORT, one of the TARGETs from those lines will be chosen at random.
- **PublishHidServDescriptors** **0**|**1**::
- If set to 0, Tor will run any hidden services you configure, but it won't
- advertise them to the rendezvous directory. This option is only useful if
- you're using a Tor controller that handles hidserv publishing for you.
- (Default: 1)
- **HiddenServiceVersion** __version__,__version__,__...__::
- A list of rendezvous service descriptor versions to publish for the hidden
- service. Currently, only version 2 is supported. (Default: 2)
- **HiddenServiceAuthorizeClient** __auth-type__ __client-name__,__client-name__,__...__::
- If configured, the hidden service is accessible for authorized clients
- only. The auth-type can either be \'basic' for a general-purpose
- authorization protocol or \'stealth' for a less scalable protocol that also
- hides service activity from unauthorized clients. Only clients that are
- listed here are authorized to access the hidden service. Valid client names
- are 1 to 19 characters long and only use characters in A-Za-z0-9+-_ (no
- spaces). If this option is set, the hidden service is not accessible for
- clients without authorization any more. Generated authorization data can be
- found in the hostname file. Clients need to put this authorization data in
- their configuration file using **HidServAuth**.
- **RendPostPeriod** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
- Every time the specified period elapses, Tor uploads any rendezvous
- service descriptors to the directory servers. This information is also
- uploaded whenever it changes. (Default: 1 hour)
- TESTING NETWORK OPTIONS
- -----------------------
- The following options are used for running a testing Tor network.
- **TestingTorNetwork** **0**|**1**::
- If set to 1, Tor adjusts default values of the configuration options below,
- so that it is easier to set up a testing Tor network. May only be set if
- non-default set of DirServers is set. Cannot be unset while Tor is running.
- (Default: 0) +
- ServerDNSAllowBrokenConfig 1
- DirAllowPrivateAddresses 1
- EnforceDistinctSubnets 0
- AssumeReachable 1
- AuthDirMaxServersPerAddr 0
- AuthDirMaxServersPerAuthAddr 0
- ClientDNSRejectInternalAddresses 0
- ClientRejectInternalAddresses 0
- ExitPolicyRejectPrivate 0
- V3AuthVotingInterval 5 minutes
- V3AuthVoteDelay 20 seconds
- V3AuthDistDelay 20 seconds
- MinUptimeHidServDirectoryV2 0 seconds
- TestingV3AuthInitialVotingInterval 5 minutes
- TestingV3AuthInitialVoteDelay 20 seconds
- TestingV3AuthInitialDistDelay 20 seconds
- TestingAuthDirTimeToLearnReachability 0 minutes
- TestingEstimatedDescriptorPropagationTime 0 minutes
- **TestingV3AuthInitialVotingInterval** __N__ **minutes**|**hours**::
- Like V3AuthVotingInterval, but for initial voting interval before the first
- consensus has been created. Changing this requires that
- **TestingTorNetwork** is set. (Default: 30 minutes)
- **TestingV3AuthInitialVoteDelay** __N__ **minutes**|**hours**::
- Like TestingV3AuthInitialVoteDelay, but for initial voting interval before
- the first consensus has been created. Changing this requires that
- **TestingTorNetwork** is set. (Default: 5 minutes)
- **TestingV3AuthInitialDistDelay** __N__ **minutes**|**hours**::
- Like TestingV3AuthInitialDistDelay, but for initial voting interval before
- the first consensus has been created. Changing this requires that
- **TestingTorNetwork** is set. (Default: 5 minutes)
- **TestingAuthDirTimeToLearnReachability** __N__ **minutes**|**hours**::
- After starting as an authority, do not make claims about whether routers
- are Running until this much time has passed. Changing this requires
- that **TestingTorNetwork** is set. (Default: 30 minutes)
- **TestingEstimatedDescriptorPropagationTime** __N__ **minutes**|**hours**::
- Clients try downloading router descriptors from directory caches after this
- time. Changing this requires that **TestingTorNetwork** is set. (Default:
- 10 minutes)
- SIGNALS
- -------
- Tor catches the following signals:
- **SIGTERM**::
- Tor will catch this, clean up and sync to disk if necessary, and exit.
- **SIGINT**::
- Tor clients behave as with SIGTERM; but Tor servers will do a controlled
- slow shutdown, closing listeners and waiting 30 seconds before exiting.
- (The delay can be configured with the ShutdownWaitLength config option.)
- **SIGHUP**::
- The signal instructs Tor to reload its configuration (including closing and
- reopening logs), and kill and restart its helper processes if applicable.
- **SIGUSR1**::
- Log statistics about current connections, past connections, and throughput.
- **SIGUSR2**::
- Switch all logs to loglevel debug. You can go back to the old loglevels by
- sending a SIGHUP.
- **SIGCHLD**::
- Tor receives this signal when one of its helper processes has exited, so it
- can clean up.
- **SIGPIPE**::
- Tor catches this signal and ignores it.
- **SIGXFSZ**::
- If this signal exists on your platform, Tor catches and ignores it.
- FILES
- -----
- **@CONFDIR@/torrc**::
- The configuration file, which contains "option value" pairs.
- **@LOCALSTATEDIR@/lib/tor/**::
- The tor process stores keys and other data here.
- __DataDirectory__**/cached-status/**::
- The most recently downloaded network status document for each authority.
- Each file holds one such document; the filenames are the hexadecimal
- identity key fingerprints of the directory authorities.
- __DataDirectory__**/cached-descriptors** and **cached-descriptors.new**::
- These files hold downloaded router statuses. Some routers may appear more
- than once; if so, the most recently published descriptor is used. Lines
- beginning with @-signs are annotations that contain more information about
- a given router. The ".new" file is an append-only journal; when it gets
- too large, all entries are merged into a new cached-descriptors file.
- __DataDirectory__**/cached-routers** and **cached-routers.new**::
- Obsolete versions of cached-descriptors and cached-descriptors.new. When
- Tor can't find the newer files, it looks here instead.
- __DataDirectory__**/state**::
- A set of persistent key-value mappings. These are documented in
- the file. These include:
- - The current entry guards and their status.
- - The current bandwidth accounting values (unused so far; see
- below).
- - When the file was last written
- - What version of Tor generated the state file
- - A short history of bandwidth usage, as produced in the router
- descriptors.
- __DataDirectory__**/bw_accounting**::
- Used to track bandwidth accounting values (when the current period starts
- and ends; how much has been read and written so far this period). This file
- is obsolete, and the data is now stored in the \'state' file as well. Only
- used when bandwidth accounting is enabled.
- __DataDirectory__**/control_auth_cookie**::
- Used for cookie authentication with the controller. Location can be
- overridden by the CookieAuthFile config option. Regenerated on startup. See
- control-spec.txt for details. Only used when cookie authentication is
- enabled.
- __DataDirectory__**/keys/***::
- Only used by servers. Holds identity keys and onion keys.
- __DataDirectory__**/fingerprint**::
- Only used by servers. Holds the fingerprint of the server's identity key.
- __DataDirectory__**/approved-routers**::
- Only for naming authoritative directory servers (see
- **NamingAuthoritativeDirectory**). This file lists nickname to identity
- bindings. Each line lists a nickname and a fingerprint separated by
- whitespace. See your **fingerprint** file in the __DataDirectory__ for an
- example line. If the nickname is **!reject** then descriptors from the
- given identity (fingerprint) are rejected by this server. If it is
- **!invalid** then descriptors are accepted but marked in the directory as
- not valid, that is, not recommended.
- __DataDirectory__**/router-stability**::
- Only used by authoritative directory servers. Tracks measurements for
- router mean-time-between-failures so that authorities have a good idea of
- how to set their Stable flags.
- __HiddenServiceDirectory__**/hostname**::
- The <base32-encoded-fingerprint>.onion domain name for this hidden service.
- If the hidden service is restricted to authorized clients only, this file
- also contains authorization data for all clients.
- __HiddenServiceDirectory__**/private_key**::
- The private key for this hidden service.
- __HiddenServiceDirectory__**/client_keys**::
- Authorization data for a hidden service that is only accessible by
- authorized clients.
- SEE ALSO
- --------
- **privoxy**(1), **tsocks**(1), **torify**(1) +
- **https://www.torproject.org/**
- BUGS
- ----
- Plenty, probably. Tor is still in development. Please report them.
- AUTHORS
- -------
- Roger Dingledine [arma at mit.edu], Nick Mathewson [nickm at alum.mit.edu].
|