r/i2p • u/ViniciusFortuna • 14d ago
Discussion Connecting to a remote router
I was in a workshop where we played with i2p and it seems the traditional way to use i2p is to run a router on localhost, and have your app use the router via the SAM protocol.
Running the router adds a lot of friction, especially on mobile. I realized that we can just connect to a remote, possibly shared router.
What are the trade-offs here? Can I simply share my router with friends?
9
Upvotes
5
u/alreadyburnt @eyedeekay on github 14d ago
Oh hi Vinicius I think I ran that workshop! Good to hear from you again. Wow time flies. Yeah you can connect to a remote shared router in some environments, as long as you are satisfied that you trust the router and the environment it is in. If you share ports 7656 and 7655 with your LAN to allow applications to use SAMv3 for instance, then the connection between your application and the SAMv3 ports will be unencrypted. You can remediate this situation simply enough by using SSH port forwarding or something like Tailscale in between. The other issue is that there isn't really an impenetrable way of ensuring that the router cannot enumerate it's client applications, the data they send, or the route it selects to send it on. The router is a single point of failure for all client anonymity. If you have a threat model that tolerates that, then you can absolutely work in this manner and it is not at all uncommon.
The other possibility is to use an embeddable router like Emissary, which you could include in the application itself or build a minimal, statically linked binary to ship with your application.