First draft of internet bridge section
Open to any and all criticism here, writing documentation isn't my strong suit. But here is a decent start at explaining the differences between the transports. Also I believe there should be a way to "compile" this markdown to html, not exactly sure how to accomplish that, will try to look into this further in the weekend.
This commit is contained in:
parent
a4a9a1dd53
commit
02f9c32da7
|
@ -71,6 +71,61 @@ you want more information, you can read the :ref:`Building Networks<networks-mai
|
||||||
and :ref:`Interfaces<interfaces-main>` chapters of this manual.
|
and :ref:`Interfaces<interfaces-main>` chapters of this manual.
|
||||||
|
|
||||||
|
|
||||||
|
Bridging Over the Internet
|
||||||
|
=============================================
|
||||||
|
Reticulum currently offers two interfaces for connecting nodes over the internet:
|
||||||
|
`TCP <https://markqvist.github.io/Reticulum/manual/interfaces.html#tcp-server-interface>`_ and `I2P <https://markqvist.github.io/Reticulum/manual/interfaces.html#i2p-interface>`_. Each interface offers a different set of features, and Reticulum
|
||||||
|
users should carefully choose the interface which best suites their needs.
|
||||||
|
|
||||||
|
The ``TCPServerInterface`` allows users to host a node accessible over TCP/IP. This
|
||||||
|
method is generally faster, lower latency, and more energy efficient than using ``I2PInterface``, however it leaks considerable
|
||||||
|
metadata about the server host.
|
||||||
|
|
||||||
|
Direct TCP client connections are able to see your node's IP address and may be able
|
||||||
|
to use this information to determine your location or identity. Adversaries
|
||||||
|
inspecting your network's internet packets may be able to record packet metadata
|
||||||
|
like time of transmission and packet size. By default TCP does not encrypt traffic,
|
||||||
|
so unencrypted Reticulum packets will be transmitted in clear text. Hosting a
|
||||||
|
node via TCP server also requires a static IP address.
|
||||||
|
|
||||||
|
The ``I2PInterface`` routes messages through the `Invisible Internet Protocol
|
||||||
|
(I2P) <https://geti2p.net/en/>`_. To properly use this interface, users must also run an I2P daemon in
|
||||||
|
parallel to ``rnsd``. For always-on nodes it is recommended to use `i2pd <https://i2pd.website/>`_ because it
|
||||||
|
generally runs more efficiently.
|
||||||
|
|
||||||
|
By default, I2P will fully encrypt all traffic sent over the network, and
|
||||||
|
obfuscate both the sender's and receiver's IP addresses. Running an I2P node
|
||||||
|
will also relay other I2P user's encrypted packets, which will use extra
|
||||||
|
bandwidth and compute power, but also makes timing attacks and other forms of
|
||||||
|
deep-packet-inspection much more difficult. Similar to RNS, I2P uses cryptographic
|
||||||
|
public keys as destination addresses, which allows users to host nodes on non-static IPs.
|
||||||
|
|
||||||
|
In general it is recommended to use an I2P node if you are hosting your node
|
||||||
|
publicly.
|
||||||
|
|
||||||
|
There is a experimental public testnet you can join by adding the following
|
||||||
|
interfaces to your ``.reticulum/config`` file:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
# For connecting over TCP/IP:
|
||||||
|
|
||||||
|
[[RNS Testnet Frankfurt]]
|
||||||
|
type = TCPClientInterface
|
||||||
|
interface_enabled = yes
|
||||||
|
outgoing = True
|
||||||
|
target_host = frankfurt.rns.unsigned.io
|
||||||
|
target_port = 4965
|
||||||
|
|
||||||
|
|
||||||
|
# For connecting over I2P:
|
||||||
|
|
||||||
|
[[RNS Testnet I2P Node A]]
|
||||||
|
type = I2PInterface
|
||||||
|
interface_enabled = yes
|
||||||
|
peers = ykzlw5ujbaqc2xkec4cpvgyxj257wcrmmgkuxqmqcur7cq3w3lha.b32.i2p
|
||||||
|
|
||||||
|
|
||||||
Develop a Program with Reticulum
|
Develop a Program with Reticulum
|
||||||
===========================================
|
===========================================
|
||||||
If you want to develop programs that use Reticulum, the easiest way to get
|
If you want to develop programs that use Reticulum, the easiest way to get
|
||||||
|
|
Loading…
Reference in New Issue