proxychains-ng proxy setup

proxychains-ng starts a program with its TCP connections sent through a proxy, for tools that have no proxy setting of their own.

Protocols
SOCKS5 and HTTP (CONNECT), username and password in proxychains.conf
UDP
No: proxychains-ng carries TCP only (no UDP, no ICMP)
Where the setting is
[ProxyList] in proxychains.conf; the system file is /etc/proxychains4.conf on Debian and Ubuntu
Works with
Residential and mobile proxies

Before you start

  • proxychains-ng 4.x: sudo apt install proxychains4 on Debian and Ubuntu, brew install proxychains-ng on macOS. The command is proxychains4.
  • Your proxy login and password from the Residential or Mobile page of the dashboard.
  • Traffic on the product you use: a login without traffic is refused.
  • The gateway's IPv4 address: proxychains-ng accepts only a numeric IP for the first proxy in the list. The script below looks it up.
Connection details
Host
gate.aeonproxy.com
Port (HTTP / HTTPS)
7000
Port (SOCKS5)
7001
Login
your proxy login, with targeting keys if you need them: LOGIN-cc-us-sid-abc123
Password
your proxy password

Copy the login and password from the Residential or Mobile page of the dashboard; the generator there also writes ready lines. Key syntax: targeting and sessions.

Add the proxy

Test the login with curl first, so a typo in it does not look like a proxychains problem:

curl -x socks5h://LOGIN-cc-us:[email protected]:7001 https://api.ipify.org

proxychains-ng reads the first config it finds: the file in PROXYCHAINS_CONF_FILE or after -f, then ./proxychains.conf, then ~/.proxychains/proxychains.conf, then the system file. This script looks up the gateway address (with getent on Linux, dig on macOS), writes your own file and prints its proxy line:

mkdir -p ~/.proxychains
GATE_IP=$(getent ahostsv4 gate.aeonproxy.com 2>/dev/null | head -n1 | cut -d' ' -f1)
[ -n "$GATE_IP" ] || GATE_IP=$(dig +short A gate.aeonproxy.com | grep -m1 -E '^[0-9.]+$')
cat > ~/.proxychains/proxychains.conf <<EOF
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks5 $GATE_IP 7001 LOGIN-cc-us-sid-cli01-ttl-30 PASSWORD
EOF
grep socks5 ~/.proxychains/proxychains.conf
  • The printed line must show an IP address after socks5. If it does not, the lookup failed: run the script again.
  • strict_chain sends every connection through the one proxy in the list.
  • proxy_dns passes host names to the gateway, so they are resolved at the exit. The program gets a placeholder address from 224.x.x.x in the meantime.
  • For the HTTP port, the line is http $GATE_IP 7000 LOGIN PASSWORD. Both carry any TCP connection.
  • The heredoc is unquoted so that $GATE_IP expands. If your password contains $ or a backslash, edit the file by hand instead.

If the gateway address ever changes, the old IP in the file stops answering. Run the script again.

Check the proxy

proxychains4 -q curl -s https://api.ipify.org

It prints the exit IP, not yours. Without -q, proxychains writes a [proxychains] Strict chain line for each connection with the gateway address and the target, which helps when something fails.

Rotating or sticky

Each TCP connection the program opens is a new SOCKS5 session. With a rotating login every one gets a new IP: fine for a single request, but a tool that signs in and then downloads shows the site several IPs. The sticky key in the script (-sid-cli01-ttl-30) keeps one exit for 30 minutes (60 at most). For a fresh IP, change the key to cli02 or wait for the time to run out.

Programs that ignore proxychains

  • proxychains hooks dynamically linked programs. Statically linked tools (many written in Go) skip it: use their own proxy flag or HTTPS_PROXY.
  • On macOS, system binaries such as /usr/bin/curl are protected by System Integrity Protection and are not hooked. Use Homebrew's copy, for example $(brew --prefix)/opt/curl/bin/curl.
  • ping and other ICMP or UDP tools never go through a proxy. Test with curl.

If it does not work

What you seeWhat to check
proxy … has invalid value or is not numericPut the gateway's IPv4 address in [ProxyList], not its name.
… 7001 … timeout after the gateway addressThe gateway is not reachable: the address in the file is old, or a firewall blocks the port.
<--denied after the targetThe login, the password, a key that is not in the lists, or no traffic left. Or a target blocked by default: mail ports 25, 465, 587, 2525, .gov / .mil and some banking and ticketing sites (Acceptable Use Policy, section 4).
Your own IP and no [proxychains] linesThe program is statically linked or a protected macOS binary (see above).

Questions

Not as the first or only proxy. proxychains-ng accepts a host name only for later proxies in a strict chain with proxy_dns on, so look the address up and write the IP.

Yes with proxy_dns: the program gets a placeholder address and the real name goes to the gateway, which resolves it at the exit. Without it, names are resolved on your own network.

Both tunnel TCP and both send the login. SOCKS5 on port 7001 is the usual choice; HTTP on 7000 helps when a network only lets web proxy traffic out.

Proxy questions? Ask support in the live chat.