Categorygithub.com/codercms/freebind-proxy
repository
0.0.0-20241030205033-c624de0ce4a4
Repository: https://github.com/codercms/freebind-proxy.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# 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"
    

Refs