临近圣诞节,steam展开了剁手模式,一时忍不住入手无主之地2这个游戏,但是不知道为啥,用国内的下载点总是下载几分钟就断流,Linux下面例如tsocks,之类的代理软件都不能让steam走代理,于是只好用redsocks进行全局代理来加速steam的下载。
首先下载下载redsocks:
sudo apt install redsocks
redsocks {
/* `local_ip' defaults to 127.0.0.1 for security reasons,
* use 0.0.0.0 if you want to listen on every interface.
* `local_*' are used as port to redirect to.
*/
local_ip = 127.0.0.1;
local_port = 12345;
// `ip' and `port' are IP and tcp-port of proxy-server
// You can also use hostname instead of IP, only one (random)
// address of multihomed host will be used.
ip = 127.0.0.1;
port = 10086;
// known types: socks4, socks5, http-connect, http-relay
type = socks5;
// login = "foobar";
// password = "baz";
}
然后就是最重要的iptables转发规则了,我们创建一个文件夹:
sudo mkdir /etc/redsocks
start里面写入一下内容:
#!/bin/bash
#不重定向目的地址为服务器的包
#请用你的shadowsocks服务器的地址替换$SERVER_IP
sudo iptables -t nat -A OUTPUT -d $SERVER_IP -j RETURN
#不重定向私有地址的流量
sudo iptables -t nat -A OUTPUT -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A OUTPUT -d 172.16.0.0/16 -j RETURN
sudo iptables -t nat -A OUTPUT -d 192.168.0.0/16 -j RETURN
#不重定向保留地址的流量,这一步很重要
sudo iptables -t nat -A OUTPUT -d 127.0.0.0/8 -j RETURN
#重定向所有不满足以上条件的流量到redsocks监听的12345端口
#12345是你的redsocks运行的端口,请根据你的情况替换它
sudo iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-ports 12345
#!/bin/bash
#不重定向目的地址为服务器的包
#请用你的shadowsocks服务器的地址替换$SERVER_IP
sudo iptables -t nat -D OUTPUT -d $SERVER_IP -j RETURN
#不重定向私有地址的流量
sudo iptables -t nat -D OUTPUT -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -D OUTPUT -d 172.16.0.0/16 -j RETURN
sudo iptables -t nat -D OUTPUT -d 192.168.0.0/16 -j RETURN
#不重定向保留地址的流量,这一步很重要
sudo iptables -t nat -D OUTPUT -d 127.0.0.0/8 -j RETURN
#重定向所有不满足以上条件的流量到redsocks监听的12345端口
#12345是你的redsocks运行的端口,请根据你的情况替换它
sudo iptables -t nat -D OUTPUT -p tcp -j REDIRECT --to-ports 12345
sudo chmod +x /etc/redsocks/*.sh
[Unit]
Description=Redsocks transparent SOCKS proxy redirector
After=network.target
[Service]
Type=forking
EnvironmentFile=/etc/default/redsocks
ExecStartPre=/etc/redsocks/start.sh
ExecStartPre=/usr/sbin/redsocks -t -c ${CONFFILE}
ExecStart=/usr/sbin/redsocks -c ${CONFFILE}
ExecStopPost=/etc/redsocks/stop.sh
[Install]
WantedBy=multi-user.target
最后关闭redsocks的开机自启,现在redsocks的全局代理功能就弄好了,需要的时候直接通过systemd启动关闭redsocks就行了。
ps:注意我这个是为了加速steam下载,不是为了翻墙,启用全局代理之后dns污染依旧存在,所以被墙网站依旧无法正常打开,想要正常使用你需要自己加一个DNS清理工具,例如Pcap_DNSProxy