Files
i2p-docker-proxy/docs/architecture.rst

35 lines
1.0 KiB
ReStructuredText

Architecture
============
.. drawio-image:: _static/i2p-docker-components.xml
Handling DNS requests
---------------------
I2P hosts are either `I2P destinations <I2P-destination>`_ or direct hostnames like zzz.i2p,
however these cannot be translated to IP addresses because I2P works with destinations.
We therefore use a **FakeDNS** that maps an I2P host or destination to a random IP.
That IP is communicated to the proxy which will do a reverse DNS lookup once it receives a given IP.
.. mscgenjs::
:language: msgenny
app,
dns : "FakeDNS",
iptables,
pr0xy : "Transparent pr0xy",
i2p;
app => dns : "Request resolution of domain name";
dns => app : "Fake IP";
app => iptables : "data to IP";
iptables => pr0xy : "forward data";
pr0xy >> dns : "reverse DNS request";
dns >> pr0xy : "b32 domain name";
pr0xy => i2p : "forward data";
i2p => pr0xy : "response";
pr0xy => app : "response";
.. _I2P-destination: https://geti2p.net/spec/common-structures#destination