Ubuntu安装 安装地址:https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/install/
安装的版本是 : 1.1.14
点击 1 2 3 1) IP 2) DNS/Domain Choose your preferred connection method: auto-resolve current WAN IP or enter your DNS/Domain:
github代理 按任意按键结束 1 2 3 4 Install Rustdesk on your machines and change your public key and IP/DNS name to the above You can get a free API with Addressbook etc via https://github.com/infiniteremote/installer Press any key to finish install waiting for the keypress
必须开放的端口(TCP+UDP) RustDesk 默认端口如下,服务器防火墙 / 云服务商安全组必须放行 :
端口号
协议
对应程序
用途
是否必需
21115
TCP
hbbs
心跳 / ID 服务器通信(如果不开启,无法知道设备是否在线)
可选
21116
TCP/UDP
hbbs
TCP 用于 RPC,UDP 用于 P2P(这个端口后期可以配置到其他端口)
必需
21117
TCP
hbbs
WebSocket 通信(备用)必需
必需
21118
TCP
hbbr
中继服务器 TCP 通信
必需
21119
UDP
hbbr
中继服务器 UDP 通信
必需
添加独立用户运行 设置这个用户不能通过ssh登录
添加RD用户sudo权限
1 2 %sudo ALL=(ALL:ALL) ALL RD ALL=(ALL:ALL) ALL
修改rustdesk的systemd 服务文件 备份 /etc/systemd/system/rustdeskrelay.service /etc/systemd/system/rustdesksignal.service
1 2 3 4 cp rustdeskrelay.service rustdeskrelay.service.bak-&(date +%y%m%d) cp rustdesksignal.service rustdesksignal.service.bak-&(date +%y%m%d) rm rustdeskrelay.service rm rustdesksignal.service
如果后续需要恢复,可以通过备份文件恢复;
重新加载配置文件 1 2 # 重新加载配置 sudo systemctl daemon-reload
添加自定义 /etc/systemd/system/rustdesk-hbbs.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [Unit] # 服务的描述,便于识别(systemctl status时会显示) Description=RustDesk ID Server (hbbs) # 服务的文档链接,可快速查阅官方文档 Documentation=https://rustdesk.com/docs/ # 定义服务启动依赖:必须等网络目标(network.target)和网络完全在线目标(network-online.target)启动后,才启动本服务 After=network.target network-online.target # 建议启动的依赖:希望network-online.target也启动(增强网络就绪性) Wants=network-online.target [Service] # 服务类型:simple表示ExecStart指定的进程就是主进程,退出则服务退出(最常用) Type=simple # 指定运行服务的用户/用户组(普通用户,最小权限原则) User=RD Group=RD # 工作目录:程序运行时的当前目录,需和安装路径一致,确保程序能找到公钥等文件 WorkingDirectory=/opt/rustdesk-server # 核心执行命令:启动hbbs程序,-r参数指定中继服务器地址(填自己的IP/域名) ExecStart=/bin/bash -c '/opt/rustdesk-server/hbbs -r 你的服务器公网IP或域名 -k "$(cat /opt/rustdesk-server/id_ed25519.pub)"' # 标准输出重定向:将程序日志追加写入指定文件(便于排查问题) StandardOutput=append:/var/log/rustdesk-hbbs.log # 标准错误重定向:错误日志也写入同一个文件 StandardError=append:/var/log/rustdesk-hbbs.log # 重启策略:仅当进程异常失败时重启(正常退出不重启) Restart=on-failure # 重启间隔:失败后等待5秒再重启(避免频繁重启) RestartSec=5s # 安全加固:禁止进程获取新的权限(防止提权) NoNewPrivileges=true # 安全加固:为服务创建独立的临时目录(避免和其他程序冲突) PrivateTmp=true # 安全加固:严格保护系统文件(仅允许读,禁止修改系统目录) ProtectSystem=strict # 安全加固:禁止访问用户家目录(/home、/root等) ProtectHome=true # 显式指定可读写的路径:仅允许修改RustDesk安装目录和日志文件 ReadWritePaths=/opt/rustdesk-server /var/log/rustdesk-hbbs.log /etc/resolv.conf /etc/hosts # 允许网络访问(RustDesk核心需求) Networking=true [Install] # 安装目标:当系统进入多用户模式(正常运行模式)时,自动启动该服务 WantedBy=multi-user.target
/etc/systemd/system/rustdesk-hbbr.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [Unit] # 服务的描述,便于识别(systemctl status时会显示)# 描述改为中继服务器 Description=RustDesk Relay Server (hbbr) # 服务的文档链接,可快速查阅官方文档 Documentation=https://rustdesk.com/docs/ # 定义服务启动依赖:必须等网络目标(network.target)和网络完全在线目标(network-online.target)启动后,才启动本服务 # 新增:网络就绪 + hbbs先启动 After=network.target network-online.target rustdesk-hbbs.service # 建议启动的依赖:希望network-online.target也启动(增强网络就绪性) Wants=network-online.target [Service] # 服务类型:simple表示ExecStart指定的进程就是主进程,退出则服务退出(最常用) Type=simple # 指定运行服务的用户/用户组(普通用户,最小权限原则) User=RD Group=RD # 工作目录:程序运行时的当前目录,需和安装路径一致,确保程序能找到公钥等文件 WorkingDirectory=/opt/rustdesk-server # 核心修正:删除无效的--log 参数(1.1.14不支持),添加-k参数(与hbbs共用公钥) # hbbr无需-r参数,仅需-k参数做认证(可选但推荐) ExecStart=/bin/bash -c '/opt/rustdesk-server/hbbr -k "$(cat /opt/rustdesk-server/id_ed25519.pub)"' # 标准输出重定向:将程序日志追加写入指定文件(便于排查问题) # 日志文件改为hbbr专属 StandardOutput=append:/var/log/rustdesk-hbbr.log # 标准错误重定向:错误日志也写入同一个文件 StandardError=append:/var/log/rustdesk-hbbr.log # 重启策略:仅当进程异常失败时重启(正常退出不重启) Restart=on-failure # 重启间隔:失败后等待5秒再重启(避免频繁重启) RestartSec=5s # 安全加固:禁止进程获取新的权限(防止提权) NoNewPrivileges=true # 安全加固:为服务创建独立的临时目录(避免和其他程序冲突) PrivateTmp=true # 安全加固:严格保护系统文件(仅允许读,禁止修改系统目录) ProtectSystem=strict # 安全加固:禁止访问用户家目录(/home、/root等) ProtectHome=true # 可读写路径改为hbbr的日志文件 # 安全加固修正: # 1. 包含程序目录+日志目录(而非仅日志文件,更兼容) # 2. 补充系统必要文件(DNS/hosts),确保网络正常 ReadWritePaths=/opt/rustdesk-server /var/log/rustdesk-hbbr.log /etc/resolv.conf /etc/hosts # 显式允许网络访问(hbbr核心依赖网络,避免安全配置禁用) Networking=true [Install] # 安装目标:当系统进入多用户模式(正常运行模式)时,自动启动该服务 WantedBy=multi-user.target
启动错误,清理启动次数 步骤 1:停止并禁用错误的服务(清除运行状态)
首先终止可能残留的错误进程,禁用服务避免开机自启,彻底解除错误状态:
1 2 3 4 5 6 7 8 9 10 11 # 停止hbbr服务(即使加载失败也要执行,清理残留进程) sudo systemctl stop rustdesk-hbbr.service sudo systemctl stop rustdesk-hbbs.service # 禁用服务(防止开机自动加载错误配置) sudo systemctl disable rustdesk-hbbr.service sudo systemctl disable rustdesk-hbbs.service # 重置服务失败状态(清除systemd记录的错误标记) sudo systemctl reset-failed rustdesk-hbbr.service sudo systemctl reset-failed rustdesk-hbbs.service
步骤 2:修复服务文件(解决加载错误的根源)
加载错误的核心原因是服务文件语法 / 配置错误,先备份错误文件,再写入正确配置:
步骤 3:重新加载并验证(关键)
1 2 3 4 5 6 7 8 9 10 11 12 # 重新加载所有systemd配置(使新的hbbr配置生效) sudo systemctl daemon-reload # 检查服务文件语法(无输出=语法完全正确) sudo systemd-analyze verify /etc/systemd/system/rustdesk-hbbr.service # 启动服务并查看状态 sudo systemctl start rustdesk-hbbr.service sudo systemctl status rustdesk-hbbr.service sudo systemctl start rustdesk-hbbs.service sudo systemctl status rustdesk-hbbs.service
验证是否真正加载成功 除了 systemctl status 显示 active (running),还需验证端口监听:
1 2 3 4 5 # 检查hbbr是否监听21118(TCP)和21119(UDP)端口 sudo ss -tulpn | grep hbbr # 正常输出示例: # tcp LISTEN 0 128 0.0.0.0:21118 0.0.0.0:* users:(("hbbr",pid=xxxx,fd=3)) # udp UNCONN 0 0 0.0.0.0:21119 0.0.0.0:* users:(("hbbr",pid=xxxx,fd=4))
ufw启动的端口 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 1. 先删除原有规则(可选,确保规则干净) ufw delete allow 21116/udp ufw delete allow 21116/tcp ufw delete allow 21117/tcp # 2. 添加统一格式的规则(注释、优先级一致) ufw allow 21115/tcp comment 'RustDesk NAT test 辅助端口(可选)' ufw allow 21116/udp comment 'RustDesk - P2P/UDP 通信(统一监听 *:21116)' ufw allow 21116/tcp comment 'RustDesk - ID/TCP 通信(统一监听 *:21116)' ufw allow 21117/tcp comment 'RustDesk - 中继/TCP 通信(统一监听 *:21117)' ufw allow 21118/tcp comment 'RustDesk - 中继/备用 TCP 通信(统一监听 *:21118' ufw allow 21119/udp comment 'RustDesk - 中继/备用 UDP 打洞(统一监听 *:21119' # 3. 重载 UFW 并验证 ufw reload ufw status numbered
更换密钥和公钥 直接使用git生成id_ed25519
1 ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "email@域名.后缀"
然后复制生成的密钥和公钥,替换掉原有的公钥和密钥,客户端key换成现在新生成公钥,公钥文件中所有的数据都要复制下来放到客户端的key中
编写make 1 2 3 4 5 6 7 DEFINE: ##默认目标 @echo "默认程序" TARGET: #生成目标
关键验证:区分 UDP P2P 和 TCP 兜底
客户端查看 连接成功后,若状态栏显示Direct,默认就是 UDP P2P;若显示Direct(TCP),则是 TCP P2P 兜底。
服务器抓包验证
这是最直接的验证方式,抓包能看到新端口的 P2P 数据交互:
1 2 3 4 5 # 抓 UDP 21116 端口流量(P2P 主力) tcpdump -i any udp port 21116 -nn # 抓 tcp 21116 端口流量(P2P 主力) tcpdump -i any tcp port 21116 -nn # 若有客户端之间的 UDP 包交互 → UDP P2P 生效
P2P 打洞成功的日志特征(和原 21116 端口逻辑一致):
1 2 3 4 # 外部客户端 → 服务器新端口的 UDP 包(打洞请求) 00:20:10.123456 eth0 In IP 113.8.23.225.xxxx > 172.16.0.4.21116: UDP, length 15 # 服务器 → 外部客户端的 UDP 包(打洞响应,双向通信建立) 00:20:10.123678 eth0 Out IP 172.16.0.4.21116 > 113.8.23.225.xxxx: UDP, length 2
fail2ban防御 filter.d 在/etc/fail2ban/filter.d/目录下新建rustdesk.conf文件,用于匹配 RustDesk 的攻击 / 扫描日志特征:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [INCLUDES] before = common.conf [Definition] # 先定义端口变量(也可在jail中定义,这里更集中) # rustdesk_ports = 21115|21116|21117|21118|21119 # 规则1:匹配RustDesk的无效连接/认证失败(hbbs/hbbr日志中的关键字) failregex = ^%(__prefix_line)s.*(RustDesk|hbbs|hbbr).*Failed to authenticate from <HOST>.*$ ^%(__prefix_line)s.*(RustDesk|hbbs|hbbr).*Invalid connection from <HOST>.*$ ^%(__prefix_line)s.*(RustDesk|hbbs|hbbr).*Rejected connection from <HOST>.*$ ^%(__prefix_line)s.*(RustDesk|hbbs|hbbr).*Too many attempts from <HOST>.*$ # 规则2:匹配端口扫描特征(syslog中的RustDesk端口高频连接失败) # ^%(__prefix_line)s.*sshd.*Connection refused by <HOST>.*:(21115|21116|21117|21118|21119).*$ # ^%(__prefix_line)s.*sshd.*Connection refused by <HOST>.*:(%(rustdesk_ports)s).*$ ^%(__prefix_line)s.*sshd.*Connection refused by <HOST>.*:(%(ports)s).*$ # ^%(__prefix_line)s.*tcp.*Connection from <HOST> to .*:(21115|21116|21117|21118|21119) .* flags=SYN.*$ # ^%(__prefix_line)s.*tcp.*Connection from <HOST> to .*:(%(rustdesk_ports)s) .* flags=SYN.*$ ^%(__prefix_line)s.*tcp.*Connection from <HOST> to .*:(%(ports)s) .* flags=SYN.*$ # 忽略本地IP和信任IP ignoreregex = ^.*from 127.0.0.1.*$ ^.*from ::1.*$ # ^.*from 192.168\..*$ # ^.*from 172.16\..*$ # ^.*from 10\..*$
批量替换脚本(适合运维自动化) 若需频繁切换端口,可写一个简单脚本批量替换过滤规则中的端口:
1 2 3 4 5 6 7 #!/bin/bash # 用法:./update_rustdesk_ports.sh "21115|21116|21120" NEW_PORTS=$1 # 替换过滤规则中的端口(备份原文件) sudo sed -i.bak "s/(21115|21116|21117|21118|21119)/($NEW_PORTS)/g" /etc/fail2ban/filter.d/rustdesk.conf # 重启fail2ban生效 sudo systemctl restart fail2ban
Jail Jail 配置文件 (/etc/fail2ban/jail.d/rustdesk.conf)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [rustdesk] enabled = true filter = rustdesk # 监控的日志文件(全覆盖攻击行为) logpath = /var/log/rustdesk-hbbs.log /var/log/rustdesk-hbbr.log /var/log/syslog /var/log/auth.log # ===================== 端口核心配置 ===================== # 定义 RustDesk 标准端口(多端口用 | 分隔,适配正则) ports = 21115|21116|21117|21118|21119 # 对应防火墙封禁的端口(用 , 分隔,适配 fail2ban 动作) port = 21115,21116,21117,21118,21119 # ===================== 封禁策略 ===================== # 检测窗口:10分钟内(短窗口适配高频扫描) findtime = 600 # 触发阈值:3次失败即封禁 maxretry = 3 # 首次封禁时长:1小时(3600秒) bantime = 3600 action = iptables-allports # 灵活配置忽略的IP段(CIDR格式,精准可控) # 仅忽略回环IP ignoreip = 127.0.0.1 ::1 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 # 可选:阶梯式封禁 # 阶梯式封禁(强化防御换IP攻击) bantime.increment = true # 每次封禁时长翻倍 bantime.factor = 1.5 # 随机增加0~1小时封禁时间 bantime.rndtime = 3600 # 最大封禁7天(可设为 permanent 永久封禁) bantime.maxtime = 604800 # 可选:永久封禁(慎用!误封后需手动解封) # bantime.maxtime = permanent # 历史记录保留时间(7天) bantime.multipliers = 1 5 10 24 # ===================== 忽略IP配置 ===================== # 忽略回环IP+内网IP段(CIDR格式,精准可控) ignoreip = 127.0.0.1 ::1 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 # ===================== 封禁动作 ===================== # 封禁IP的所有端口(若仅封禁指定端口,改为 iptables-multiport) iptables-allports #action = iptables-allports
若设 bantime.maxtime = permanent(永久封禁),误封合法 IP 后需手动解封 :
1 2 # 手动解封永久封禁的IP sudo fail2ban-client set rustdesk unbanip 192.168.1.100
长越长,防御效果越好,但需确保 maxretry(触发封禁的失败次数)不要设太低(比如至少 3 次),避免误封(比如合法 IP 输错密码 / 端口)。
重新加载 fail2ban
1 2 3 4 5 6 7 8 9 10 # 允许 80/TCP(HTTP 跳转) ufw allow 80/tcp comment 'HTTP 跳转 HTTPS' # 允许 443/TCP(HTTPS 主入口) ufw allow 443/tcp comment 'HTTPS 核心入口' # 允许 21116/UDP(ID 心跳检测) ufw allow 21116/udp comment 'RustDesk UDP 心跳' # 允许本机访问 21115-21119(仅本机,拒绝外部访问) ufw allow from 127.0.0.1 to any port 21115:21119 comment '本机访问 RustDesk 后端' # 拒绝外部访问 21115-21119(兜底) ufw deny 21115:21119/tcp comment '拒绝外部访问 RustDesk 后端 TCP'
1 2 3 4 5 6 7 8 9 10 11 # 1. 创建 RD 用户的家目录 mkdir -p /home/RD/.config/rustdesk # 2. 赋权给 RD 用户 chown -R RD:RD /home/rustdesk # 3. 重启 hbbs 消除警告 systemctl restart rustdesk-hbbs.service # 4. 验证日志(警告消失) tail -f /var/log/rustdesk-hbbs.log
Windowns 安装 rustdesk 下载地址:https://github.com/rustdesk/rustdesk-server/releases 下载这个文件:rustdesk-server-windows-x86_64-unsigned.zip
nssm下载地址:https://nssm.cc/download 下载这个文件https://nssm.cc/release/nssm-2.24.zip
官网安装文章:https://rustdesk.com/docs/zh-cn/self-host/rustdesk-server-oss/windows/
上面这种方式是我选的,也可以选外的
开启的端口和上面相同 目录配置 选择一个地方创建一个目录 RustDesk_Server如下
其中id_ed25519 id_ed25519.pub 是自动生成的,不用管;如果想要更换这两个文件,先卸载暗转,然后再安装文件就可以了。
安装文件install_rustdesk_service.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 @echo off chcp 65001 >nul echo ====================== 开始注册 RustDesk 服务 ====================== :: 定义路径(需修改为你的实际路径) set "BASE_ADDRESS = 这里填写你要安装的目录" set "RUSTDESK_SERVER_DIR=%BASE_ADDRESS%\RustDesk_Server\x86_64" set "NSSM_PATH=%BASE_ADDRESS%\RustDesk_Server\nssm-2.24\win64\nssm.exe" set "SERVER_IP=temp1ali.goupos.cn" :: 替换为服务端本机IP set "RustDesk_HBBS = RustDesk hbbs service" set "RustDesk_HBBR = RustDesk hbbr Service" set "PUB_KEY_FILE=%BASE_ADDRESS%\RustDesk_Server\x86_64\id_ed25519.pub" :: 公钥文件路径 :: 检查路径是否存在 if not exist "%RUSTDESK_SERVER_DIR%\hbbs.exe" ( echo 错误:hbbs.exe 不存在,请检查路径! pause exit /b 1 ) if not exist "%RUSTDESK_SERVER_DIR%\hbbr.exe" ( echo 错误:hbbr.exe 不存在,请检查路径! pause exit /b 1 ) if not exist "%NSSM_PATH%" ( echo 错误:nssm.exe 不存在,请将 nssm.exe 放到 %RUSTDESK_SERVER_DIR% 目录! pause exit /b 1 ) :: 注册 hbbs 服务 -k "%PUBLIC_KEY%" echo 正在注册 RustDesk_HBBS 服务... "%NSSM_PATH%" install RustDesk_HBBS "%RUSTDESK_SERVER_DIR%\hbbs.exe" -r %SERVER_IP% "%NSSM_PATH%" set RustDesk_HBBS Start SERVICE_AUTO_START "%NSSM_PATH%" set RustDesk_HBBS AppRestartDelay 10000 "%NSSM_PATH%" set RustDesk_HBBS AppRestartCount 3 :: 注册 hbbr 服务 echo 正在注册 RustDesk_HBBR 服务... "%NSSM_PATH%" install RustDesk_HBBR "%RUSTDESK_SERVER_DIR%\hbbr.exe" "%NSSM_PATH%" set RustDesk_HBBR Start SERVICE_AUTO_START "%NSSM_PATH%" set RustDesk_HBBR AppRestartDelay 10000 "%NSSM_PATH%" set RustDesk_HBBR AppRestartCount 3 :: 启动服务 echo 正在启动 RustDesk 服务... "%NSSM_PATH%" start RustDesk_HBBS "%NSSM_PATH%" start RustDesk_HBBR :: 验证服务状态 echo ====================== 服务状态检查 ====================== "%NSSM_PATH%" status RustDesk_HBBS "%NSSM_PATH%" status RustDesk_HBBR echo ====================== 操作完成 ====================== echo 若服务状态为 Running 则注册启动成功! pause
卸载安装uninstall_rustdesk_service.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 @echo off chcp 65001 >nul echo ====================== 开始卸载 RustDesk 服务 ====================== :: 定义 NSSM 路径(需修改为实际路径) set "BASE_ADDRESS = 这里填写你要安装的目录" set "NSSM_PATH=%BASE_ADDRESS%\RustDesk_Server\nssm-2.24\win64\nssm.exe" set "RustDesk_HBBS = RustDesk hbbs service" set "RustDesk_HBBR = RustDesk hbbr Service" :: 检查 nssm.exe 是否存在 if not exist "%NSSM_PATH%" ( echo 错误:nssm.exe 不存在,请检查路径! pause exit /b 1 ) :: 停止服务 echo 正在停止 RustDesk 服务... "%NSSM_PATH%" stop RustDesk_HBBS "%NSSM_PATH%" stop RustDesk_HBBR :: 删除服务 echo 正在删除 RustDesk 服务... "%NSSM_PATH%" remove RustDesk_HBBS confirm "%NSSM_PATH%" remove RustDesk_HBBR confirm echo ====================== 卸载完成 ====================== echo RustDesk 服务已停止并删除! pause
重启安装restart_rustdesk_service.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 @echo off chcp 65001 >nul echo ====================== 开始重启 RustDesk 服务 ====================== set "BASE_ADDRESS = 这里填写你要安装的目录" set "NSSM_PATH=%BASE_ADDRESS%\RustDesk_Server\nssm-2.24\win64\nssm.exe" set "RustDesk_HBBS = RustDesk hbbs service" set "RustDesk_HBBR = RustDesk hbbr Service" if not exist "%NSSM_PATH%" ( echo 错误:nssm.exe 不存在! pause exit /b 1 ) "%NSSM_PATH%" restart RustDesk_HBBS "%NSSM_PATH%" restart RustDesk_HBBR echo 服务重启完成,当前状态: "%NSSM_PATH%" status RustDesk_HBBS "%NSSM_PATH%" status RustDesk_HBBR pause
这些地方只需要配置 BASE_ADDRESS 这个值
.env文件配置1 2 3 4 5 6 7 # https://github.com/rustdesk/rustdesk-server#env-variables RUST_LOG=info relay-servers=填写域名 Key = 添加你自己的公钥,复制公钥内容填写 #这是配置的多节点服务器 rendezvous-servers=192.168.25.48,192.168.52.3,192.168.100.2 port = 30000
注意 只要修改了端口,那么所有的端口都会跟随变化
21115
21116(默认端口)
21117
21118
21119
29999
30000(修改后的端口)
30001
30002
30003
客户端:ID/中继服务器,如果修改的端口是:30000
ID服务器格式
你服务器IP:修改后的端口 你服务器IP:30000
中继服务器格式
你服务器IP:修改后的端口 你服务器IP:30000
修改端口号,好像无法通讯,有能力的测试或者实验一下