为什么不使用 FRP / WireGuard / TailScale / ZeroTier: 不希望内网服务直接暴露在公网,公司电脑限制部分 VPN 软件的安装,iOS 端不方便连接自建服务器,也无法同时连接多个 VPN,等等。
V2Ray 内网和 VPS 上的配置可以参考 此篇文章,理论上用比如 SS + FRP 相对更简单一些,我个人只是单纯想折腾一下 V2Ray。
修改现有的 Clash 订阅文件,添加新的 vmess 服务器,命名为 NAT,添加新的代理组,包含直连和刚刚创建的 NAT。再创建或者修改到 192.168.0.0/16 网段的代理规则:
proxies:
- {name: NAT, server: <server_host>, port: <port>, type: vmess, uuid: <uuid>, alterId: 0, cipher: auto, tls: true, skip-cert-verify: true, network: ws, ws-opts: {path: /<path>, headers: {Host: <server_host>}}, udp: true}
// ...
proxy-groups:
- name: HOME
type: select
proxies:
- DIRECT
- NAT
// ...
rules:
- IP-CIDR,192.168.0.0/16,HOME,no-resolve
// ...
在家使用不需要走代理,ClashX 自身不支持根据连接网络切换规则,所以回家或者外出需要手动做一次切换,以后再想办法做自动化。
浏览器端,添加规则让内网地址走代理:
浏览器访问内网地址:
SSH 连接家里的 Linux 机器:
$ ssh -o ProxyCommand='nc -X connect -x localhost:7890 %h %p' ihainan@192.168.100.245
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-169-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
使用 FreeRDP 来连接内网的 Windows 机器:
xfreerdp /u:<usename> /p:<password> /v:192.168.100.246 /cert-ignore /auto-reconnect-max-retries:0 /dynamic-resolution /proxy:socks5://localhost:7890
测一下速度:
ShadowRocket 添加新的 VMESS 服务器,修改 ShadowRocket 的现有配置,如果使用的是小火箭默认自带的配置,记得要将 192.168.0.0/16 网段移出跳过代理列表。添加或修改现有规则,让内网网段走新的服务器。
手机端只有浏览器访问内网需求: