部署局域网内共享代理

Posted by Hsz on June 1, 2024

部署局域网内共享代理

翻墙很麻烦,但对于搞开发的来说翻墙又是必修课,本文将探讨如何在家庭局域网中通过docker部署一个公用的代理服务.

如果是单机,我们在找到合适的供应商后安装clash for windows(沉痛哀悼该项目,感谢作者的奉献),然后在profile界面导入供应商提供的url即可

clash_for_windows从url加载节点

但如果是在家庭局域网范围内,给每台机器配个代理工具显然很麻烦,况且有些设备这样配代理并不方便,因此一个比较经济合理的方法是在家庭局域网中找台常驻的机器(通常是旁路由,nas这种机器)通过docker部署一个公用的代理服务.当需要翻墙时用它做代理即可

部署

我们使用dreamacro/clash(沉痛哀悼该项目,感谢作者的奉献)这个镜像作为代理服务的客户端 要部署我们需要做如下准备

  1. 写好配置文件,可以参考这个文档,比如我就会写成

     # port: 7890 #http
     # socks-port: 7891 # sock5
     mixed-port: 7890
     redir-port: 7892 # linux和mac的redir
     allow-lan: true #允许局域网连接
     mode: Rule # 模式 Rule, Global, Direct
     log-level: silent # 日志级别 silent, info, warning, error, debug
     external-controller: "0.0.0.0:9090" # RESTfull接口路径
     secret: '' # api秘钥
    

    如果你已经在clash_for_windows中配置好了,也可以从其中导出再进行修改

    clash_for_windows导出

    点击edit之后复制其中的内容即可导出.

    之后部署到之后要挂栽的位置

  2. 写compose文件

     version: "2.4"
     x-log: &default-log
     options:
         max-size: "10m"
         max-file: "3"
     services:
     # Clash
     clash:
         image: dreamacro/clash:v1.18.0
         volumes:
         - "/volume2/docker_deploy/clash/clash/config.yaml:/root/.config/clash/config.yaml"
         ports:
         - "7890:7890"
         - "7891:7891"
         - "7892:9090"
         restart: always
         logging:
         <<: *default-log
    
     clash-dashboard:
         # dashboard
         image: haishanh/yacd:v0.3.8
         depends_on:
         - clash
         ports:
         - "7893:80"
         restart: always
         logging:
         <<: *default-log
    
  3. 找台机器部署

管理代理行为

进入你部署clash-dashboard的机器的7893端口就可以设置代理的行为了.由于一些供应商会不定期更新节点,我们也就需要在节点看着有问题后跟着重新导出配置重启clash

iphone使用

iphone使用我们需要在设置->无线局域网->指定的wifi设置->HTTP代理中设置配置代理手动且将host和port都指向clash宿主机的7890端口

浏览器使用

如果你使用的是chrome或firefox,建议安装插件SwitchyOmega,配置其中的proxy即可

SwitchyOmega

要用的时候点插件切换到proxy就可以用代理了,我们也可以在其中配置各种规则来指定哪些代理哪些不用代理

环境变量使用

linux或mac下如果是希望在命令行中暂时性的使用环境变量,建议将如下命令加入你的.bash_profile .zshrc
#==============================http_proxy
alias setproxy="export https_proxy=http://clash宿主机ip:7890;export http_proxy=http://clash宿主机ip:7890;export all_proxy=socks5://clash宿主机ip:7890"
alias unsetproxy="unset https_proxy;unset http_proxy;unset all_proxy"

这样要用的时候使用命令setproxy就可以激活使用代理,不用了就使用命令unsetproxy即可.