repository
0.0.0-20241030205033-c624de0ce4a4
Repository: https://github.com/codercms/freebind-proxy.git
Documentation: pkg.go.dev
# README
Go IP_FREEBIND HTTP Proxy
A Go implementation of an HTTP Proxy that leverages the IP_FREEBIND
socket option to randomize the source IP address for outgoing HTTP requests.
This proxy is compatible with both IPv6 and IPv4 subnets.
Features
- Randomized Source IPs: Makes HTTP requests with randomized IPs from a specified subnet
- IPv6 & IPv4 Support: Works seamlessly across IPv6 and IPv4 environments
- Flexible Usage: Can be used as either a standalone binary or embedded as a library
Requirements
- Linux (due to the reliance on
IP_FREEBIND
) - Correctly assigned and configured network subnet on the machine
Setup
Assume your ISP has assigned the subnet 2a00:1450:4001:81b::/64
to your server.
In order to make use of freebinding, you first need to configure the Linux AnyIP kernel feature in order to be able to bind a socket to an arbitrary IP address from this subnet as follows:
ip -6 route add local 2a00:1450:4001:81b::/64 dev lo
Installation
-
As a Standalone Binary:
go install github.com/codercms/freebind-proxy/cmd/freebind-proxy@latest
-
As an Embeddable Library:
go get github.com/codercms/freebind-proxy
Usage
-
Run as a Binary: After installation, execute the binary from your $GOPATH/bin:
freebind-proxy -net 2a00:1450:4001:81b::/64
See
-help
for more options -
Embed as a Library: Import and use in your Go project:
import "github.com/codercms/freebind-proxy/proxy"