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即可使用。

参考文档

clashindocker


Linux使用TUN模式实现透明代理
https://blog.yjll.blog/post/8852bf9.html
作者
简斋
发布于
2025年1月8日
许可协议