青龙等服务器上使用家里宽带代理

家里没有公网ip怎么办

这种情况就跟我一样了,家里没有公网ip,那服务器怎么连家里的socks5代理呢。曲线救国,frp内网穿透。在github上面https://github.com/fatedier/frp/releases下载frp。服务器上面用到frps和frps.ini,客户端用frpc和frpc.ini

frps搭建

下载好frp之后压缩包上传到服务器上解压,修改frps.ini里面的内容

  1. [common]
  2. bind_port = frp所用的端口
  3. bind_addr = 0.0.0.0
  4. token = 设置自己的token
  5. dashboard_port = frp面板的端口
  6. dashboard_user = 面板用户名
  7. dashboard_pwd = 面板密码
  8. subdomain_host = frp用的泛域名
  9. vhost_http_port = http穿透的端口

还需让frps能够开机自启,所以新建一个frps.service

  1. vi /lib/systemd/system/frps.service

内容如下

  1. [Unit]
  2. Description=fraps service
  3. After=network.target network-online.target syslog.target
  4. Wants=network.target network-online.target
  5. [Service]
  6. Type=simple
  7. #启动服务的命令(此处写你的frps的实际安装目录)
  8. #例如我服务器上的frps位于/root/frp/下面
  9. #那么我得ExecStart=/root/frp/frps -c /root/frp/frps.ini
  10. ExecStart=/your/path/frps -c /your/path/frps.ini
  11. [Install]
  12. WantedBy=multi-user.target

好了这样就可以使能开机自启了

先启动frps

  1. systemctl start frps

使能开机自启

  1. systemctl enable frps

下一步,在玩客云上面配置frpc

玩客云是armv7架构,frp下载的时候要下载对应的架构,同样也是上传玩客云里解压出来,不过这回需要修改的是frpc.ini

内容如下

  1. [common]
  2. server_addr = //这里填frps服务器的地址或者域名
  3. server_port = //frps上配置的使用端口,注意是使用端口不是http和https穿透端口也不是面板端口
  4. token = //这个填frps服务器对应的token
  5. login_fail_exit = false
  6. [socks5]
  7. type = tcp
  8. local_ip = 127.0.0.1
  9. local_port = 本地端口,如我用的socks513200则这里填13200
  10. remote_port = 远程服务器上的端口号,即你想在frps上开放的端口号,这里我填的14200

同样需要配置开机自启,参照上面建立frpc.service即可,即将frps改成frpc

服务器上面polipo配置代理

服务器防火墙记得开放对应端口,我配置的远程端口为14200,即防火墙开放14200(这里云服务商提供的防火墙可以不用开放,只需要开放服务器系统上的防火墙)。查了些相关资料发现socks5并不是所有服务都能使用的,有的服务还不支持使用带用户认证的socks5,所以我选择用polipo将socks5转变成http在服务器上面使用(疯狂套娃)。

虽然ubuntu好像可以直接apt install polipo

不过我没试过,反正我在Debian上自带的软件源没法直接安装polipo,干脆编译安装吧

  1. git clone https://ghproxy.com/github.com/jech/polipo.git /root/polipo
  2. cd /root/polipo
  3. make all
  4. su -c 'make install'

在这里执行make的时候可能会报错,自己看一下

如果提示make cc:命令未找到

  1. make install gcc
  2. make install gcc-c++

如果make : makeinfo : 命令未找到

  1. yum install texinfo或者apt install texinfo

解决完报错后重新执行

  1. make all
  2. su -c 'make install'

再建立一下polipo的配置文件

  1. mkdir /opt/polipo
  2. vi /opt/polipo/config

内容如下

  1. logSyslog = true
  2. logFile = /var/log/polipo.log
  3. socksParentProxy = "socks5服务端ip:端口" //因为我用了frp内网穿透,所以这里我填的127.0.0.1:14200
  4. socksProxyType = socks5
  5. proxyPort = polipo的服务端口,自己设定一个 //这里我使用14300端口
  6. proxyAddress = "0.0.0.0"

同样记得服务器自身系统防火墙开放14300端口。对于polipo的后台运行,可以参考建立polipo.service,不过这里我就要用pm2,就是玩。

  1. pm2 start “/root/polipo/polipo -c /opt/polipo/config

这样就可以给服务器配置对应的http代理,也可以用curl检测下你的端口是否是对应的代理,我这里就是检测服务器的14300端口

  1. curl --connect-timeout 2 -x 127.0.0.1:14300 cip.cc

正确无误的话,应该显示的是家里的ip

青龙等容器使用代理

青龙好像是可以通过自身的配置文件去使用代理,不过我还是用通用的方法,即docker run命令上添加-e环境变量

比如青龙的docker run命令

  1. docker run -dit \
  2. -v /home/qinglong:/ql/data \
  3. -p 5700:5700 \
  4. -e http_proxy="http://172.17.0.1:14300" \
  5. -e https_proxy="http://172.17.0.1:14300" \
  6. --name qinglong \
  7. --hostname qinglong \
  8. --restart unless-stopped \
  9. whyour/qinglong:latest

这里的172.17.0.1其实指的是docker里面宿主机的ip也就是服务器系统本体。对于有的项目需要验证ip,用家宽代理ip总会变化可能会造成封掉授权,所以需要额外添加-e no_proxy参数,即-e no_proxy="验证中心域名"防止在验证授权的时候ip总在变化。

这个方法很套娃了,谁让我本地没啥好机器跑呢,手套就有玩客云,和香橙派zero,还都是老arm32位的机器,又没公网ip,难顶的很。

THE END