Skip to content

High performance SOCKS5 and HTTP proxy server with support for mixed IPv6 and IPv4 configuration

License

Notifications You must be signed in to change notification settings

maurice2k/moproxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

moproxy

moproxy is a high performance SOCKS5 (RFC1928) and HTTP proxy server written in Golang. It uses tcpserver as a basis.

THIS CODE IS NOT YET PRODUCTION READY. As always, use at your own risk :)

Features

  • IPv4 and IPv6 support (also IPv4 to IPv6 and vice versa)
  • Access rules (from/to IP ranges)
  • Support for username/password authentication
  • Timeouts for various stages
  • CONNECT command (normal SOCKS5 proxy usage)
  • BIND command (required for i.e. non-PASV FTP)
  • TCP FastOpen (TFO) support for remote connections with Linux Kernel 4.11+
  • Config reloading (using SIGHUP)

Development/Testing

Run moproxy using from repository's base directory

# go run bin/moproxy.go -vvvv

Installation

Installing moproxy is pretty simple using make. It only requires Go 1.13 (or better) to be installed on your system.

# make
# make install

This builds and installs moproxy to /opt/moproxy by default and registers a systemd service with the name moproxyto start, reload and stop the service.

You need to copy moproxy.conf.dist to moproxy.conf within /opt/moproxy/configs and adjust it to your needs prior to starting the service. The config file is in JSON format with documentation and examples as comments.

TODOs

  • Logging to SQLite
  • JSON status page
  • Support for more flexible authenticators (squid style)
  • Maybe support SOCKSv6

License

moproxy is available under the MIT license.

About

High performance SOCKS5 and HTTP proxy server with support for mixed IPv6 and IPv4 configuration

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published