Refraction Networking is a free-to-use anti-censorship technology, that places proxies at Internet Service Providers, so they are harder to block. This repository implements the conjure stations system including various registration channels, transport protocols, and configuration options.
### See also [Refraction Client Library](https://github.com/refraction-networking/gotapdance) - pure golang client library for connecting to refraction systems. Implements BOTH conjure and tapdance. [Tapdance Station](https://github.com/refraction-networking/tapdance) - Tapdance station code implementing the previous iteration of refraction networking development. ## Install This is an abridged install and configuration process, for expanded install instructions, configuration options, or multi-station deployments see [the wiki](https://github.com/refraction-networking/conjure/wiki). ### Requirements Building the station requires both go and rust: - [Install Golang](https://golang.org/doc/install) - [Install Rust](https://www.rust-lang.org/tools/install) **Install packages and go libraries** ```sh sudo apt install wget git make gcc bison flex protobuf-compiler curl libssl-dev pkg-config libgmp3-dev libzmq3-dev go get -d -u -t github.com/refraction-networking/gotapdance/... ``` **Install PF_RING** 1. [Install from Package](https://github.com/refraction-networking/conjure/wiki/PF_RING#from-packages) 2. [Install From Git / Source](https://github.com/refraction-networking/conjure/wiki/PF_RING#from-source) - if installing from git / source make the zbalance_ipc executable, and ensure that it is available through your `$PATH`. ### Build the station ```sh make ## future # sudo make install ``` ### Configure The layout of configuration expected by the default layout of a production server is: ```sh ## Station specific configuration and files go in /var/lib/conjure $ tree /var/lib/conjure/ /var/lib/conjure/ ├── app_config.toml ├── ClientConf # if running the registration server locally ├── conjure.conf ├── phantom_subnets.toml ├── privkey ├── pubkey └── reg_config.toml # if running the registration server locally ## Scripts, executables, and the default environment script (conjure.conf) go in /opt/conjure $ tree /opt/conjure/ /opt/conjure/ ├── bin │ ├── application │ ├── conjure │ └── registration_server # if running the registration server locally ├── on-reboot.sh ├── scripts │ ├── install_pfring.sh │ ├── start_application.sh │ ├── start_detector.sh │ ├── start_registrar.sh │ └── start_zbalance_ipc.sh └── sysconfig └── conjure.conf # Expected by systemd services, applies overrides from /var/lib/conjure/conjure.conf ``` To run a station configuration modifications are required. This section outlines some minimal changes, for more configuration options see the [wiki configuration page](https://github.com/refraction-networking/conjure/wiki/Configuration). 1. Define global paths, core usage, and pf_ring parameters in `sysconfig/conjure.conf` ```conf # ============[ REQUIRED ]============ # The interface(s) which PF_RING Zero Copy will tap. CJ_IFACE="zc:enp179s0f0,zc:enp179s0f1" Public addresses that of non-tap interface - used for kernel DNAT IP4_ADDR="