需求 #
我一直都在用内网穿透来访问家里的小主机,但是我之前都在使用Nginx配置来使得一个内网穿透隧道可以访问多个服务, 这样每次增加服务都需要去服务器上改配置,然后重载Nginx服务,稍微麻烦一些,所以现在就研究出了一个新办法,使用Clash配置规则代理,通过服务器上的socks5端口访问服务,这样也是只需要穿透一个socks5端口即可。
操作 #
下载、配置、启动3proxy #
在3proxy仓库的GitHub Release可以下载。
下载后解压到文件夹,找到可执行文件,并在可执行文件同级目录创建一个3proxy.cfg
配置文件:
# 设置超时时间
timeouts 1 5 30 60 180 1800 15 60
# 在windows上作为服务启动
service
# 内部IP地址,填客户端要通过那个IP访问服务器,一般填服务端部署,也就是安装3proxy这台主机的局域网IP,不允许填0.0.0.0, 127.0.0.1
internal 192.168.0.12
# 外部IP地址,填服务器通过哪个IP访问外网,一般填服务器的IP即可,填0.0.0.0也可以
external 0.0.0.0
#################################
#### socks4/4.5/5 proxy setting
#################################
auth none
flush
allow *
# 指定端口
socks -p11080
最后启动:
# 指定配置文件启动,默认取同级目录的
3proxy 3proxy.cfg
如果想注册为windows服务:
# 使用配置文件注册服务
3proxy.exe --install 3proxy.cfg
# 启动服务
net start 3proxy
Linux注册服务可以自行查阅,一般是写一个systemctl
的配置
测试连通性 #
我使用Clash
做代理客户端,如果你使用其它客户端,可以自行学习配置文件如何编写。
Clash
配置如下:
port: 7890
socks-port: 7891
allow-lan: true
mode: Rule
log-level: info
external-controller: :9090
proxies:
# 注意这里server是你的socks5服务器ip和对应端口
- {name: vpn-socks5-server, type: socks5, server: 192.168.0.12, port: 11080}
# ssh -D 11080 xxx@服务器ip,通过ssh提供的socks5端口也可以走代理
- {name: vpn-ssh, type: socks5, server: 127.0.0.1, port: 11080}
# 使用proxy-groups是因为可以拓展多种方式,比如你可以通过ssh连服务器,然后通过ssh提供本地socks5端口代理流量到服务器,可以将配置添加到这
proxy-groups:
- name: MyProxies
type: select
proxies:
- vpn-socks5-server
- vpn-ssh
# 代理规则配置,自己研究去(
rules:
- DOMAIN-SUFFIX,xxx.com,MyProxies
- IP-CIDR,188.88.0.0/16,MyProxies
...
然后使用Clash
的延迟测速功能来测试连通性。
配置socks5端口的内网穿透 #
确认连通后,将你的socks5端口添加到你的内网穿透隧道中,然后将内网穿透的服务器和端口加进Clash
配置文件,如果能够成功连通,你就可以使用了。
总结 #
经过以上操作,你就可以直接在外网访问你内网部署的服务了,如果你不懂Clash规则如何配置,可以看看这个文档:Clash知识库。