资源说明:Frenet 0.5 (stable and unstable branches, UNMAINTAINED)
Freenet 0.5 is now in maintenance mode. Freenet 0.6 is deprecated. All major development is occurring on 0.7. Fred 0.5 ======== "It's kind of a mix of Usenet, the Web, and a RAID disk system, all fudged up into a super-crypto wet dream" - The PigDog Journal 1. Blame -------- 1.1 People ---------- Many people have contributed to the current codebase and it is impossible to list all of them, but those most likely to complain if they aren't included here are: Ian Clarke - Project Founder, Coordinator, and Egomaniac Tavin Cole - Core Developer and Probable NSA Mole Gianni Johansson - Core Developer and Womanizer Scott Miller - Crypto Guru and Alcohol Lightweight Matthew Toseland - Core Developer and Project Amphibian Oskar Sandberg - Core Developer and Project Grouch 1.2 Copyright ------------- (c) Copyright 1999-2002 The Freenet Project Inc Released under the GNU Public License Version 2. 2. Introduction --------------- Fred (FREenet Daemon) is the reference Java implementation of the Freenet Protocol. Freenet is an architecture designed to permit true freedom of communication over the Internet. The system is designed to be used in conjunction with one or more Freenet clients, and depending on the client, can look like the World Wide Web, a Usenet server, or a file-sharing application. FProxy, a web interface to Freenet, is included. See http://freenetproject.org/ for more information (and source code if you don't have it already). This software was brought to you by the letter P, and several randomly chosen large prime numbers. 3. Running Freenet ---------------- 3.1 Requirements ---------------- Freenet requires a Java Runtime Environment to be installed prior to use. Due to bugs in the current release version of Kaffe, and IBM's Java Runtime Environment, we strongly suggest that you use the latest version of Sun's Java Runtime Environment for your platform (see http://java.sun.com/). If you want to use fproxy, we STRONGLY recommend you use a web browser that doesn't ignore MIME types... Firefox and Konqueror are OK, Internet Explorer will seriously jeopardize your anonymity. Freenet also requires that your system clock is within a few minutes of the actual time. ---------------------------- 3.1.1 Dealing with firewalls ---------------------------- For a Freenet node to work correctly, other Freenet nodes must be able to open connections to it, and normally NATs or Firewalls will prevent this. If you are behind a NAT or firewall you must do several things: 1) When Freenet asks you for your computer's IP address (ie. the ipAddress setting in the freenet.conf file), you should give the external address of your NAT or firewall. This will be under "expert" because freenet can now auto-detect the IP address of most non-firewalled nodes. 2) After you have completed the steps in section 3.2, you should check the listenPort setting in your freenet.conf file. 3) Configure your NAT or firewall to forward incoming TCP connections on this port to your computer (see your NAT or firewall's manual for instructions on how to do this). 3.2 Starting Freenet -------------------- On *NIX Type: > sh start-freenet.sh To run Freenet. The first time you run it it will ask you some questions to create a configuration file (freenet.conf). You can edit this manually later if you need to, but generally you shouldn't change anything unless you know what you are doing. FIXME: And on MS? 3.3 Accessing Freenet via FProxy -------------------------------- You can look at some websites in Freenet by visiting http://localhost:8888/ in your web browser. You can also find interesting information about what your node is doing there. Please read the SECURITY CAUTIONS below BEFORE using a Web Browser with Freenet! SETTING UP A BROWSER FOR BEST PERFORMANCE ---Mozilla and Gecko Based Browsers (ie. Firefox): Many browsers limit the number of simultaneous connections to something far too low for efficiently browsing Freenet (since Freenet pages often have much higher latency than web pages). This can usually be reconfigured. For example, for Mozilla post-1.3, go to about:config, and change the following settings: network.http.max-connections 200 network.http.max-connections-per-server 100 network.http.max-persistent-connections-per-server 10 network.http.max-persistent-connections-per-proxy 50 For Mozilla prior to 1.3: create a file with the following contents called user.js in the directory with prefs.js, or append to an existing user.js: user_pref("network.http.max-connections", 200); user_pref("network.http.max-connections-per-server", 100); user_pref("network.http.max-persistent-connections-per-server", 10); user_pref("network.http.max-persistent-connections-per-proxy", 50); Note that these settings will cause mozilla to use more connections for all your browsing, which may not be desirable from a network congestion point of view; volunteers to make mozilla allow this sort of settings to be set per host would be welcome... ---Opera Browser Go to File/Preferences/Network - set 'Max connections to a server' to 20, 32 or 64, if you find you are getting 'could not connect to server' warnings adjust your setting one step down. - set 'Max total connections' to one setting higher than max connections, this will allow Freenet to use all connections available to it without interfering with web browsing ie. if Max to server is 32 then Max total should be 64. Note that these settings will cause Opera to use more connections for all your browsing, which may not be desirable from a network congestion point of view. SECURITY CAUTIONS ---Mozilla and other Gecko-based browsers (i.e., Netscape, Firefox and possibly Galeon and a few others): The following is VERY IMPORTANT: Mozilla has three features, GoBrowsing, Prefetching, and Safebrowsing, which may DESTROY YOUR ANONYMITY. GoBrowsing feeds failed queries into a search engine (Google seems to be the default), so when enter the URL of a freesite with a small typo, what you typed will be leaked to the internet. Prefetching loads pages in the background before you click on them. Malicious freesite authors may abuse this feature to find out who is reading their sites (sort of a web bug). Safebrowsing communicates with a so-called provider (once again, Google seems to be the default) to detect whether a web page was set up by phishers or other malicious entities. However, during this process details about the page contents may be transmitted to the provider. To deactivate these features, follow these instructions (instructions for older Mozilla type browsers below): Type "about:config" into the URL location box of your browser. You get a list of editable preferences. You must set these three pereferences to "false": * keyword.enabled * network.prefetch-next * browser.safebrowsing.enabled Follow these instructions for older Mozilla type browsers: If you can't find the configuration variables for Preloading and Safebrowsing (network.prefetch-next and browser.safebrowsing.enabled, respectively), these features are probably not supported by your browser and therefore do not pose a threat. But don't forget to switch them off once you update your browser. If you can't find the keyword.enabled configuration variable that's because it is named differently in older browsers. Set the following variable to false instead: * browser.goBrowsing.enabled Mozilla prior to 1.3 does not support in-browser configuration editing. Instead, create a file with the following contents called user.js in the same directory with prefs.js, or append to an existing user.js: user_pref("browser.goBrowsing.enabled", false); ---Microsoft Internet Explorer: Internet Explorer (all versions, we think) has a totally different ANONYMITY-DESTROYING BEHAVIOUR (not respecting MIME types), and also some problems with auto-detecting UTF16 even when we tell it in the headers to use some other charset). Internet Explorer is NOT recommended for anonymous browsing. ---Opera Browser: Opera's default behaviour is similar to Internet Explorer's and can compromise anonymity. Opera users MUST change the following setting to change this ANONYMITY-DESTROYING BEHAVIOUR: Go to File/Preferences/File types - Click on 'Determine action by MIME type ---All Browsers: It is possible that the anonymity filter can be circumvented by other means, so if you care about your anonymity while browsing Freenet: a) Don't use Internet Explorer and setup Opera properly, see above. b) Turn off javascript, java, active scripting, and any other scripting your browser supports. c) Set your browser to only load images, frames, etc from the server that originated the web page d) Be extra paranoid! Keep your browser up to date etc. Extreme measures include browser proxies that block everything except localhost:8888 HTTP, encrypted disk partitions or virtual disks, and so on. e) Set in your config file: mainport.params.servlet.1.params.filterParanoidStringCheck=true mainport.params.servlet.7.params.sfFilterParanoidStringCheck=true f) Consider using your operating system's security features to sandbox your Freenet browsing. For example, on Linux, you can (after setting httpInserts=false and fcpInserts=false in your freenet.conf) create a user specifically for browsing freenet, only use that user to browse freenet, and type the following lines to prevent that user from accessing the regular internet (assuming the safe user, which must not be the user running the node, is called "freenet"): # Accept TCP packets destined for local ports 8888 and 8481. iptables -A OUTPUT -d localhost -p tcp --dport 8888 -m owner --uid-owner freenet -j ACCEPT iptables -A OUTPUT -d localhost -p tcp --dport 8481 -m owner --uid-owner freenet -j ACCEPT # Drop everything else. iptables -A OUTPUT -m owner --uid-owner freenet -j DROP Your kernel must be configured with these options: CONFIG_IP_NF_IPTABLES CONFIG_IP_NF_MATCH_OWNER CONFIG_IP_NF_FILTER Verify that the filter rules have been added: $ iptables -L OUTPUT Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere localhost OWNER UID match freenet tcp dpt:8888 ACCEPT tcp -- anywhere localhost OWNER UID match freenet tcp dpt:8481 DROP all -- anywhere anywhere OWNER UID match freenet g) If you are accessing files that will get you into serious trouble, consider using something simpler than a web browser to access Freenet... or better yet, DON'T DO IT! This is still beta software, it probably has more bugs. Having said that, millions of people access questionable content through much less secure systems than Freenet. Use your common sense. You can't conceal the fact that you are running a freenet node from a determined attacker, because of the way Freenet works (path shortening - for more details visit our web site). However short of compromising your computer, other expensive forms of surveillance, you doing something stupid, or more bugs, it should be very difficult for them to find out _what_ you browse (or publish) on Freenet. What you want to prevent (in parts a,b,c) is freesites accessing the Real Internet, and giving away the combination of your IP address along and the fact that you visited a given freesite or downloaded (or uploaded) a specific file. This is called a Web Bug, and the simplest form is an image in a freesite loaded from somewhere on the real web - this gives away your IP address, and the page you are browsing (if the attacker is clever, or you have Referer: turned on), to the server the image is downloaded from. Fproxy (freenet's web interface) contains code ("the anonymity filter") to try to warn about or remove such things, but there could always be bugs in freenet or in your web browser that would let something through. You can of course reduce the likelihood of this by turning off images support in your browser. The following formats are known to be able to carry data that could compromise your anonymity (but there are no doubt many more that can do this): * RealPlayer * Windows Media Player * MP3s (some id3 tags cause winamp to open web sites and thus compromise your anonymity). * HTML and CSS, of course, hence the filter. Finally, you should disable your browser cache AND set the option mainport.params.servlet.1.params.noCache=true in your config file (to tell freenet to send no-cache directives to the browser). FILTER ISSUES FOR CONTENT AUTHORS --------------------------------- Things to bear in mind when inserting HTML content/freesites: * The new filter is VERY fussy about quote marks. Something like: or will confuse it... this is partly because the HTML 4.01 spec seems to imply that <> characters are allowed in strings inside tags. This should not be a problem using GUI tools; it is however a problem if you write the HTML directly. * Charsets. If you want to insert a file with a charset other than the default iso-8859-1, tell your insertion tool to use the new charset in the mime type, for example "text/html;charset=UTF16". The META tag to set the mime type is NOT supported. Neither is the UTF16 byte order mark. * All unrecognized HTML tags are removed by fproxy, for security reasons. JVM ISSUES ---------- FIXME: This information is probably out of date. There are issues with lots of JVMs. * RedHat 9.0 and other distributions having Native Posix Threads are _very_ unstable. That's why the startup script has been modified to disable NPTL on Redhat; if you are using different distribution and you know or suspect that it is with NPTL, try seting LD_ASSUME_KERNEL=2.2.5. If this causes Freenet to fail to load with a library error, try 2.4.1, but 2.4.1 will not work with the 1.4.2 JRE at the time of writing. Hence, Gentoo requires the JRE to be Sun 1.4.1, not 1.4.2. :< * Beta versions of Sun 1.4 don't work; 1.4.1r01 seems to work OK; 1.4.0 won't work due to significant changes to NIO made between 1.4.0 and 1.4.1 * Even under the Sun JVM, we have numerous reports of the -server VM causing wierd crashes. It has therefore been disabled in start-freenet.sh. * Sun-derived JDKs (Sun, Blackdown, IBM etc) prior to 1.4 do not work. * There are reports of exceptions on Blackdown that don't occur on Sun. * Kaffe 1.0.6 and prior do not work at all. * Kaffe 1.1 (possibly from CVS) will probably work, although it has a few issues: * Automatic detection of IP addresses is only done once at startup, so if your IP address changes often, you will need to restart your node often. * Mysteriously long delays acquiring locks and in other parts of the code that can make the node think it is overloaded. * If you use Kaffe to run it, and you are not just using the provided JARs, which _will_ work with Kaffe, you need a compiler. Jikes 1.14 works. Jikes 1.15 and 1.16 at least don't work. Recent Jikes 1.18 CVS seems to work. * If you run on MacOS/X, there is a default file descriptor limit of 256. So Freenet uses a default connection limit of 128 if OS/X is detected, as it uses fds for many things other than connections). You will probably be able to raise the limit with the command ulimit -n 1024, and then set maxNodeConnections=512 explicitly in the config file. Most other unix(tm) derived systems have a default limit of 1024, so they are ok for the default configuration. For a large node, you may want to increase this value as well, however. TWEAKING -------- 1. How To Speed Up Large Splitfiles ----------------------------------- FIXME: This is done automatically on at least some architectures, is it not? You can speed up splitfiles (FEC encoded splitfiles, the default), by using native compiled FEC libraries. Details are at this URL: http://freenet.googlecode.com/svn/branches/legacy/contrib/fecimpl/onion/README (that is fecimpl/onion/README in the freenet contrib SVN module). The info on Native FEC support on the Nubile freesite (edition 11) is completly obsolete. The zip file that the readme refers to is in SVN (in the contrib module, *not* the main freenet module). You can access it on the web here: http://freenet.googlecode.com/svn/branches/legacy/contrib/fecimpl/onion/alien/fec-1.0.3.zip (Do a "Save link as..." on the "(download)" link from your browser.) I didn't deploy native FEC support by default because I didn't want to deal with the per platform configuration issues. The instructions in the file given above are geared toward people who already know about JNI libraries. If someone out there wants to write per platform (*nix, Windows) end user install doc, suitable for inclusion in the generic Freenet README, that would be a valuable contribution to the project. -- gj 4. Attributions ---------------- Special thanks to Justin Chapweske and Onion Networks (www.onionnetworks.com) for making their Java Forward Error Correction (FEC) library available under an open license. Here's the text of the Onion license that is embedded in freenet-ext.jar with the FEC plugin implementation: /* * Java Forward Error Correction Library * Copyright (C) 2001 Onion Networks * Copyright (C) 2000 OpenCola * * Portions derived from code by Luigi Rizzo: * fec.c -- forward error correction based on Vandermonde matrices * 980624 * (C) 1997-98 Luigi Rizzo (luigi@iet.unipi.it) * * Portions derived from code by Phil Karn (karn@ka9q.ampr.org), * Robert Morelos-Zaragoza (robert@spectra.eng.hawaii.edu) and Hari * Thirumoorthy (harit@spectra.eng.hawaii.edu), Aug 1995 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. */
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。