SOCKS5 Proxy for non-HTTP connections #6

Open
opened 2025-04-21 14:30:57 -04:00 by idk · 0 comments
Owner

Right now the browser is configured to drop non-HTTP traffic and force proxied WebRTC. That's good enough, but it's not great. Firefox and Chromium allow you to configure different proxies for non-HTTP protocols. If we had a SOCKS5 proxy, then proxied WebRTC could use Datagrams instead of Streaming, reducing overhead for WebRTC applications. Voice-over-I2P in the Browser can be a thing.

Note this does not apply to HTTP or HTTPS traffic, which will still use the HTTP proxy.

Prototype config:

description=A client tunnel for SOCKS5
interface=127.0.0.1
tunnel.8.listenPort=4446
tunnel.8.name=SOCKS5 Client
tunnel.8.option.i2cp.closeIdleTime=600000
tunnel.8.option.i2cp.closeOnIdle=true
tunnel.8.option.i2cp.delayOpen=false
tunnel.8.option.i2cp.destination.sigType=7
tunnel.8.option.i2cp.leaseSetEncType=4,0
tunnel.8.options.i2cp.newDestOnResume=true
tunnel.8.options.i2cp.reduceIdleTime=1200000
tunnel.8.options.i2cp.reduceOnIdle=false
tunnel.8.options.i2cp.reduceQuantity=1
tunnel.8.options.i2p.streaming.connectDelay=0
tunnel.8.options.i2ptunnel.httpclient.allowInternalSSL=true
tunnel.8.options.i2ptunnel.httpclient.sendAccept=false
tunnel.8.options.i2ptunnel.httpclient.sendReferer=false
tunnel.8.options.i2ptunnel.httpclient.sendUserAgent=false
tunnel.8.options.i2ptunnel.useLocalOutproxy=false
tunnel.8.options.inbound.backupQuantity=2
tunnel.8.options.inbound.length=3
tunnel.8.options.inbound.lengthVariance=0
tunnel.8.options.inbound.nickname=shared clients
tunnel.8.options.inbound.quantity=4
tunnel.8.options.outbound.backupQuantity=2
tunnel.8.options.outbound.length=3
tunnel.8.options.outbound.lengthVariance=0
tunnel.8.options.outbound.nickname=shared clients
tunnel.8.options.outbound.quantity=4
tunnel.8.options.outproxyAuth=false
tunnel.8.options.persistentClientKey=false
tunnel.8.options.sslManuallySet=false
tunnel.8.options.useSSL=false
tunnel.8.proxyList=outproxy.acetone.i2p
tunnel.8.sharedClient=false
tunnel.8.startOnLoad=true
tunnel.8.type=sockstunnel

see also #12 which will require a more advanced version of this.

Right now the browser is configured to drop non-HTTP traffic and force proxied WebRTC. That's good enough, but it's not great. Firefox and Chromium allow you to configure different proxies for non-HTTP protocols. If we had a SOCKS5 proxy, then proxied WebRTC could use Datagrams instead of Streaming, reducing overhead for WebRTC applications. Voice-over-I2P in the Browser can be a thing. Note this does **not** apply to HTTP or HTTPS traffic, which will still use the HTTP proxy. Prototype config: ``` description=A client tunnel for SOCKS5 interface=127.0.0.1 tunnel.8.listenPort=4446 tunnel.8.name=SOCKS5 Client tunnel.8.option.i2cp.closeIdleTime=600000 tunnel.8.option.i2cp.closeOnIdle=true tunnel.8.option.i2cp.delayOpen=false tunnel.8.option.i2cp.destination.sigType=7 tunnel.8.option.i2cp.leaseSetEncType=4,0 tunnel.8.options.i2cp.newDestOnResume=true tunnel.8.options.i2cp.reduceIdleTime=1200000 tunnel.8.options.i2cp.reduceOnIdle=false tunnel.8.options.i2cp.reduceQuantity=1 tunnel.8.options.i2p.streaming.connectDelay=0 tunnel.8.options.i2ptunnel.httpclient.allowInternalSSL=true tunnel.8.options.i2ptunnel.httpclient.sendAccept=false tunnel.8.options.i2ptunnel.httpclient.sendReferer=false tunnel.8.options.i2ptunnel.httpclient.sendUserAgent=false tunnel.8.options.i2ptunnel.useLocalOutproxy=false tunnel.8.options.inbound.backupQuantity=2 tunnel.8.options.inbound.length=3 tunnel.8.options.inbound.lengthVariance=0 tunnel.8.options.inbound.nickname=shared clients tunnel.8.options.inbound.quantity=4 tunnel.8.options.outbound.backupQuantity=2 tunnel.8.options.outbound.length=3 tunnel.8.options.outbound.lengthVariance=0 tunnel.8.options.outbound.nickname=shared clients tunnel.8.options.outbound.quantity=4 tunnel.8.options.outproxyAuth=false tunnel.8.options.persistentClientKey=false tunnel.8.options.sslManuallySet=false tunnel.8.options.useSSL=false tunnel.8.proxyList=outproxy.acetone.i2p tunnel.8.sharedClient=false tunnel.8.startOnLoad=true tunnel.8.type=sockstunnel ``` see also #12 which will require a more advanced version of this.
idk self-assigned this 2025-04-21 14:30:57 -04:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: I2P_Developers/i2p.firefox#6
No description provided.