AHAMesh: Difference between revisions

From All Hands Active Wiki
Jump to navigation Jump to search
No edit summary
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Stub}}
[[Category:Projects]]
<br>
The purpose of this project is to create everything needed to deploy a wireless(802.11) mesh network with the Raspberry Pi and use a suite of software that lends itself to fighting censorship by redundantly caching requested content near locations where they are requested and employing routing that makes traffic analysis more difficult.  
The purpose of this project is to create everything needed to deploy a wireless(802.11) mesh network with the Raspberry Pi and use a suite of software that lends itself to fighting censorship by redundantly caching requested content near locations where they are requested and employing routing that makes traffic analysis more difficult.  


Line 17: Line 22:
As root, run the following:
As root, run the following:


     groupadd gnunetd
     groupadd gnunetdns
     groupadd gnunet
     groupadd gnunet
     useradd gnunet
     useradd gnunet
We've just created a group for the user gnunet to run the gnunet services. The Gnunetd group is for a different class of services. This is for security and will make sense later.


Since we're going with MySQL, we need to configure our datastore.  
Since we're going with MySQL, we need to configure our datastore.  


Log into MySQL as root and run the following code:
Log into MySQL as root and run the following:
    CREATE USER 'gnunet'@'localhost';
     CREATE DATABASE gnunet;
     CREATE DATABASE gnunet;
     GRANT ALL ON gnunet.* TO 'gnunet'@'localhost';
     GRANT ALL ON gnunet.* TO 'gnunet'@'localhost';
Line 31: Line 35:
     FLUSH PRIVILEGES;
     FLUSH PRIVILEGES;


While we're at it, we should set up our GNUNet configuration to use the account we set up to access our datastore. Create a file called .my.cnf and write your client information in:
    [client]
    user=gnunet
    password=$the_password_you_like
    [dhtcache]
    QUOTA = 500 MB
    DATABASE = MySQL


The topology of the network we're making with GNUnet is Friend-to-Friend ONLY. To start this off, we need to create a file to specify who our friends are. To get our own identity, we need to use
THIS ARTICLE IS INCOMPLETE

Latest revision as of 18:01, 16 December 2023


Alert
Alert
Stub:
This article is a stub. You can help AHA by expanding it.


The purpose of this project is to create everything needed to deploy a wireless(802.11) mesh network with the Raspberry Pi and use a suite of software that lends itself to fighting censorship by redundantly caching requested content near locations where they are requested and employing routing that makes traffic analysis more difficult.

The basic components of this projects are:

  1. Raspberry Pi with dual Wifi Adapters
  2. The GNUnet Filesharing Protocol
  3. The Freenet Filesharing Protocol
  4. The CCNx protocol

Network Topology

It's worth it to take a moment to explain the intended topology of the network this system is intended to support. The idea is to provide a wireless mesh network that allows communication between trusted friends using GNUnet. The Friend-to-Friend network that GNUnet forms does not necessarily have the same topology of the wireless network. For example, your node may connect to your neighbor Bob, but you do not publish or share any information with Bob - the information is encrypted, sent over Bob's node and delivered to your real friend Tom, who is connected on the wireless mesh network.

GNUNet Configuration for a Friend to Friend Network

This tutorial assumes that you have downloaded the latest version of GNUnet and compiled it from source. There are several data storage options for GNUnet, however for these instructions I'm assuming that you are using MySQL.

First and foremost, GNUnet will be running as a service, so it's important to create the appropriate users and groups.

As root, run the following:

   groupadd gnunetdns
   groupadd gnunet
   useradd gnunet

Since we're going with MySQL, we need to configure our datastore.

Log into MySQL as root and run the following:

   CREATE USER 'gnunet'@'localhost';
   CREATE DATABASE gnunet;
   GRANT ALL ON gnunet.* TO 'gnunet'@'localhost';
   SET PASSWORD FOR 'gnunet'@'localhost'=PASSWORD('$the_password_you_like');
   FLUSH PRIVILEGES;

While we're at it, we should set up our GNUNet configuration to use the account we set up to access our datastore. Create a file called .my.cnf and write your client information in:

   [client]
   user=gnunet
   password=$the_password_you_like
   [dhtcache]
   QUOTA = 500 MB
   DATABASE = MySQL

THIS ARTICLE IS INCOMPLETE