现在各大运营商对家宽开放WEB的监管越加严格

很多地区都有人在开放WEB服务后被运营商断网警告

可以预见的未来家宽开WEB只会越来越难

我给出我使用过的几种方案来避开此类风险

  1. 云服务器转发(不推荐)

  2. 狭义上的VPN(较推荐)

  3. 虚拟局域网(较推荐)

  4. 代理分流(推荐)

云服务器转发

代表方案:Frp

实现难度:简单
现成教程极多,基本有手就行

访问延迟:设备至云服务器+云服务器至家中服务器
买就近地区的云服务器一般来说延迟不会超过50ms,延迟尚可

访问速度:一般
一般国内的服务器都是小水管,1M,3M,5M,8M,只能说看看网页还行,看视频同步文件啥的别想

感知度:无感~强烈感知
不需要设备进行任何额外操作,但是带宽不够时感知强烈

安全性:一般
毕竟你的服务还在公网摆着,如果有漏洞可能成为别人的跳板来侵入局域网

其他问题:云服务器目前也不允许WEB服务绑定域名,只能使用IP+端口方式,申请[免费]IP证书较麻烦,不然只能使用HTTP,有潜在的安全风险
绑定多个服务时需要配置多个文件

PS:Cloudflare的Tunnels也被归为此类,由于延迟太高,非常不推荐国内使用

狭义上的VPN

代表方案IPsec

实现难度:简单
现成方案极多,有手就行

访问延迟:设备至家中服务器

直连到家延迟自然没话说

访问速度:极快
家里带宽多少就是多少

感知度:无感~强烈感知
一般来说这类工具都需要你在用的时候打开,不用的时候关闭,即全局代理
不过有些客户端支持网段转发,只有目标网段才会被转发到服务器,可以算作无感回家

安全性:强
只要你自己不泄露信息没人可以访问到你的内网,配合久经考验的算法应该值得信赖

其他问题:
刚需公网IP
一般来说与代理软件不兼容
权限精细控制较难

虚拟组网

代表方案:Zerotier,N2N,Tailscale

实现难度:中等
高阶玩法可能需要一点网络知识,个人部署服务还要一些Linux知识

访问延迟:极低~薛定谔
如果你的设备有公网IP或者NAT类型是1(理论上1-3都行),那么你的延迟就是直连
但是NAT是2-4,很有可能打洞不成功,需要走服务器中转,Zerotier的官方服务器在国外,速度懂得都懂,但是也可以自建Moon服务器来解决

访问速度:薛定谔~极高
同上一条,如果打洞成功就是带宽上限,失败就听天由命

感知度:无感~强烈感知
同上一条,打洞失败了就体验极差

安全性:强
由于加入虚拟局域网需要自己确认,所以一般认为无安全风险(前提是服务提供商可以信任)


其他问题:如果不会配置网络路由,那么局域网的每台设备都要安装才能方便的访问
这类服务主要采用UDP连接,流量大时有被运营商暂时QOS的风险
一般来说这类软件在手机上运行时与代理不兼容,算是一个毒点
多个局域网时优势巨大

代理分流

代表方案:Null
似乎没看过成系统的方案

实现难度:较难
需要一些Linux知识,以及编写V2ray/Xray/Clash等代理软件的配置文件

访问延迟:极低~无法连接
本方案刚需公网IP/NAT1类型网络

访问速度:无法连接~极高
同上一条,如果网络类型好就是带宽上限,不好就是无法连接

感知度:无感~轻微感知
基于代理软件的分流,可以做到24H开启代理无感回家,可能会增加一点耗电

安全性:强
代理要能通过防火墙,安全性应该是可以相信的

其他问题:

代理分流配置示例

服务端我采用的V2ray/Xray(配置基本通用)

服务端配置最简化,这个配置完全没有权限控制

相当于服务器整个网段对客户端透明,只推荐个人使用,也没有使用TLS,反正默认auto加密够用了


{

  "dns": {
    "hosts": {
      "x.com": "192.168.31.10"
    }
  },
  "inbounds": [{
    "port": 23333,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "UUID"
        }
      ]
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {
      "domainStrategy": "UseIP" //启用内置hosts
      }
  }]
}


客户端我习惯使用Clash.meta(Mihomo)(实验性支持了IP4P,可以用NAT1类型回家)

增加一个启用IP4P的配置
引入一个节点用于连接服务器
增加一个代理组用于控制是否启用代理回家
rules增加需要的局域网及内网域名并指向代理组把这些规则放在最前面,防止被局域网规则跳过

experimental:

    dialer-ip4p-convert: true

proxies:

    - { name: '🇨🇳 服务器专用', type: vmess, server: x.com, port: 23333, uuid: UUID, alterId: 0, cipher: auto, network: tcp }

proxy-groups:

    - { name: '🖥️ 专用服务', type: select, proxies: ['🇨🇳 服务器专用', DIRECT], url: 'https://connect.rom.miui.com/generate_204', interval: 60 }

rules:

    - 'IP-CIDR,192.168.31.1/24,🖥️ 专用服务'

    - 'DOMAIN-SUFFIX,x.com,🖥️ 专用服务'