树莓派搭建透明代理ss-redir+ss-tproxy

平台:树莓派3B+
系统:Ubuntu Mate18.04


详细操作见最后的参考链接

Part 1 安装tproxy所需依赖(根据运行提示安装)

ipset

sudo apt install ipset

chinadns

wget https://github.com/shadowsocks/ChinaDNS/releases/download/1.3.2/chinadns-1.3.2.tar.gz
tar xf chinadns-1.3.2.tar.gz
cd chinadns-1.3.2/
./configure
make && make install

Part2 安装tproxy

git clone https://github.com/zfl9/ss-tproxy
cd ss-tproxy
cp -af ss-tproxy /usr/local/bin
chmod 0755 /usr/local/bin/ss-tproxy
chown root:root /usr/local/bin/ss-tproxy
mkdir -m 0755 -p /etc/ss-tproxy
cp -af ss-tproxy.conf gfwlist.* chnroute.* /etc/ss-tproxy
chmod 0644 /etc/ss-tproxy/* && chown -R root:root /etc/ss-tproxy

Part3 修改配置文件

文件地址/etc/ss-tproxy/ss-tproxy.conf
model模式最简单修改为global
根据实际情况修改proxy配置段中代理软件的相关信息
proxy_server 用来填写服务器的地址(外网vps的地址)
proxy_dports 用来填写要放行的服务器端口
proxy_runcmd 是用来启动代理软件的命令,此命令不可以占用前台(意思是说这个命令必须能够立即返回),否则 ss-tproxy start 将被阻塞;proxy_kilcmd 是用来停止代理软件的命令。proxy_runcmd 和 proxy_kilcmd 的常见的写法有:

# ss-libev 透明代理
# 假设服务器信息如下:
# 服务器地址: ss.net
# 服务器端口: 8080
# 加密方式:   aes-128-gcm
# 用户密码:   passwd.ss.net
# 监听地址:   0.0.0.0
# 监听端口:   60080
# proxy_runcmd 如下:
(ss-redir -s ss.net -p 8080 -m aes-128-gcm -k passwd.ss.net -b 0.0.0.0 -l 60080 -u --reuse-port --no-delay --fast-open </dev/null &>>/var/log/ss-redir.log &)
# proxy_kilcmd 如下:
kill -9 $(pidof ss-redir)

PS:即将括号内的命令补全后代替(cmd…)
特别注意,ss-redir、ssr-redir 的监听地址必须要设置为 0.0.0.0(即 -b 0.0.0.0),不能为 127.0.0.1,也不能省略
ipts_non_snat 设为 true

Part 3 启动

 ss-tproxy start

内网其他主机修改配置取消自动配置,手动添加ipv4 地址,前缀为255.255.255.0,网关和dns为树莓派地址例如192.168.8.170


参考链接:
https://www.zfl9.com/ss-redir.html

树莓派3B+安装SS

平台:树莓派3B+;
系统:Ubuntu MATE 18.04


最近配置好树莓派后,准备将SS加入到树莓派中,准备将树莓派作为内网的透明代理,进行端口映射后,内网其他主机全部通过树莓派翻墙,第一部就是先要安装SS-libev


PART 1

shadowsocks-libev包含ss-redir指令,用于透明代理,所以必须安装该版本;

sudo apt install shadowsocks-libev

安装完成后最好设置一个配置文件方便后续修改配置config.json,具体函数不做解释,相关文档很多

{
    "server":"my_server_ip",
    "server_port":8388,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"mypassword",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

服务器端记得也要设置好,调试阶段可一直运行,方便查看log:

ss-local -c /etc/shadowsocks.json

后台运行,根据情况添加sudo

sslocal -c /etc/shadowsocks.json -d start
sslocal -c /etc/shadowsocks.json -d stop

Part 2

运行ss后,只能浏览器使用sock5代理,为了让全局使用,需要用privoxy将socks5代理转为HTTP代理

sudo apt install privoxy

配置privoxy

sudo vim /etc/privoxy/config

找到listen-address 127.0.0.1:8118,确定没有注释符号#,大概在783行
找到#forward-socks5t / 127.0.0.1:9050 .在下面添加一行forward-socks5t / 127.0.0.1:1080 .
表示转发请求到本地1080端口,1080端口为SS监听端口(根据实际情况修改).大概在1337行
配置完成后重启服务

systemctl restart privoxy

修改系统设置中的Network Proxy,选择手动,http,https,ftp Proxy全部配置为127.0.0.1端口8118,socks proxy配置为127.0.0.1,端口1080

PS:
记得ufw allow 8118等端口