Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature requests for making redproxy-rs a fully functional Proxy Forwarder #218

Open
phantomcraft opened this issue Oct 12, 2022 · 6 comments
Labels
enhancement New feature or request

Comments

@phantomcraft
Copy link

First, I have to say that I don't want to press the author of this project for implementing this features, I only think that redproxy-rs would deserve a higher level.

I have been using this proxy forwarder for a long time: https://github.com/nadoo/glider

/\ I don't like Go programming but the program itself is great. But I'm seeking for a alternative solution, that could work with LD_PRELOAD trick more precisely (as many Go programs are not linked agains libc6).

The features that can make redproxy-rs a fully functional proxy forwarder are (not counting the features already present).

1 - Support for BIND in SOCKS5 protocol.
2 - Support for UDP ASSOCIATE in Socks5 protocol.
3 - UDP transparent proxy (TPROXY).
4 - Support HTTP GET/POST in HTTP port.

=================

1 - It would be very useful for multi-connection protocols such as FTP. ===> https://stackoverflow.com/questions/7731870/socks-4-bind-request-explanation

2 - UDP in SOCKS5 proxy would be very useful for using with Shadowsocks that supports UDP, it could allow DNS connections using pure UDP in port 53, so reducing the latency compared to TCP, and would be great for sites that use HTTP/3 (QUIC), reducing latency and bandwidth.

3 - UDP transparent proxy would allow sandboxes, containers (Docker, LXC, nedrdctl) and even Virtual Machices to access UDP services through SOCKS5 proxy (mainly Shadowsocks), useful for gaming, VOIP and maybe torrenting.

4 - It would make redproxy-rs a fully funcional HTTP proxy. ===> https://www.w3schools.com/tags/ref_httpmethods.asp

================

Thanks.

@bearice
Copy link
Member

bearice commented Oct 13, 2022

The full SOCKS5 protocol support (namely BIND and UDP ASSOC) is planned, but I cannot find a client software using those, in most cases they're only using CONNECT method. It would helpful if you can provide some use cases on this.

GET/POST in HTTP port is also planned, and will be implemented someday, well, I hope, but also PRs are welcomed.

UDP transparent proxy has already landed in #201, you may try this with v0.8.0 release.

Hope this will help. thanks.

@bearice bearice added the enhancement New feature or request label Oct 13, 2022
@phantomcraft
Copy link
Author

@bearice
Copy link
Member

bearice commented Oct 14, 2022

Well actually I means CLIENT for these protocols, for HTTP GET/POST I can simply use curl to test if the implementation works , but for SOCKS5 BIND / UDP, I don't really find anything using them.

@phantomcraft
Copy link
Author

@bearice

Well, UDP ASSOCIATE is used in Shadowsocks, here I use UDP over SOCKS5 everyday. For BIND I don't know, but it would be good to implemente because there is always someone using this feature in some way, if you find this method is irrelevant and may ignore it, but always think on potential uses.

v2ray is using BIND lately: v2ray/v2ray-core#2

v2ray is used to circumvent censorship.

===============================

I found more implementations of BIND and UDP ASSOCIATE:

In the project I posted above, UDP ASSOCIATE is implemented: https://github.com/WANG-lp/socks5-rs/blob/master/src/main.rs#L178

Here, BIND: https://github.com/EAimTY/socks5-server/search?q=BIND -- https://github.com/Idein/gatekeeper/search?q=bind

@phantomcraft
Copy link
Author

@bearice

Here I use a shadowsocks proxy with full UDP connectivity, I would like to use a redproxy QUIC proxy and send its UDP traffic through shadowsocks.

This is a potential usage of UDP ASSOCIATE.

@phantomcraft
Copy link
Author

Could you please implement BIND in SOCKS5 protocol to match v2ray/vmess?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants