Ubuntu 使用 tuns2socks 搭建透明网关

1,771 阅读2分钟

一、安装tun2socks

  1. 下载 tun2socks 压缩包
wget https://github.com/xjasonlyu/tun2socks/releases/download/v2.5.2/tun2socks-linux-amd64.zip
  1. 解压缩 tuns2socks 压缩包
unzip tun2socks-linux-amd64.zip
  1. 将 tun2socks 添加为可全局执行的命令
mv tun2socks-linux-amd64 tun2socks
sudo mv tun2socks /usr/local/bin/
sudo chmod +x /usr/local/bin/tun2socks
  1. 查看 tun2socks 是否能正常运行
tun2socks -h

输出如下内容说明正常:

image.png

二、配置 IP 转发

  1. 打开并编辑 sysctl 配置文件:
vim /etc/sysctl.conf
  1. 找到(或添加)以下行,将其取消注释并设置为 1:
net.ipv4.ip_forward=1
  1. 应用更改
sudo sysctl -p

三、使用 tun2socks 启动全局代理

  1. 创建TUN接口并分配IP地址:
sudo ip tuntap add mode tun dev tun0
sudo ip addr add 198.18.0.1/15 dev tun0
sudo ip link set dev tun0 up
  1. 删除现有默认路由:
sudo ip route del default
  1. 添加主要默认路由:
sudo ip route add default via 198.18.0.1 dev tun0 metric 1
  1. 添加备用默认路由(使用 172.29.0.1 作为网关):ip route 查看部署之前的默认路由为 default via 172.29.0.1 dev eth0 proto dhcp metric 100
sudo ip route add default via 172.29.0.1 dev eth0 metric 10
  1. 启动tun2socks并绑定到主接口,准备一个 socks5 代理,以 192.168.0.100:7890 为例,执行以下代码即可运行一个全局代理:
sudo tun2socks -device tun0 -proxy socks5://192.168.0.100:7890 -interface eth0
  • sudo: 以超级用户权限运行命令。

  • tun2socks: 运行 tun2socks 工具的命令。

  • -device tun0: 指定使用的 TUN 设备,在此例中为 tun0

  • -proxy socks5://192.168.0.100:7890: 指定 SOCKS5 代理服务器,位于 192.168.0.100 的端口 7890

  • -interface eth0: 指定使用的网络接口,在此例中为 eth0

执行结果如下:

image.png

  1. 禁用rp_filter(如有必要):
sudo sysctl net.ipv4.conf.all.rp_filter=0
sudo sysctl net.ipv4.conf.eth0.rp_filter=0

四、配置相同局域网下的其他设备的网关为当前设备

image.png

如图所示:配置其他设备172.29.3.67的网关地址为 172.29.3.66,子网掩码为:255.255.255.0,DNS服务器地址为: 172.29.3.66

至此即可在172.29.3.67通过172.29.3.66联网。