翻墙回国:Linux单臂路由和透明代理-细节
上篇讲了讲原理,这个文章记录一下细节。 一、远程服务器 腾讯Cloud现在有活动,99一年,500G月流量。装shadowsocks-libev和dnsmasq. shadowsocks是代理服务器,dnsmasq提供中国境内的DNS解析。 # dnsmasq.conf port=7753 bind-interfaces Config.json for shadowsocks { "server": "0.0.0.0", "server_port": 7788, "password": "ABCDefghijklmnopq", "method": "chacha20-ietf-poly1305", "timeout": 600, "no_delay": true, "mode": "tcp_only" } 二、本地Linux 首先Enable routing:然后sysctl -p使之生效 # /etc/sysctl.conf net.ipv4.ip_forward=1 创建一个所有中国IP的ipset: curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > chnroute.txt sudo ipset create chnroute hash:net cat chnroute.txt | sudo xargs -I ip ipset add chnroute ip 设置所有的中国IP都转发到本机的7892端口,clash的redir端口。 # 在 nat 表中创建新链 iptables -t nat -N SHADOWSOCKS # X.X.X.X 是远程shadowsocks的地址,不用转发它,否则该死循环了 iptables -t nat -A SHADOWSOCKS -d X.X.X.X -j RETURN # 局域网地址 iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN # 所有的中国IP去本机7892端口 iptables -t nat -A SHADOWSOCKS -p tcp -m set --match-set chnroute dst -j REDIRECT --to-ports 7892 # 把这个Chain放在PREROUTING里 iptables -t nat -I PREROUTING -p tcp -j SHADOWSOCKS 设置clash代理 ...