静看光阴荏苒
不管不顾不问不说也不念

shadowsocks透明代理

V2Ray的透明代理水完了,再水一篇Shadowsocks的透明代理配置篇。。

Shadowsocks配置透明代理需要注意的是要解决DNS污染的问题,而V2Ray不存在这个问题,因为V2Ray有一个sniffing的功能,可以从流量中探测出正确的域名。以往用Shadowsocks做透明代理时,还需要额外装一堆软件,比如DNSMasq/ChinaDNS等等,就是为了解决DNS污染的问题。

现在我们可以用overture代替上面提到的那些软件,只需要简单配置一下即可自建一个无污染的DNS服务,详细配置可以参考:

overture:自建无污染的DNS服务

待你搭建好了一个无污染的DNS服务后,再继续往下看本文。

首先我们在自己的VPS(翻墙服务器)以及网关机器(透明代理服务器)上都安装shadowsocks-libev,注意是libev这个版本,其他的版本例如python版本是没有ss-redir这个透明代理工具的。

这里我用的是Debian9和Ubuntu18.04,所以只需要使用包管理器即可简单安装:

apt -y update
apt -y install shadowsocks-libev libsodium-dev

首先来配置服务端,在VPS上编辑如下配置文件:

nano /etc/shadowsocks-libev/config.json

类似我的配置如下:

{
    "server":"0.0.0.0",
    "server_port":23333,
    "local_port":1080,
    "password":"你的SS连接密码",
    "timeout":60,
    "method":"chacha20-ietf-poly1305"
}

保存配置之后重启shadowsocks-libev以及设置开机自启:

systemctl restart shadowsocks-libev
systemctl enable shadowsocks-libev

接下来配置网关机器,在网关上首先停止shadowsocks-libev运行:

systemctl stop shadowsocks-libev

然后新建一个用于透明代理的配置文件:

nano /etc/shadowsocks-libev/config-redir.json

类似我的配置如下:

{
    "server":"VPS公网IP",
    "mode":"tcp_and_udp",
    "server_port":23333,
    "local_address": "0.0.0.0",
    "local_port":10801,
    "password":"你的SS连接密码",
    "timeout":60,
    "method":"chacha20-ietf-poly1305"
}

接着新建一个systemd服务文件:

nano /lib/systemd/system/shadowsocks-redir.service

写入如下配置:

[Unit]
Description=Shadowsocks-libev Redir Service
After=network-online.target

[Service]
Type=simple
User=nobody
Group=nogroup
LimitNOFILE=32768
ExecStart=/usr/bin/ss-redir -c /etc/shadowsocks-libev/config-redir.json

[Install]
WantedBy=multi-user.target

启动ss-redir:

systemctl start shadowsocks-redir
systemctl enable shadowsocks-redir

现在ss-redir这块的配置就完成了,让我们在网关机器上做一点善后工作。

开启IPv4转发:

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p

安装ipset/创建ipset链/将中国ip加入到链:

apt -y install ipset
wget https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt
ipset -N cn hash:net
for i in $(cat china_ip_list.txt); do ipset -A cn $i; done

使用iptables处理流量/中国IP直连:

iptables -t nat -N SHADOWSOCKS
iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A SHADOWSOCKS -p tcp -m set --match-set cn dst -j RETURN
iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 10801
iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS

如果有一些应用,例如BT你不想让它走代理可以将上面的最后一条命令改为下面这样,即自己指定端口,设置让哪些端口走代理:

iptables -t nat -A PREROUTING -p tcp --dport 22 -j SHADOWSOCKS
iptables -t nat -A PREROUTING -p tcp --dport 80 -j SHADOWSOCKS
iptables -t nat -A PREROUTING -p tcp --dport 443 -j SHADOWSOCKS

最后,局域网内的其他机器,配置网关/DNS为这台网关机器的IP即可:

赞(5)
未经允许不得转载:荒岛 » shadowsocks透明代理
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿