Linux使用TUN模式实现透明代理
树莓派做旁路由
我的树莓派作为旁路由,代理所有经过的流量,包括自己发出的请求。
编辑 /etc/sysctl.conf 文件,将 net.ipv4.ip_forward=0 修改为 net.ipv4.ip_forward=1,然后执行 sysctl -p 以使配置生效
docker中开启privileged: true
,并且clash中开启tun
模式
version: '3'
services:
clash:
image: dreamacro/clash-premium:latest
container_name: clash
volumes:
- ./clash:/root/.config/clash
restart: unless-stopped
network_mode: "host" # or "host" on Linux
privileged: true
environment:
- TZ=Asia/Shanghai
不代理本机数据
另一个Linux主机不对内部应用进行代理。
开启网卡混杂模式
ip link set enp3s0 promisc on
创建macvlan网络
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=enp3s0 \
macvlan142
version: '3'
services:
clash:
image: dreamacro/clash-premium:latest
container_name: clash_tun
volumes:
- ./clash:/root/.config/clash
restart: unless-stopped
networks:
macvlan142:
ipv4_address: 192.168.1.220
privileged: true
environment:
- TZ=Asia/Shanghai
networks:
macvlan142:
external: true
其他设备将网关改为192.168.1.220即可使用。
参考文档
Linux使用TUN模式实现透明代理
https://blog.yjll.blog/post/8852bf9.html