Clouldon Blog
    • 版块
    • 最新
    • 用户
    • 友链
    • 注册
    • 登录
    1. 主页
    2. clouldon
    离线
    • 资料
    • 关注 1
    • 粉丝 1
    • 主题 9
    • 帖子 18
    • 群组 2

    clouldon

    @clouldon

    administrators
    17
    资料浏览
    18
    帖子
    1
    粉丝
    1
    关注
    注册时间
    最后登录

    clouldon 取消关注 关注
    Global Moderator administrators

    clouldon 发布的最新帖子

    • RE: 哈基 项目推荐

      @四折光曲 你可以找我重置密码啊

      发布在 软件教程
      clouldonC
      clouldon
    • MosDNS本地服务器安装

      以下是 MosDNS-X + EasyMosdns 组合的详细安装教程。教程将严格遵循您指定的目录结构和文件处理方式,所有文件将下载至 /etc/mosdns,二进制文件复制到 /usr/local/bin/,并包含权限设置、服务管理及用户自定义修改的方法。


      一、准备工作

      在开始之前,请确保满足以下条件:

      1. 操作系统:Linux 系统(如 Debian/Ubuntu/CentOS/AlmaLinux 等)。
      2. 权限:拥有 root 或具有 sudo 权限的用户。
      3. 网络:能够访问 GitHub 及互联网以下载所需文件。
      4. 端口:确保 53 端口未被其他 DNS 服务(如 systemd-resolved)占用,并已安装 unzip、wget、curl 等工具:
      # 更新包索引并安装必要工具(以 Debian/Ubuntu 为例)
      sudo apt update && sudo apt install -y wget unzip curl iptables
      
      1. 备份:如果已有 MosDNS 配置,请先备份 /etc/mosdns 目录。

      二、下载所有必需文件

      我们将所有文件集中下载并解压到 /etc/mosdns 目录中。请依次执行以下命令:

      1. 创建并进入工作目录

        sudo mkdir -p /etc/mosdns
        cd /etc/mosdns
        
      2. 下载 EasyMosdns 配置文件压缩包 (v3.5-2)
        源地址

        # 此处使用最新提供的 v3.5-2 版本配置,如链接失效请访问 GitHub Releases 页面查找最新版本
        sudo wget https://github.com/pmkol/easymosdns/archive/refs/tags/v3.5-2.zip -O easymosdns.zip
        
      3. 下载 MosDNS-X 二进制文件压缩包 (v26.05.25)
        源地址

        # 下载适用于 Linux amd64 架构的二进制文件,如需其他架构请前往 Releases 页面选择对应版本
        sudo wget https://github.com/pmkol/mosdns-x/releases/download/v26.05.25/mosdns-linux-amd64.zip -O mosdns-x.zip
        

      此时,/etc/mosdns 目录下应包含两个文件:easymosdns.zip 与 mosdns-x.zip,文件名是重命名的效果。


      三、解压与文件部署

      cd /etc/mosdns
      
      # 1. 解压 EasyMosdns 配置文件(注意:此压缩包内含有顶级目录 easymosdns-3.5-2,我们需要其内部所有内容)
      sudo unzip -q easymosdns.zip
      sudo mv easymosdns-3.5-2/* .   # 将配置内容移至 /etc/mosdns 根目录
      sudo rm -rf easymosdns-3.5-2 easymosdns.zip   # 清理解压残留与原始压缩包
      
      # 2. 解压 MosDNS-X 二进制文件,仅提取内部的 mosdns 可执行文件
      sudo unzip -q mosdns-x.zip mosdns
      sudo cp mosdns /usr/local/bin/   # 将二进制文件移入系统 PATH 路径
      sudo chmod +x /usr/local/bin/mosdns   # 赋予可执行权限
      sudo rm -f mosdns-x.zip   # 删除已使用完毕的压缩包
      

      四、初始化配置文件

      EasyMosdns 提供了一套完整的示例配置文件 config.yaml,我们需要基于此文件进行首次启动前的微调。

      cd /etc/mosdns
      
      # 1. 检查是否存在 config.yaml 文件
      ls -l config.yaml
      
      # 2. (可选)如存在旧配置文件,先创建备份
      sudo cp config.yaml config.yaml.bak
      

      五、安装并启动 MosDNS 系统服务

      MosDNS-X 内置了便捷的服务管理命令(install、start、stop、restart、uninstall)。我们使用以下命令将 MosDNS 安装为系统服务,并立即启动。

      # 1. 将 MosDNS 安装为系统服务,指定工作目录为 /etc/mosdns,并使用 config.yaml 作为主配置文件
      sudo mosdns service install -d /etc/mosdns -c config.yaml
      
      # 2. 启动服务
      sudo mosdns service start
      
      # 3. 查看服务状态(确认是否正常运行)
      sudo mosdns service status
      # 4. 重启服务
      sudo mosdns service restart
      # 5. 停止服务
      sudo mosdns service stop
      

      六、验证 DNS 服务

      服务启动后,可通过以下方式测试 DNS 解析是否正常:

      # 使用 dig 或 nslookup 测试本地 DNS(需提前安装 dnsutils 或 bind-utils)
      dig @127.0.0.1 google.com
      dig @127.0.0.1 qq.com
      
      #或使用nslookip 查看是否默认使用mosdns查询
      nslookup qq.com
      nslookup qq.com 127.0.0.1
      

      如果返回正确的解析结果,说明服务已正常运行。

      # 日志文件优化
      crontab -e
      
      # 在文件末尾添加以下内容
      0 5 * * * sudo truncate -s 0 /etc/mosdns/mosdns.log && /etc/mosdns/rules/update
      

      七、用户自定义修改

      EasyMosdns 提供了高度可定制的配置文件,所有配置均位于 /etc/mosdns/config.yaml。用户可根据注释说明进行个性化修改,例如:

      • 修改监听端口:搜索 protocol: udp 和 protocol: tcp 下方的 addr: 字段,默认端口为 53,可按需更改。
      • 调整上游 DNS 服务器:搜索 upstream 或 remote 相关段落,替换为符合需求的上游地址(如 HTTPS、DoT 等)。
      • 自定义 Hosts 或黑白名单:配置文件中包含丰富的示例,可根据注释轻松添加。

      修改配置后,需手动重启。若需强制重启,可使用以下命令:

      sudo mosdns service restart
      

      八、其他常用管理命令

      操作 命令
      停止服务 sudo mosdns service stop
      重启服务 sudo mosdns service restart
      查看日志 sudo journalctl -u mosdns -f
      卸载服务 sudo mosdns service uninstall (将删除服务但保留配置文件)
      重置配置 sudo /etc/mosdns/tools/config-reset (恢复至初始默认配置)

      九、附录:全自动安装脚本(可选)

      为方便批量部署,您可将以下代码保存为 install_mosdns.sh,一键完成上述所有操作:

      #!/bin/bash
      set -e
      
      echo ">>> 开始安装 MosDNS-X + EasyMosdns ..."
      
      # 安装依赖
      echo ">>> 安装依赖工具..."
      sudo apt update && sudo apt install -y wget unzip curl
      
      # 创建工作目录并进入
      sudo mkdir -p /etc/mosdns
      cd /etc/mosdns
      
      # 下载文件
      echo ">>> 下载 EasyMosdns 配置包..."
      sudo wget https://github.com/pmkol/easymosdns/archive/refs/tags/v3.5-2.zip -O easymosdns.zip
      echo ">>> 下载 MosDNS-X 二进制包..."
      sudo wget https://github.com/pmkol/mosdns-x/releases/download/v26.05.25/mosdns-linux-amd64.zip -O mosdns-x.zip
      
      # 解压与部署
      echo ">>> 解压并部署文件..."
      sudo unzip -q easymosdns.zip
      sudo mv easymosdns-3.5-2/* ./
      sudo rm -rf easymosdns-3.5-2 easymosdns.zip
      
      sudo unzip -q mosdns-x.zip mosdns
      sudo cp mosdns /usr/local/bin/
      sudo chmod +x /usr/local/bin/mosdns
      sudo rm -f mosdns-x.zip
      
      # 安装并启动服务
      echo ">>> 安装系统服务..."
      sudo mosdns service install -d /etc/mosdns -c config.yaml
      sudo mosdns service start
      
      echo ">>> 安装完成!"
      echo ">>> 服务状态:"
      sudo mosdns service status
      

      赋予执行权限并运行:

      chmod +x install_mosdns.sh
      sudo ./install_mosdns.sh
      

      自用config.yaml

      # =============================================
      # EasyMosdns v3.5 - 节点IP自动分流版
      # 项目地址:https://apad.pro/easymosdns
      # 本配置文件用于 MosDNS-X 或原版 MosDNS
      # Github:
      # 配置https://github.com/pmkol/easymosdns
      # 二进制:https://github.com/pmkol/mosdns-x/
      # =============================================
      
      # ---------------------------------------------
      # 日志配置
      # ---------------------------------------------
      log:
        file: "./mosdns.log"          # 日志文件存放路径
        level: info                    # 日志级别:debug/info/warn/error
      
      # ---------------------------------------------
      # 数据源配置(规则文件)
      # 所有规则文件位于 ./rules/ 目录下
      # ---------------------------------------------
      data_providers:
        - tag: chinalist               # 中国域名列表(常见国内域名)
          file: ./rules/china_domain_list.txt
          auto_reload: true
      
        - tag: gfwlist                 # GFW 封锁域名列表(需要代理的域名)
          file: ./rules/gfw_domain_list.txt
          auto_reload: true
      
        - tag: cdncn                   # 国内 CDN 域名列表(使用本地 DNS 解析更优)
          file: ./rules/cdn_domain_list.txt
          auto_reload: true
      
        - tag: chinaip                 # 中国 IP 地址段
          file: ./rules/china_ip_list.txt
          auto_reload: true
      
        - tag: gfwip                   # GFW 相关 IP 地址段(用于响应检测)
          file: ./rules/gfw_ip_list.txt
          auto_reload: true
      
        - tag: adlist                  # 广告域名黑名单
          file: ./rules/ad_domain_list.txt
          auto_reload: true
      
        - tag: hosts                   # 自定义 hosts 映射文件
          file: ./hosts.txt
          auto_reload: true
      
      # ---------------------------------------------
      # 插件列表(按顺序处理)
      # ---------------------------------------------
      plugins:
        # ----- 1. Hosts 映射插件 -----
        - tag: hosts
          type: hosts
          args:
            hosts:
              - "provider:hosts"       # 从 data_providers 中加载 hosts
      
        # ----- 2. ECS (EDNS Client Subnet) 自动获取插件 -----
        - tag: ecs_auto
          type: ecs
          args:
            auto: true                 # 自动获取客户端真实 IP 子网
            force_overwrite: false     # 不强制覆盖已有的 ECS
      
        # ----- 3. ECS 局域网匹配插件(用于判断客户端是否在内网)-----
        - tag: ecs_is_lan
          type: query_matcher
          args:
            ecs:                       # 匹配以下私有/特殊 IP 段的 ECS
              - "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.168.0.0/16"
              - "224.0.0.0/3"
              - "::1/128"
              - "fc00::/7"
              - "fe80::/10"
      
        # ----- 4. 缓存插件(用于局域网客户端)-----
        - tag: cache_lan
          type: cache
          args:
            size: 1024                 # 缓存条目数量
            lazy_cache_ttl: 180        # 懒加载缓存 TTL(秒)
            cache_everything: true     # 缓存所有响应(包括错误)
            lazy_cache_reply_ttl: 1    # 懒加载回复的临时 TTL
      
        # ----- 5. 缓存插件(用于广域网查询)-----
        - tag: cache_wan
          type: cache
          args:
            size: 4096                 # 缓存条目数量(比 LAN 更大)
            compress_resp: true        # 压缩响应以节省内存
            lazy_cache_ttl: 180
            cache_everything: true
            lazy_cache_reply_ttl: 5
      
        # ----- 6. TTL 修改插件(1 分钟)-----
        - tag: ttl_1m
          type: ttl
          args:
            minimal_ttl: 60            # 最小 TTL 60 秒
            maximum_ttl: 3600          # 最大 TTL 1 小时
      
        # ----- 7. TTL 修改插件(5 分钟)-----
        - tag: ttl_5m
          type: ttl
          args:
            minimal_ttl: 300           # 最小 TTL 5 分钟
            maximum_ttl: 18000         # 最大 TTL 5 小时
      
        # ----- 8. TTL 修改插件(1 小时)-----
        - tag: ttl_1h
          type: ttl
          args:
            minimal_ttl: 3600          # 最小 TTL 1 小时
            maximum_ttl: 18000
      
        # ----- 9. 黑洞插件(返回空响应,用于广告屏蔽)-----
        - tag: black_hole
          type: blackhole
          args:
            rcode: 0                   # 返回 NOERROR 空应答
            ipv4: "0.0.0.0"           # A 记录返回 0.0.0.0
            ipv6: "::"                # AAAA 记录返回 ::
      
        # ----- 10. 查询匹配:非域名格式(如纯 IP 查询)-----
        - tag: query_is_non_domain
          type: query_matcher
          args:
            domain:
              - "keyword::"            # 匹配空关键字(通常用于识别非标准域名)
      
        # ----- 11. 查询匹配:本地域名(中国域名)-----
        - tag: query_is_local_domain
          type: query_matcher
          args:
            domain:
              - "provider:chinalist"
      
        # ----- 12. 查询匹配:非本地域名(GFW 列表域名)-----
        - tag: query_is_non_local_domain
          type: query_matcher
          args:
            domain:
              - "provider:gfwlist"
      
        # ----- 13. 查询匹配:国内 CDN 域名-----
        - tag: query_is_cdn_cn_domain
          type: query_matcher
          args:
            domain:
              - "provider:cdncn"
      
        # ----- 14. 查询匹配:广告域名-----
        - tag: query_is_ad_domain
          type: query_matcher
          args:
            domain:
              - "provider:adlist"
      
        # ----- 15. 响应匹配:响应中包含中国 IP-----
        - tag: response_has_local_ip
          type: response_matcher
          args:
            ip:
              - "provider:chinaip"
      
        # ----- 16. 响应匹配:响应中包含 GFW IP-----
        - tag: response_has_gfw_ip
          type: response_matcher
          args:
            ip:
              - "provider:gfwip"
      
        # ----- 17. 查询匹配:QType = 12 (PTR 记录)-----
        - tag: qtype12
          type: query_matcher
          args:
            qtype: [12]
      
        # ----- 18. 查询匹配:QType = 65 (HTTPS 记录)-----
        - tag: qtype65
          type: query_matcher
          args:
            qtype: [65]
      
        # ----- 19. 查询匹配:QType = 255 (ANY 查询)-----
        - tag: qtype255
          type: query_matcher
          args:
            qtype: [255]
      
        # ----- 20. 上游转发:本地 DNS(国内)-----
        - tag: forward_local
          type: fast_forward
          args:
            upstream:
              - addr: "udpme://119.29.29.29"          # 腾讯 DNS(UDP + 多路复用)
              - addr: "udpme://223.5.5.5"             # 阿里 DNS(UDP + 多路复用)
              - addr: "https://dns.alidns.com/dns-query"   # 阿里 DoH
                enable_pipeline: true
                bootstrap: "223.6.6.6"
              - addr: "https://doh.pub/dns-query"          # DNSPod DoH
                enable_pipeline: true
                bootstrap: "119.29.29.29"
      
        # ----- 21. 上游转发:远程 DNS(国际)-----
        - tag: forward_remote
          type: fast_forward
          args:
            upstream:
              - addr: "udpme://1.1.1.1"               # Cloudflare
              - addr: "udpme://8.8.8.8"               # Google
              - addr: "udpme://9.9.9.9"               # Quad9
              - addr: "udp://185.222.222.222"         # 备用 UDP
                #enable_pipeline: true
                #socks5: "127.0.0.1:1080"             # 可通过 SOCKS5 代理(需自行配置)
      
        # ----- 22. 主逻辑序列(核心处理流程)-----
        - tag: main_sequence
          type: sequence
          args:
            exec:
              # 步骤 1:应用 hosts 映射
              - hosts
      
              # 步骤 2:处理非域名查询(如纯 IP 反向查询)
              - if: "(query_is_non_domain)"
                exec:
                  - _new_nxdomain_response   # 返回 NXDOMAIN
                  - _return
      
              # ============================================================
              # 步骤 3:处理 PTR 查询(QType=12)- 修改后直接返回 NXDOMAIN
              # 原因:Windows nslookup 默认会查询 PTR 记录,国内 DNS 对 PTR 支持不佳导致超时
              # 直接返回 NXDOMAIN 可避免超时,不影响正常 A/AAAA 查询
              # ============================================================
              - if: "[qtype12]"              # PTR 反向查询
                exec:
                  - _no_ecs                  # 移除 ECS 信息
                  - _new_nxdomain_response   # 直接返回 NXDOMAIN(域名不存在)
                  - _return
      
              # 步骤 3b:处理 ANY 查询(QType=255)
              - if: "[qtype255]"             # ANY 查询
                exec:
                  - _no_ecs
                  - forward_local
                  - ttl_1h
                  - _return
      
              # 步骤 4:自动获取 ECS(EDNS Client Subnet)
              - ecs_auto
              - _edns0_filter_ecs_only      # 过滤只保留 ECS 信息
      
              # 步骤 5:根据 ECS 是否为局域网选择缓存
              - if: ecs_is_lan
                exec:
                  - cache_lan
                  - _no_ecs
                else_exec:
                  - cache_wan
      
              # 步骤 6:如果是局域网 ECS,再次移除 ECS(避免泄露)
              - if: ecs_is_lan
                exec:
                  - _no_ecs
      
              # 步骤 7:广告域名直接黑洞并返回
              - if: query_is_ad_domain
                exec:
                  - black_hole
                  - ttl_1h
                  - _return
      
              # 步骤 8:本地域名或 CDN 域名 → 使用本地 DNS,并检查响应是否被污染
              - if: "(query_is_local_domain) || (query_is_cdn_cn_domain)"
                exec:
                  - forward_local
                  - if: "(! response_has_gfw_ip)"   # 如果响应中没有 GFW IP,则正常返回
                    exec:
                      - ttl_1m
                      - _return
      
              # 步骤 9:GFW 列表域名 → 直接使用远程 DNS(代理)
              - if: query_is_non_local_domain
                exec:
                  - _prefer_ipv4                # 优先返回 IPv4 地址
                  - forward_remote
                  - ttl_5m
                  - _return
      
              # 步骤 10:其余未分类域名 → 优先远程,如果响应包含中国 IP 则回落到本地 DNS
              - _prefer_ipv4
              - primary:
                  - forward_remote
                  - if: response_has_local_ip
                    exec:
                      - forward_local
                      - _return
                secondary:
                  - forward_local
                  - _return
                fast_fallback: 2500            # 主上游超时后快速切换到备用
                always_standby: false
      
              # 最后设置 TTL 为 5 分钟
              - ttl_5m
      
      # ---------------------------------------------
      # DNS 服务器监听配置
      # ---------------------------------------------
      servers:
        - exec: main_sequence          # 使用上面定义的 main_sequence 处理逻辑
          timeout: 6                   # 查询超时时间(秒)
          listeners:
            - protocol: udp
              addr: "0.0.0.0:53"       # 监听所有网卡的 UDP 53 端口
            - protocol: tcp
              addr: "0.0.0.0:53"       # 监听所有网卡的 TCP 53 端口
      
      # ---------------------------------------------
      # API 接口(可选,默认注释)
      # ---------------------------------------------
      #api:
        #http: "0.0.0.0:9080"          # 开启后可通过 HTTP 查看统计信息
      

      结束语

      至此,您已成功部署了一套基于 MosDNS-X 与 EasyMosdns 的 DNS 分流服务器。它不仅具备极高的性能,还内置了针对中国大陆地区的优化规则,可有效解决 DNS 污染问题,并提供 ECS 支持以加速 CDN 调度。如有任何自定义需求(如修改上游、调整缓存策略、添加广告过滤等),均可通过编辑 /etc/mosdns/config.yaml 轻松实现。

      发布在 软件教程
      clouldonC
      clouldon
    • Win11安装Debian12.14软路由

      本教程以 Debian 12.14 在 VirtualBox / Hyper-V / VMware 中的虚拟机为例,采用桥接本机网卡方式,实现软路由功能(主要用于 LAN 侧转发 + 代理)。不需要配置 WAN 口,仅配置一个 LAN 接口。

      1. 安装 Debian 12.14 并启用 Root SSH 密码登录

      1. 下载 Debian 12.14 ISO 镜像(官方 netinst 或 full CD 均可)。

      2. 在虚拟机软件(VirtualBox / Hyper-V / VMware)中新建虚拟机:

        • 网络适配器:选择 桥接(Bridged) 到你的本机物理网卡(这样虚拟机能直接获得局域网 IP)。
        • CPU、内存、硬盘根据需求分配(推荐 2 核 + 1GB内存)。
        • 挂载 ISO 并启动安装。
      3. 安装过程中:

        • 选择语言、键盘等。
        • 分区:推荐整个磁盘(Guided - use entire disk)。
        • 设置 root 密码(重要!必须设置)。
        • 安装 SSH server(在任务选择中勾选 “SSH server”)。
      4. 安装完成后重启,进入系统。

      5. 启用 Root SSH 密码登录:

        nano /etc/ssh/sshd_config
        

        找到并修改以下两行(去掉注释 #

        PermitRootLogin yes
        PasswordAuthentication yes
        

        保存退出(Ctrl+O → Enter → Ctrl+X)。

        重启 SSH 服务:

        systemctl restart ssh
        

      2. 配置 LAN 接口(静态 IP 或 DHCP)

      1. 查看网卡名称:
      ip a
      

      例如:

      ens18
      

      或者:

      eth0
      
      1. Debian 默认使用 /etc/network/interfaces 管理网络。

      编辑配置文件:

      nano /etc/network/interfaces
      

      配置示例(静态 IP,适合软路由):

      # This file describes the network interfaces
      # and how to activate them
      
      source /etc/network/interfaces.d/*
      
      # The loopback network interface
      auto lo
      iface lo inet loopback
      
      # LAN 接口(根据虚拟机网卡名称替换见上方名称)
      auto eth0                           # 这里使用eth0示例
      iface eth0 inet static              # static静态
          address 192.168.1.11/24         # 软路由 LAN IP
          gateway 192.168.1.1             # 上级网关(通常是你的主路由器 IP)
          dns-nameservers 119.29.29.29 223.5.5.5 #dns填入
      iface eth0 inet6 dhcp                 #DHCPv6 有v6情况才写入
       post-up sysctl -w net.ipv6.conf.eth0.accept_ra=2 >/dev/null 2>&1 #RA 获取默认v6路由上网
      
      • 说明:
      • address:设置本机 LAN IP。
      • gateway:上级路由器(主路由器)的 IP,用于软路由访问外网(可选,根据需求)。
      • 如果想用 DHCP,改为:
      • 注意改为DHCP需要在路由器根据MAC地址查看IP才能连接SSH;或者虚拟机连接,查看ip
        auto eth0            
        iface eth0 inet dhcp   # dhcp顾名思义
        
      1. 保存后应用配置并重启网络及电脑:
        systemctl restart networking
        # 最好重启虚拟机
        reboot
        

      此时即可使用 SSH 客户端(推荐Netcatty;;或如 Xshell、MobaXterm、FinalShell 等),或cmd/powershell以 ssh root@IP 登录。

      1. 重启后验证:
        ip addr show
        ip route
        ping 119.29.29.29
        

      3. SSH 登录并开启 IPv4/IPv6 转发

      1. 使用 SSH 客户端以 root 登录虚拟机。

      2. 开启 IPv4/IPv6 转发(必需):


      sudo cp /etc/sysctl.conf /etc/sysctl.conf.bk_$(date +%Y%m%d_%H%M%S) && \
      sudo tee /etc/sysctl.conf << 'EOF'
      net.ipv4.ip_forward=1
      net.ipv4.conf.all.forwarding=1
      net.ipv6.conf.all.forwarding=1
      net.ipv4.tcp_congestion_control=bbr
      net.core.default_qdisc=fq
      EOF
      sudo sysctl -p
      

      1. 验证转发是否开启:
      sysctl net.ipv4.ip_forward
      sysctl net.ipv6.ip_forward
      

      应输出 net.ipv4.ip_forward = 1;net.ipv6.ip_forward = 1。

      4. 启用代理(二选一)

      选项 A:OPENPPP2(推荐隧道工具)

      内容 链接
      安装脚本 https://github.com/picetor/openppp2_install
      原版仓库 https://github.com/liulilittle/openppp2
      改版,更多特性 https://github.com/Miaocchi/openppp2
      自编译版本,兼容openwrt https://github.com/picetor/openppp2

      拉取脚本

      直连 GitHub(海外服务器或网络良好)

      wget -4 -O ppp_install.sh https://raw.githubusercontent.com/picetor/openppp2_install/main/ppp_install.sh && chmod +x ppp_install.sh && ./ppp_install.sh
      

      使用Github加速

      wget -4 -O ppp_install.sh https://git.apad.pro/https://raw.githubusercontent.com/picetor/openppp2_install/main/ppp_install.sh && chmod +x ppp_install.sh && ./ppp_install.sh
      

      运行后进入交互菜单,根据提示选择客户端模式安装配置,需准备服务端信息、修改启动脚本/opt/ppp/ppp.sh;工作目录opt/ppp

      选项 B:Clash for Linux

      项目地址: https://github.com/wnlen/clash-for-linux
      Github直连

      git clone --branch master --depth 1 https://github.com/wnlen/clash-for-linux.git
      cd clash-for-linux
      bash install.sh
      

      Github加速

      git clone --branch master --depth 1 ```
      https://ghfast.top/https://github.com/wnlen/clash-for-linux.git
      cd clash-for-linux
      bash install.sh
      

      安装完成后使用 clashon 启动,clashctl 管理订阅、节点等。详情看原仓库

      客户端配置方法

      1. Windows 手动配置

      • 打开「控制面板」→「网络和共享中心」→「更改适配器设置」
      • 右键点击当前使用的网卡(以太网或 WLAN)→「属性」
      • 双击「Internet 协议版本 4 (TCP/IPv4)」
      • 选择「使用下面的 IP 地址」:
        • IP 地址:与 Debian 同网段,例如 192.168.1.50
        • 子网掩码:255.255.255.0
        • 默认网关:192.168.1.11(Debian 的 IP)
        • DNS 服务器:可填写 223.5.5.5、119.29.29.29;;或 Debian 的 IP 192.168.1.11 前提有dns服务器
      • 点击「确定」保存。

      2. macOS 手动配置

      • 「系统设置」→「网络」→ 选择当前网络(如 Wi-Fi 或以太网)
      • 点击「详细信息」→「TCP/IP」
      • 配置 IPv4 为「手动」
        • IP 地址:192.168.1.51
        • 子网掩码:255.255.255.0
        • 路由器:192.168.1.11(Debian 的 IP)
      • DNS 可手动添加 223.5.5.5 等
      • 点击「好」保存。

      4. 手机 / 平板(Android / iOS)

      • 进入 Wi-Fi 设置,长按当前连接的 Wi-Fi →「修改网络」或「配置网络」
      • 将「IP 设置」从 DHCP 改为「静态」
      • IP 地址:例如 192.168.1.53
      • 网关:192.168.1.11(Debian 的 IP)
      • DNS:223.5.5.5 等
      • 保存。

      验证客户端是否通过软路由

      在客户端上打开浏览器,访问 https://ip.skk.moe 或 https://ipcheck.ing/,显示的 IP 应为代理出口 IP(而非上级路由的 IP)。

      也可在客户端命令行执行:

      tracert 119.29.29.29   # Windows
      traceroute 119.29.29.29  # Linux/macOS
      

      第一跳应显示 192.168.1.11(Debian 软路由地址)。


      最终结构

      +-------------+
      |  上级路由   |
      +-------------+
             │
             │ (桥接网络)
             ▼
      +-------------+
      | Debian 12.14|
      |  软路由  |
      +-------------+
             │
             ├── openppp2
             │   或
             └── Clash for Linux
             │
             │ (LAN 同网段)
             ▼
      +-------------+
      |   客户端    |
      | (PC/手机等) |
      +-------------+
      

      后续常用操作:

      • 查看网络:ip addr、ip route
      • 编辑网络接口nano /etc/network/interfaces
      • 重启网络:systemctl restart networking
      • 安装mosdns本地DNS服务端
      发布在 软件教程
      clouldonC
      clouldon
    • RE: 哈基 项目推荐

      @四折光曲 可以单开一页了

      发布在 软件教程
      clouldonC
      clouldon
    • RE: 哈基 项目推荐

      自托管服务器监控系统:https://dash.mjiji.top/

      Link Preview Image
      GitHub - Ithildur/Ithiltir: Self-hosted server monitoring dashboard with agent metrics, traffic stats, alerts, theming, and a bundled web admin console.

      Self-hosted server monitoring dashboard with agent metrics, traffic stats, alerts, theming, and a bundled web admin console. - Ithildur/Ithiltir

      favicon

      GitHub (github.com)


      Link Preview Image
      Ithiltir 文档 | Ithiltir

      Ithiltir 是一套自托管服务器监控系统,支持 Dash 集中管理与 Node 本地监控。

      favicon

      (www.ithiltir.dev)

      发布在 软件教程
      clouldonC
      clouldon
    • RE: openppp2简易使用教程

      因为在移动平台ppp的支持不好,所以我们可以采取ppp支持的代理来连接到ppp。电脑或软路由(windows,macos,linux(openwrt除外)),运行ppp,其中启动命令 --yun-host=no ,不更改系统路由。示例如下,客户端启动命令,我们甚至可以通过代理软件来分流:
      windows

      start ppp.exe --mode=client --tun-ip=10.0.0.5 --tun-gw=10.0.0.0 --tun-flash=yes --tun-mask=24 --tun-host=no --tun-vnet=yes --tun-static=no --block-quic=yes --config=./config/bwgUS.json --tun-mux=4
      

      linux:

      ./ppp --mode=client --config=./HKBN.json --tun-ip=10.0.0.8 --tun-gw=10.0.0.0 --tun-mask=24 --tun-host=no --link-restart=3 --tun-mux-acceleration=3 --tun-static=no --tun-ssmt=4/st --block-quic=yes > ./ppp.log
      

      然后根据配置文件里面的http或sock项来填写代理,当然可以通过ppp应用看到
      替代文字

      替代文字

      因为0.0.0.0代表本机地址,所以在局域网下,填入ppp客户端的IP,端口,代理类型即可达到效果
      替代文字
      效果如图
      替代文字

      发布在 软件教程
      clouldonC
      clouldon
    • Docker mongodb备份还原数据库

      查看容器名字

      docker ps
      

      进入mongodb

      docker exec -it 容器名 mongosh \
        -u '数据库应用账号' -p '数据库应用密码' \
        --authenticationDatabase admin \
      

      备份mongodb

      docker exec 容器名 mongodump \
        -u '数据库应用账号' -p '数据库应用密码' \
        --authenticationDatabase admin \
        --db nodebb --archive --gzip \
        > /home/nodebb-mongo-backup-$(date +%Y%m%d-%H%M%S).archive.gz
      

      还原mongodb

      cat /home/nodebb-mongo-backup-20250401-120000.archive.gz |
      docker exec -i 容器名 mongorestore \
        -u '数据库应用账号' -p '数据库应用密码' \
        --authenticationDatabase admin \
        --archive --gzip \
        --drop
      
      发布在 软件教程
      clouldonC
      clouldon
    • RE: 哈基 项目推荐

      @四折光曲 基于WireGuard

      发布在 软件教程
      clouldonC
      clouldon
    • RE: 四折の股票之路.WEBP

      貌似长线收益多一些,每日的波动,上下上下,不也是归零了嘛

      发布在 讨论
      clouldonC
      clouldon
    • Rustdesk自托管中继服务端安装教程

      下面就是 只安装 hbbs + hbbr 的简单版本。


      1)先看当前最新版本

      浏览器打开:

      Link Preview Image
      Release 1.1.15 · rustdesk/rustdesk-server

      RustDesk Server Program. Contribute to rustdesk/rustdesk-server development by creating an account on GitHub.

      favicon

      GitHub (github.com)

      现在会跳到 1.1.15。

      2)在 Debian 上判断你的架构

      执行:

      dpkg --print-architecture
      

      记住输出结果。
      常见是 amd64 或 arm64。

      这里我只示范 amd64。
      如果你的输出不是 amd64,只需要把下面所有命令里的 amd64 换成你的架构名。

      3)创建下载目录

      执行:

      mkdir -p ~/rustdesk-server
      cd ~/rustdesk-server
      

      4)下载第一个包:hbbs

      将下面的1.1.15换成Latest的版本号
      执行:

      wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.15/rustdesk-server-hbbs_1.1.15_amd64.deb
      

      5)下载第二个包:hbbr

      执行:

      wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.15/rustdesk-server-hbbr_1.1.15_amd64.deb
      

      6)确认两个包已经下好了

      执行:

      ls -lh *.deb
      

      正常会看到这两个文件:

      • rustdesk-server-hbbs_1.1.15_amd64.deb
      • rustdesk-server-hbbr_1.1.15_amd64.deb

      7)开始安装

      先执行:

      sudo apt update
      

      然后依次安装:

      sudo dpkg -i rustdesk-server-hbbs_1.1.15_amd64.deb
      
      sudo dpkg -i rustdesk-server-hbbr_1.1.15_amd64.deb
      

      8)如果提示依赖问题,再补一次

      执行:

      sudo apt-get -f install -y
      

      9)检查服务是否已经就绪

      先检查:

      systemctl status rustdesk-hbbs --no-pager
      
      systemctl status rustdesk-hbbr --no-pager
      

      你希望看到的是:

      active (running)
      

      10)如果没运行,就手动启动

      执行:

      sudo systemctl start rustdesk-hbbs
      
      sudo systemctl start rustdesk-hbbr
      

      然后再检查一次:

      systemctl status rustdesk-hbbs --no-pager
      
      systemctl status rustdesk-hbbr --no-pager
      

      11)查看公钥

      执行:

      cat /var/lib/rustdesk-server/id_ed25519.pub
      

      把输出内容保存好。


      12)补充端口使用

      RustDesk 官方文档给出的核心端口是:

      • TCP 21114-21119

      • UDP 21116

      其中 最小可工作端口集合 是:

      • TCP 21115

      • TCP/UDP 21116

      • TCP 21117


      这些端口分别做什么官方链接


      到底该开哪些端口

      如果你只是部署 普通 OSS 自建服务器,最稳妥的做法是直接开放:

      • 21115/tcp

      • 21116/tcp

      • 21116/udp

      • 21117/tcp

      这是官方文档定义的最小可工作端口集合。


      如果你想少折腾、一步到位,也可以直接开放:

      • 21114-21119/tcp

      • 21116/udp


      如果你用 UFW,就这样放行端口,只开最小必需端口

      sudo ufw allow 21115/tcp
      sudo ufw allow 21116/tcp
      sudo ufw allow 21116/udp
      sudo ufw allow 21117/tcp
      

      如果你想一步全开官方建议范围

      sudo ufw allow 21114:21119/tcp
      sudo ufw allow 21116/udp
      

      12)客户端怎么填

      客户端里填:

      • ID 服务器:你的服务器 IP 或域名
      • Key:刚才看到的公钥
      • 中继服务器:同ID 服务器
      • API服务器:留空

      示例

      如果你的服务器 IP 是 1.2.3.4,那客户端里填:

      • ID 服务器:1.2.3.4
      • Key:粘贴 id_ed25519.pub 的内容
      • 中继服务器:ID 服务器
      • API服务器:留空

      13)如果服务异常,先看日志

      执行:

      journalctl -u rustdesk-hbbs -n 100 --no-pager
      
      journalctl -u rustdesk-hbbr -n 100 --no-pager
      

      也可以直接看文件:

      tail -n 50 /var/log/rustdesk-server/hbbs.log
      
      tail -n 50 /var/log/rustdesk-server/hbbr.log
      

      一句话记住

      先用 dpkg --print-architecture 看架构;
      然后把我示范里的 amd64 替换成你的架构;
      下载 GitHub release 的 2 个 .deb;
      安装后检查 rustdesk-hbbs 和 rustdesk-hbbr;
      最后读取 /var/lib/rustdesk-server/id_ed25519.pub 给客户端用。

      发布在 软件教程
      clouldonC
      clouldon