If you want your client connected to a Japan VPS, but you want a US IP.

Client <--> Japan VPS <--> US VPS


Easy version:

Setup Shadowsocks server as usual on US VPS.

On Japan VPS, enable forwarding. Replace US_VPS_IP and JAPAN_VPS_IP with actual IP:

sudo su

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -p tcp --dport 8388 -j DNAT --to-destination US_VPS_IP:8388

iptables -t nat -A POSTROUTING -p tcp -d US_VPS_IP --dport 8388 -j SNAT --to-source JAPAN_VPS_IP

Set your server to JAPAN_VPS_IP:8388 on your client.


Better version:

For those who want more control and better performance, use haproxy instead. You can also enable load balance by adding multiple servers.

For Debian 7.0:

On Japan VPS. Append the following line to /etc/apt/sources.list

deb http://ftp.us.debian.org/debian/ wheezy-backports main


apt-get install haproxy

Edit /etc/haproxy/haproxy.cfg



ulimit-n  51200


        log global

        mode    tcp

        option  dontlognull

        contimeout 1000

        clitimeout 150000

        srvtimeout 150000

frontend ss-in

        bind *:8388

        default_backend ss-out

backend ss-out

        server server1 US_VPS_IP:8388 maxconn 20480

Then run

haproxy -f /etc/haproxy/haproxy.cfg