如果搭建了一个socks5代理,在内网情况下,为了方便使用,是无需输入账号密码的。但是如果需要将socks5代理开放到公网环境,例如:访问家庭nas、访问局域网其他服务等等,无密码会带来安全隐患
所以需要socks5代理具备以下特点:
- 局域网内连接无需密码
- 公网连接必须验证密码后才可使用
前提
假设已经搭建完成一个 socks5 代理。例如借助 clash 、ss或者其他工具在路由器中搭建好了 socks5代理
此代理无需设置密码,也就是供局域网内连接使用
假设此代理的端口是 7890 ,后续3proxy将转发代理到此端口
安装3proxy 代理工具
现在需要使用 3proxy ,为局域网内 socks5代理添加一层密码授权功能
安装 3proxy
此工具需要编译安装,并没有被添加到 apt 源
mkdir -p ~/3proxy
cd ~/3proxy
wget https://github.com/3proxy/3proxy/releases/download/0.9.4/3proxy-0.9.4.tar.gz
tar -xzf 3proxy-0.9.4.tar.gz
cd 3proxy-0.9.4
make -f Makefile.Linux
mkdir -p ~/3proxy/bin
cp src/3proxy ~/3proxy/bin/
编译完成后,可执行二进制文件在 bin
目录下。复制到自己的运行环境即可
配置文件
此配置文件为 3proxy 创建了一个端口,同时设置了密码授权验证,然后将代理请求转发到上游 socks5
3proxy.cfg
配置文件内容 :
# 日志文件,存储在用户目录
# log ./3proxy.log
allow *
fakeresolve
# 注意添加了 fakeresolve 和 socks5+ ,将域名转发到上游
parent 1000 socks5+ 127.0.0.1 7890
# 认证设置:外部用户需要用户名/密码
auth strong
# auth none
users root:CL:123456
# -a 参数,需要验证
# 转发代理:外部连接到 7890 端口,转发到 127.0.0.1:1080
# proxy -i0.0.0.0 -p7889 -a -n
# proxy -i0.0.0.0 -p7889 -a -n
socks -i0.0.0.0 -p7889 -a -n
运行即可: 3proxy ./3proxy.cfg
需要注意的是,fakeresolve 和 socks5+ 是推荐功能, 避免 3proxy自己去解析域名,通过将域名转发到上游socks5代理,可以在上游socks5代理中,提供更灵活的 域名策略。而 3proxy 仅仅充当 密码授权的功能
结语
通过3proxy 可以为已有的 socks5 代理添加一层密码授权,最终实现局域网内端口无需密码,公网访问需要授权