35 lines
1.0 KiB
ReStructuredText
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
|