前言

我在宝塔运行的青龙Docker需要访问外网,想起来了上次使用的Clash,于是在Docker运行了一下Clash,让青龙使用Clash的代理,此篇文章仅作笔记用途。

开始

登录进入宝塔,点击Docker=>网络=>添加网络,按照图示填写后添加

之后我们的青龙容器的网络也需要设置为clash代理,并且ip地址是172.0.0.3

开始拉取镜像

本地镜像=>从仓库中拉取
输入镜像名称dreamacro/clash:latest开始拉取

创建容器

挂载/映射中要选择本机目录,并且挂载目录容器目录都是/root/.config/clash,权限是读写(如果目录不存在会自动创建)
并且网络需要选择clash代理,地址为172.0.0.2

其他按照图示填写后保存,容器会自动开始运行,日志如下:

如果MMDB下载失败,可查看上一个帖子,手动下载MMDB放到Linux的/root/.config/clash目录后,重启Clash的Docker

添加订阅地址

然后添加上订阅地址,接下来打开Linux目录/root/.config/clash,在此处运行Linux命令wget -O ~/.config/clash/config.yaml "订阅地址",让终端下载后保存为config.yaml文件。

订阅地址应该使用Clash专用的地址,具体可询问购买商家

再次重启一下Clash,查看一下日志

可以看到已经读取到了我们的线路

接下来就是最后的步骤,设置Web控制面板以及Clash的允许IP

* 设置Web控制面板

Linux中安装Clash并且实现全局代理(纯命令行)番外,有详细讲解

* 修改允许IP

可以发现此时的clash监听的是本机的7890端口,因此目前青龙是无法使用的,需要修改为监听来自所有ip的7890端口
打开Linux目录/root/.config/clash,找到config.yaml文件打开,修改后保存

  • allow-lantrue
  • 注释bind-address
  • mixed-port设置为:7890

    重启即可。

验证代理

验证是否已经可以使用代理了,这里提供两种方法
  • 打开青龙Docker的终端,使用http://172.0.0.2:7890代理访问goole之类的网站测试是否能够正常访问
    curl --proxy http://172.0.0.2:7890 http://www.google.com.hk

    成功返回的HTML,代表代理成功
  • 在青龙Web面板中写一个使用代理的py代码

    可以返回HTML,即带代表代理成功

问题解决

如果代理失败,请检查
  • 青龙Docker和Clash的Docker是否在同一个网络中
  • Clash的Docker是否已经允许所有的ip
    1. 打开Clash的Docker,如果Bash类型的shell启动失败的话,可以使用sh的shell

    2. 在终端中输入netstat -tuln来查看,如果7890端口是127.0.0.1代表只允许本地,正确的应该是:::7890
      ················
      Proto Recv-Q Send-Q Local Address           Foreign Address         State       
      tcp        0      0 :::7890                 :::*                    LISTEN      
      tcp        0      0 :::9090                 :::*                    LISTEN
      ················

By admin

发表回复