i2pd icon indicating copy to clipboard operation
i2pd copied to clipboard

IP address mapping for *.i2p addresses

Open dimzon opened this issue 6 years ago • 4 comments

Как это сделано в Tor (DNSPort + TransPort) (+пример использования) https://www.grepular.com/Transparent_Access_to_Tor_Hidden_Services

Идея в том чтобы резолвить foo.i2p в некоторый IP и запоминать маппинг. При обращении по этому "фейковуму" IP обращаться к foo.i2p (через маппинг)

Возможно имеет смысл вместо ipv4 использовать ipv6?

dimzon avatar May 02 '18 20:05 dimzon

Уже пытались это делать через tun интерфейс

orignal avatar May 03 '18 15:05 orignal

Аналогия есть на этом же сайте: https://www.grepular.com/Transparent_Access_to_I2P_eepSites

r4sas avatar May 16 '18 03:05 r4sas

Реализовывать через SOCKS (даже прозрачный при содействии iptables) приятнее тем, что придётся писать только свою реализацию SOCKS (и DNS), а не свою реализацию TCP поверх tun-интерфейса. Обе известные мне реализации (tun2socks, tun2tor) используют TCP из lwIP. Вариант с отдельным интерфейсом, конечно, идейно чище, но труднее в реализации.

Мне кажется, что можно было бы попытаться позаимствовать уже имеющуюся реализацию TCP из ядра, используя нет tun, а dummy-интерфейс с дополнительным local-маршрутом (по сути ещё один lo). Всё бы хорошо, но Linux настаивает на том, чтобы отвечать RST на всё, что движется, даже если там открыт RAW-сокет. Так что тут всё равно придётся как-то извратиться (вдобавок к извращению, нужному для того, чтобы слушать на всех портах сразу). (В *BSD, наоборот, можно подавить эти RST, но нельзя получать TCP-пакеты в RAW-сокет.)

alexshpilkin avatar Jul 10 '18 22:07 alexshpilkin

В любом случае нужно в первую очередь организовать DNS-сервер, выдающий адреса из выделенного диапазона (лучше IPv6), а потом уже можно думать, как на эти адреса получать пакеты. (Ещё одна интересная деталь в реализации Tor’а — поддержка специально под это сделанных функций TPROXY под Linux, divert под *BSD и иже с ними вместо описанного в документации метода через REDIRECT.)

alexshpilkin avatar Jul 10 '18 22:07 alexshpilkin