静看光阴荏苒
不管不顾不问不说也不念

Remnawave订阅配置

这篇文章介绍Remnawave订阅相关的内容,可能有点多有点杂,我尽量写的详细一点= =

首先在Remnawave面板里面有一个很重要的概念:主机。

这个主机是个啥意思呢?用一句话总结就是:你每添加的一个主机就对应最终用户在他们的客户端(Shadowrocket、Happ、sing-box等)上看到的节点。

假设现在我想让用户拥有一个VLESS-XHTTP-TLS过CDN的节点,现在我尝试添加一个主机。

1、备注随便填写,这是最终用户在他们的客户端上看到的节点名字。

2、每个主机都需要选择一个配置文件:

主机选择的这个配置文件必须已经有节点激活在使用:

3、因为我这是搭建的一个过CDN的节点,所以地址这里填写的是域名,且CloudFlare需要打开小云朵开关,如无需过CDN或者无需域名的情况下,可直接填写节点服务器的公网IP。

4、端口在大多数情况下,必须与所选配置文件内的入站端口匹配。首次添加的主机会自动识别配置文件内入站所使用的端口。

5、勾选主机可见性,启用这个主机。这样就创建好了一个主机。

Remnawave面板的第二个概念:内部分组。

一句话总结:内部分组的作用就是一种访问控制。最主要的功能是用来控制最终用户可以使用的主机(节点)。

Remnawave面板自带一个默认的内部分组,这里演示我就用这个自带的Default-Squad分组了,点击编辑:

这里可以同时选择多个配置文件(如果有的话),勾选你想让用户使用的入站配置:

接着我们创建一个用户,让这个用户使用Default-Squad分组:

这样用户就拥有了自己的订阅链接,他们可以通过这个订阅链接导入节点信息到各类客户端中使用。并且这个订阅链接内只包含你在Default-Squad分组内允许的入站配置:

Remnawave面板的第三个概念:订阅设置。

这个订阅设置怎么说呢,主要看用户使用的是什么客户端,因为不同的客户端在处理订阅链接时的行为不一样。但是对于Remnawave面板而言大致可以分为两类:基础订阅、json订阅。

这两者的区别是基础订阅一般情况下只包含节点信息,不包含路由规则、DNS配置等信息。而json订阅是包含路由规则、DNS配置等信息的。

我这里就拿自己常用的几个iOS客户端来演示吧。我平时用Shadowrocket、Happ、sing-box比较多。这里就主要说一下这三个客户端。

其中支持基础订阅的客户端,比如Shadowrocket,一般情况下它只提取订阅链接中的(主机)节点信息,像什么路由规则、DNS配置等等是不管的,因为它有自己的规则配置。所以它是开箱即用的,直接把Remnawave面板的订阅链接输上去导入就行了。

Happ这个客户端有点特殊,因为它同时支持基础订阅和json订阅,并且它支持在基础订阅内包含路由规则、DNS配置等信息。我使用这个客户端的时候一般不勾选“在基础订阅提供 JSON”,这样可以让Happ始终使用基础订阅,如果你勾选了这个,Happ默认就是json订阅了,那么你就需要自己搓一个json的订阅模板:

现在演示一下Happ如何在基础订阅内包含路由规则、DNS配置等信息。下面是我已经配置好的一个Happ路由链接:

happ://routing/add/eyJOYW1lIjoiQ2hpbmEiLCJHbG9iYWxQcm94eSI6InRydWUiLCJSZW1vdGVETlNUeXBlIjoiRG9IIiwiUmVtb3RlRE5TRG9tYWluIjoiaHR0cHM6Ly9kbnMuZ29vZ2xlL2Rucy1xdWVyeSIsIlJlbW90ZUROU0lQIjoiOC44LjguOCIsIkRvbWVzdGljRE5TVHlwZSI6IkRvSCIsIkRvbWVzdGljRE5TRG9tYWluIjoiaHR0cHM6Ly9kbnMuYWxpZG5zLmNvbS9kbnMtcXVlcnkiLCJEb21lc3RpY0ROU0lQIjoiMjIzLjUuNS41IiwiR2VvaXB1cmwiOiIiLCJHZW9zaXRldXJsIjoiIiwiTGFzdFVwZGF0ZWQiOiIiLCJEbnNIb3N0cyI6eyJkbnMuZ29vZ2xlIjoiOC44LjguOCIsImRucy5hbGlkbnMuY29tIjoiMjIzLjUuNS41In0sIkRpcmVjdFNpdGVzIjpbImdlb3NpdGU6Z2VvbG9jYXRpb24tY24iXSwiRGlyZWN0SXAiOlsiZ2VvaXA6Y24iXSwiUHJveHlTaXRlcyI6WyJnZW9zaXRlOmdlb2xvY2F0aW9uLSFjbiJdLCJQcm94eUlwIjpbXSwiQmxvY2tTaXRlcyI6W10sIkJsb2NrSXAiOltdLCJEb21haW5TdHJhdGVneSI6IklQSWZOb25NYXRjaCIsIkZha2VETlMiOiJmYWxzZSIsIlVzZUNodW5rRmlsZXMiOiJ0cnVlIn0=

可以直接在面板内通过Happ路由编辑器导入并解码然后根据自己的需要来修改:

解码后的配置如下:

{
  "Name": "China",
  "GlobalProxy": "true",
  "RemoteDNSType": "DoH",
  "RemoteDNSDomain": "https://dns.google/dns-query",
  "RemoteDNSIP": "8.8.8.8",
  "DomesticDNSType": "DoH",
  "DomesticDNSDomain": "https://dns.alidns.com/dns-query",
  "DomesticDNSIP": "223.5.5.5",
  "Geoipurl": "",
  "Geositeurl": "",
  "LastUpdated": "",
  "DnsHosts": {
    "dns.google": "8.8.8.8",
    "dns.alidns.com": "223.5.5.5"
  },
  "DirectSites": [
    "geosite:geolocation-cn"
  ],
  "DirectIp": [
    "geoip:cn"
  ],
  "ProxySites": [
    "geosite:geolocation-!cn"
  ],
  "ProxyIp": [],
  "BlockSites": [],
  "BlockIp": [],
  "DomainStrategy": "IPIfNonMatch",
  "FakeDNS": "false",
  "UseChunkFiles": "true"
}

建议不要使用太多的geosite、geoip规则,Happ在iOS上的Xray-core有50MB内存限制,超过50MB内存就会停止运行。这些规则多了会导致Xray-core内存迅速超过50NB。

如果不需要修改我提供的这个Happ路由规则,那么只需要在Remnawave面板的订阅设置–>Happ路由,添加保存即可:

现在说一下sing-box这个客户端,这其实是我主力使用的一个客户端,这个客户端只支持json订阅,所以需要在Remnawave面板配置一个json模板:

下面是我配置好的一个模板(基于GUI for SingBox导出),目前这个配置可以直接拿来用,但是我还是要稍微提一下哈,这个模板为了兼容sing-box 1.11(iOS客户端没办法更新)所以有些配置不是当前sing-box 1.12推荐的,随着sing-box的版本更新,有些配置可能会被弃用,到时会失效。(sing-box经常出破坏性的更新,没办法)

{
  "dns": {
    "final": "Remote-DNS",
    "rules": [
      {
        "action": "route",
        "server": "Local-DNS",
        "outbound": "any"
      },
      {
        "action": "route",
        "server": "Local-DNS",
        "clash_mode": "direct"
      },
      {
        "action": "route",
        "server": "Remote-DNS",
        "clash_mode": "global"
      },
      {
        "action": "route",
        "server": "Local-DNS",
        "rule_set": [
          "GeoSite-CN"
        ]
      },
      {
        "action": "route",
        "server": "Remote-DNS",
        "rule_set": [
          "GeoLocation-!CN"
        ]
      }
    ],
    "servers": [
      {
        "tag": "Local-DNS",
        "detour": "🎯 全球直连",
        "address": "https://223.5.5.5:443/dns-query",
        "address_resolver": "Local-DNS-Resolver"
      },
      {
        "tag": "Local-DNS-Resolver",
        "detour": "🎯 全球直连",
        "address": "udp://223.5.5.5:53"
      },
      {
        "tag": "Remote-DNS",
        "detour": "→ Remnawave",
        "address": "tls://8.8.8.8:853",
        "address_resolver": "Remote-DNS-Resolver"
      },
      {
        "tag": "Remote-DNS-Resolver",
        "detour": "→ Remnawave",
        "address": "udp://8.8.8.8:53"
      }
    ],
    "disable_cache": false,
    "disable_expire": false,
    "independent_cache": false
  },
  "log": {
    "level": "info",
    "output": "",
    "disabled": false,
    "timestamp": false
  },
  "route": {
    "final": "→ Remnawave",
    "rules": [
      {
        "action": "sniff",
        "inbound": "tun-in"
      },
      {
        "action": "hijack-dns",
        "protocol": "dns"
      },
      {
        "action": "route",
        "outbound": "🎯 全球直连",
        "clash_mode": "direct"
      },
      {
        "action": "route",
        "outbound": "→ Remnawave",
        "clash_mode": "global"
      },
      {
        "action": "reject",
        "protocol": "quic"
      },
      {
        "action": "reject",
        "rule_set": [
          "Category-Ads"
        ]
      },
      {
        "action": "route",
        "outbound": "→ Remnawave",
        "domain_keyword": "nexon"
      },
      {
        "action": "route",
        "outbound": "🎯 全球直连",
        "rule_set": [
          "GeoSite-Private"
        ]
      },
      {
        "action": "route",
        "outbound": "🎯 全球直连",
        "rule_set": [
          "GeoSite-CN"
        ]
      },
      {
        "action": "route",
        "outbound": "🎯 全球直连",
        "rule_set": [
          "GeoIP-Private"
        ]
      },
      {
        "action": "route",
        "outbound": "🎯 全球直连",
        "rule_set": [
          "GeoIP-CN"
        ]
      },
      {
        "action": "route",
        "outbound": "→ Remnawave",
        "rule_set": [
          "GeoLocation-!CN"
        ]
      }
    ],
    "rule_set": [
      {
        "tag": "Category-Ads",
        "url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/category-ads-all.srs",
        "type": "remote",
        "format": "binary",
        "download_detour": "🎯 全球直连"
      },
      {
        "tag": "GeoIP-Private",
        "url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geoip/private.srs",
        "type": "remote",
        "format": "binary",
        "download_detour": "🎯 全球直连"
      },
      {
        "tag": "GeoSite-Private",
        "url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/private.srs",
        "type": "remote",
        "format": "binary",
        "download_detour": "🎯 全球直连"
      },
      {
        "tag": "GeoIP-CN",
        "url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geoip/cn.srs",
        "type": "remote",
        "format": "binary",
        "download_detour": "🎯 全球直连"
      },
      {
        "tag": "GeoSite-CN",
        "url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/cn.srs",
        "type": "remote",
        "format": "binary",
        "download_detour": "🎯 全球直连"
      },
      {
        "tag": "GeoLocation-!CN",
        "url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/geolocation-!cn.srs",
        "type": "remote",
        "format": "binary",
        "download_detour": "🎯 全球直连"
      }
    ],
    "auto_detect_interface": true
  },
  "inbounds": [
    {
      "mtu": 9000,
      "tag": "tun-in",
      "type": "tun",
      "stack": "system",
      "address": [
        "172.18.0.1/30"
      ],
      "auto_route": true,
      "strict_route": true,
      "interface_name": "WiFi-6",
      "endpoint_independent_nat": false
    }
  ],
  "outbounds": [
    {
      "tag": "→ Remnawave",
      "type": "selector",
      "outbounds": [
        "⚡️ 自动选择"
      ],
      "interrupt_exist_connections": true
    },
    {
      "tag": "⚡️ 自动选择",
      "url": "https://www.gstatic.com/generate_204",
      "type": "urltest",
      "interval": "3m",
      "outbounds": null,
      "tolerance": 150,
      "interrupt_exist_connections": true
    },
    {
      "tag": "🎯 全球直连",
      "type": "direct"
    }
  ],
  "experimental": {
    "clash_api": {
      "secret": "",
      "external_ui": "",
      "default_mode": "rule",
      "external_controller": "127.0.0.1:2413",
      "external_ui_download_url": "",
      "access_control_allow_origin": [
        "*"
      ],
      "external_ui_download_detour": "🎯 全球直连",
      "access_control_allow_private_network": false
    },
    "cache_file": {
      "path": "cache.db",
      "enabled": true,
      "cache_id": "",
      "store_rdrc": true,
      "rdrc_timeout": "7d",
      "store_fakeip": true
    }
  }
}

我常用的几个客户端就都介绍完了,实际上你可以看到Remnawave面板的json订阅配置还支持Mihomo、Stash等,但是我不用这些这里就不介绍了。

[可选]搭建一个Remnawave Subscription Page(独立的订阅页面程序)其作用是可以隐藏Remnawave面板域名,并且提供一个更美观的订阅页面。先看下效果:

编辑Remnawave面板的.env配置文件:

cd /opt/remnawave && nano .env

把之前的这个配置:

SUB_PUBLIC_DOMAIN=remnawave.example.com/api/sub

修改为你的订阅页面域名:

SUB_PUBLIC_DOMAIN=subscription.example.com

创建compose文件:

mkdir -p /opt/remnawave/subscription && cd /opt/remnawave/subscription && nano docker-compose.yml

写入如下配置:

services:
    remnawave-subscription-page:
        image: remnawave/subscription-page:latest
        container_name: remnawave-subscription-page
        hostname: remnawave-subscription-page
        restart: always
        environment:
            - REMNAWAVE_PANEL_URL=https://remnawave.example.com
            - APP_PORT=3010
            - META_TITLE="Subscription Page Title"
            - META_DESCRIPTION="Subscription Page Description"
        ports:
            - '127.0.0.1:3010:3010'
        networks:
            - remnawave-network

networks:
    remnawave-network:
        driver: bridge
        external: true

注意:REMNAWAVE_PANEL_URL这里要指向你的面板URL,但是有多种配置方法。

1、此订阅页面程序与面板不在同一台服务器部署,那么这里就填写面板的域名,并且去掉compose内的external: true配置。

2、在同一服务器部署,可以直接填面板服务的主机名:3000,例如:http://remnawave:3000,也可以直接填写域名。

启动:

docker compose up -d

配置反向代理,我这里用的Pangolin:

赞(0)
未经允许不得转载:荒岛 » Remnawave订阅配置
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿