在树莓派上搭建全局透明代理网关

原文地址: https://blog.newnius.com/setup-global-proxy-with-raspberry-pi.html

 

新剁手了一个Google Home mini,需要科学上网才能正常使用,而 home 本身不支持设置代理,所以需要在网关上动手。正好一直使用树莓派当路由器,所以尝试把树莓派打造成一个带有智能转发功能的透明网关,即国内的 IP 直连,海外的 IP 走代理加速。

配置无线网络

本文关注点不在此,所以一笔带过。

可以通过一键安装脚本 pi-setup-wifi.sh 来安装和配置树莓派的无线。该脚本会创建一个名为SSID,密码为PASSWORD的无线网络,使用的网段为 192.168.68/24

启动 TCPDNS 服务来避免 DNS 污染

出于性能和速度的考虑, DNS 协议使用了 UDP 这种不可靠的协议,这使得 DNS 解析污染出现,即被中间路由截获并返回了虚假的 IP 地址,因此我们需要建立一个可靠的 DNS 解析服务。

 

本文所采用的是 Tcp-DNS-proxy,它对客户端而言是透明的,与上游 DNS 服务器之间的通信采用了 TCP 协议。可以用其他工具替代。

git clone https://github.com/henices/Tcp-DNS-proxy.git

编辑配置文件 tcpdns.json.example,把端口修改成5353,修改DNS列表,只保留8.8.8.8/8.8.4.4,因为国内的 DNS 本身就已经被污染了,即使通信可靠,结果也是不可靠的。

sudo mv Tcp-DNS-proxy /usr/local

修改 DNS 服务器

编辑配置文件 /etc/dnsmasq.conf,在末尾添加

no-resolv
server=127.0.0.1#5353

不同网络层之间协议转换

安装 redsocks 来把无线网卡的流量转发到 socks5 代理,这本质上是转换两个不同网络层的流量。

sudo apt install -y redsocks

编辑配置文件 /etc/redsocks.conf

redsocks {
	local_ip = 0.0.0.0;
	local_port = 12345;	
	ip = 127.0.0.1;
	port = 1080;
}

 

这里假设已经有一个开放在 1080 端口的 socks5 服务,可以使用 Shadowsocks 来创建一个。

重启 redsocks 以使配置生效

sudo service redsocks restart

你可能感兴趣的:(在树莓派上搭建全局透明代理网关)