要让docker容器流量经过在其他设备上的clash网关,可以按照以下步骤进行操作:

  1. 在其他设备上安装并配置好clash网关,确保可以正常使用。

  2. 在docker主机上创建一个docker网络,例如:

    docker network create --subnet=172.30.0.0/16 my-network
    

    这里假设使用了172.30.0.0/16网段。

  3. 启动一个clash容器,并将其加入到上面创建的docker网络中:

    docker run -d --name clash --net my-network --ip 172.30.0.2 -v /path/to/clash/config:/root/.config/clash clash
    

    这里假设clash容器的IP地址为172.30.0.2,配置文件路径为/path/to/clash/config。

  4. 启动其他需要访问网络的容器,并将它们加入到上面创建的docker网络中:

    docker run -d --name my-container --net my-network my-image
    

    这里假设需要访问网络的容器名为my-container,使用了my-image镜像。

  5. 在其他设备上配置好clash网关的规则,确保能够正常代理流量。

  6. 在docker主机上配置iptables规则,将容器流量转发到clash容器:

    iptables -t nat -A POSTROUTING -s 172.30.0.0/16 -j MASQUERADE
    iptables -t nat -A PREROUTING -i docker0 -p tcp -j DNAT --to-destination 172.30.0.2:7890
    iptables -t nat -A PREROUTING -i docker0 -p udp -j DNAT --to-destination 172.30.0.2:7890
    

    这里假设clash容器的代理端口为7890。

  7. 现在容器的流量就会经过在其他设备上的clash网关了。可以通过在容器中执行curl等命令测试是否正常访问网络


原文地址: https://www.cveoy.top/t/topic/fiTF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录