无名阁

美好的生活需要用心记录

Linux下面通过redsocks进行全局代理

2016-12-24 笑看风云 linux知识

临近圣诞节,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


标签: 网络 Linux 网络代理

et_highlighter51

评论:

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

发表评论: