如何用tun2socks更优雅的实现Linux全局代理(转)
tun2socks
tun2socks分支有相当多,如下
go-tun2socks(Golang版本)
badvpn-tun2socks(C版本 内存占用小)
安装
badvpn安装很简单,官方有binary源
badvpn下载binary源
不过更新速度好像比较慢,还是直接编译源码方便
先安装依赖
apt install libnss3-dev build-essential make cmake net-tools git
然后一键编译
git clone https://github.com/ambrop72/badvpn.git && cd badvpn && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=/usr && make install
编译完了就能用了。但还需要自己添加一个tun网卡,需要开启Linux tun/tap支持
为了偷懒,我把这些写成一键脚本
新建一个文件,自动添加网卡,这样就不需要每次手动添加了,或者自己去新建一个/etc/network/里面的配置文件,/etc/init.d/tun2s,名字随意,一定要在/etc/init.d/目录
给这个文件添加以下内容
#!/bin/bash ### BEGIN INIT INFO # Provides: tun2s # Required-Start: $network $syslog # Required-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: fast and reliable load balancing reverse proxy # Description: This file should be used to start and stop haproxy. ### END INIT INFO ip tuntap add dev tun2 mode tun ifconfig tun2 192.168.168.0/24 netmask 255.255.255.0 route add default gw 192.168.168.2
192.168.168.0那个可以改,如果被占用你就改个其他的
然后再新建一个文件,/etc/systemd/system/tun2socks.service,使用systemd守护tun2socks防止挂彩
添加以下内容
[Unit] Description=tun2socks After=network.target Wants=network.target [Service] Type=simple #PIDFile=/run/tun2socks.pid User=root Group=root ExecStart=/usr/bin/badvpn-tun2socks --netif-ipaddr 192.168.168.2 --netif-netmask 255.255.255.0 --socks-server-addr "192.168.xx.1:8888" --tundev "tun2" Restart=always # Don't restart in the case of configuration error RestartPreventExitStatus=23 [Install] WantedBy=multi-user.target
tun2改成你tun网卡名字,netif改成你在上面填的虚拟子网段,socks-server-addr改成你的虚拟机网段,:8888改成你的socks5端口
然后添加开机启动
update-rc.d tun2s(或者你自己改的名字) defaults
systemctl enable tun2socks