V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
PXW139
V2EX  ›  宽带症候群

分享一个基于分流的安全访问方案

  •  
  •   PXW139 · 2023-10-24 00:13:06 +08:00 · 1871 次点击
    这是一个创建于 433 天前的主题,其中的信息可能已经有所发展或是发生改变。

    相信这里的大部分人都有访问自己家里服务器的需求
    但是部分地区家宽不给开 WEB 服务
    类似 zerotier 这种虚拟组网方案需要时刻开启软件组网,且对移动端极不友好(影响翻墙)
    Frp 呢也要两边设备同时安装才能有隐藏 WEB 服务的效果

    我目前使用的是基于 Clash+*ray 的分流方案
    Clash 可以替换成任意带分流的软件

    优点:
    访问服务器完全无感(直连,可以用 80/443)
    安全性 Max(毕竟是翻墙用的)
    速度也还不错(看协议)
    全平台友好(全平台翻墙软件的 Power)
    可以细化权限,针对不同用户给予不同访问权限

    缺点:
    刚需公网 IP(实在没有的话 NAT1 也凑合)
    需要开代理(不会有人不是全天开代理吧)
    TCP/UDP 流量需要 TUN 模式(其他方案也需要)
    配置略复杂,新增服务可能比较麻烦
    在家时访问速度会负优化(分流一个 DIRECT 可解)

    基本思路

    在 Clash 中把内网流量在规则中分流到自己的*Xray 服务器
    在 Xray 服务器中进行二次分流
    丢弃全部公网流量,丢弃重要发往重要设备的流量(安全考虑,虽然其实没啥意义)
    下面是我的 Xray 配置文件,简单参考就行,路径我随便改的,记得删除注释
    192.168.31.1 是我的路由器地址,192.168.31.11 是我的 Nginx 服务器地址

    {
      "log": {
        "access": "/access.log",
        "error": "/error.log",
        "loglevel": "warning"
      },
      "dns": {
        "servers": ["localhost"],
        "hosts": {
          "domain:XXXXXXX.com": "192.168.31.11"//把这个域名的全部子域名解析到 Nginx 的服务器 IP
        }
      },
      "inbound": {
        "port": 65432,
        "protocol": "vmess",
        "settings": {
          "clients": [
            {
              "id": "UUID 在此",
              "level": 1,
              "alterId": 100
            }
          ]
        },
        "streamSettings": {
          "security": "tls",
          "tlsSettings": {
            "serverName": "XXXX.com",
            "certificates": [
    {
                "certificateFile": "/fullchain.pem",
                "keyFile": "/privkey.pem"
              }
            ]
          }
        }
      },
      "outbounds": [
        {
          "tag": "blocked",//未匹配服务全部丢弃,默认未匹配的流量全部走第一个出口
          "protocol": "blackhole",
          "settings": {}
        },
        {
          "tag": "direct",
          "protocol": "freedom",
          "settings": {
          "domainStrategy": "UseIP"//必须开启此项才能使用 hosts 中的配置
          }
        }
      ],
      "inboundDetour": [],
      "outboundDetour": [],
      "routing": {
        "domainStrategy": "IPIfNonMatch",
        "settings": {
          "rules": [
            {
    "type": "field",
              "ip": "192.168.31.1", //此处屏蔽访问路由器
              "outboundTag": "blocked"
            },
            {
              "type": "field",  
              "ip": ["192.168.31.1/24"],//允许访问路由器 IP 段其他设备
              "outboundTag": "direct"
            },
            {
              "type": "field",
              "domain": ["domain:XXXX.COM"],//允许访问指定域名(实际上用不到这玩意,删了也没啥影响)
              "outboundTag": "direct"
            },
            {
              "type": "field",
              "domain": ["domain:gstatic.com"],//允许访问测速服务器
              "outboundTag": "direct"
            },
            {
              "type": "field",//屏蔽访问其他 IP 段,实际上没意义,没匹配的全丢黑洞了
              "ip": [
                "0.0.0.0/8",
                "10.0.0.0/8",
                "100.64.0.0/10",
                "127.0.0.0/8",
                "169.254.0.0/16",
                "172.16.0.0/12",
                "192.0.0.0/24",
                "192.0.2.0/24",
                "192.168.0.0/16",
                "198.18.0.0/15",
                "198.51.100.0/24",
                "203.0.113.0/24",
                "::1/128",
                "fc00::/7",
                "fe80::/10"
              ],
              "outboundTag": "blocked"
            }
          ]
        }
      }
    }
    

    然后是 Clash 的配置文件

    加入这些,然后配置好 proxies,proxy-groups 就行
        - 'IP-CIDR,192.168.31.1/32,DIRECT' //用于在家里直连路由器
        - 'IP-CIDR,192.168.31.1/24,🖥️ 专用服务'
        - 'DOMAIN-SUFFIX,XXXX.com,🖥️ 专用服务'
    
    3 条回复    2023-10-24 09:04:55 +08:00
    PXW139
        1
    PXW139  
    OP
       2023-10-24 00:15:12 +08:00
    如果有 NAT1,配合打洞的话好像也可以是一种内网穿透方案?
    superht
        2
    superht  
       2023-10-24 00:46:39 +08:00 via iPhone
    用 surge 也行。在手机上用 surge 通过 wireguard 协议连接家里内网,并添加分流策略:
    wireguard 自动切换 = subnet, default = wireguard, "SSID:XXXX" = DIRECT
    以及规则:
    AND,((IP-CIDR,192.168.X.X/24)),wireguard 自动切换

    可以实现在移动网络下,访问内网时走 wireguard ,访问互联网时走 surge 默认策略。
    PXW139
        3
    PXW139  
    OP
       2023-10-24 09:04:55 +08:00 via Android
    @superht wireguard 走 UDP 容易被 qos
    然后是虚拟组网有点笨重,权限控制也麻烦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   872 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:19 · PVG 04:19 · LAX 12:19 · JFK 15:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.