无名阁
Linux下面通过redsocks进行全局代理
2016-12-24 笑看风云


临近圣诞节,steam展开了剁手模式,一时忍不住入手无主之地2这个游戏,但是不知道为啥,用国内的下载点总是下载几分钟就断流,Linux下面例如tsocks,之类的代理软件都不能让steam走代理,于是只好用redsocks进行全局代理来加速steam的下载。



首先下载下载redsocks:


sudo apt install redsocks



然后编辑/etc/redsocks.conf文件把:
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";
}




上面配置中的port这个设置成你的代理的监听的端口。






然后就是最重要的iptables转发规则了,我们创建一个文件夹:


sudo mkdir /etc/redsocks



然后分别创建两个文件一个是start.sh,一个是stop.sh文件;






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



stop里面写入下面内容:
#!/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



接着把redsocks的启动脚本/lib/systemd/system/redsocks.service修改成这样:
[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





评论:
番茄小姐姐
2018-09-26 02:22 回复
全局代理不如全局加分流https://github.com/net-reflow/reflow 同时支持dns走socks代理
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容