内网穿透
暴露端口带来的安全风险由用户自行承担。我们推荐使用内部 IP 地址来访问应用服务, 以减少端口对外映射的风险。
您需要升级客户端到 CloudNet_v1.36.2-7 以上版本才支持该功能.
根据监管部门的要求: 使用国内入口(包括香港)的映射需要遵守国家法律法规,且内容合规,如果触发违规警告,系统会停止映射,用户需要提供合规材料才能恢复.
本文将介绍什么是内网映射(内网穿透 / 端口映射), 以及如何在 Cloudnet 中创建内网映射隧道 (tunnel) 并配置端口转发; 同时给出常见 HTTP 502/503 错误和 CORS 跨域问题的排查方法.
什么是内网映射(内网穿透)
内网映射, 又称为端口映射或内网穿透, 是一种网络地址转换(NAT)技术。它允许在内部网络和互联网之间建立一个直接的连接, 使得外部网络(如互联网)能够访问内部网络中的特定设备或服务。
在许多场景下, 内网映射技术非常有用。例如, 如果您在家里有一台私有服务器或开发测试环境, 希望能够从外部网络访问它, 就可以通过内网映射将本地服务映射到一个公网 IP 地址或端口, 这样您就可以从任何地方通过互联网访问该服务。
传统的内网映射实现通常需要在路由器或防火墙上进行配置, 设置哪些端口应该被映射, 以及它们应该被映射到内部网络中的哪个设备。然后, 当来自外部网络的请求到达映射端口时, 路由器或防火墙会自动将请求转发到内部网络中的正确设备。而使用 Cloudnet 的内网映射功能, 则可以在无需手动配置路由器的情况下, 更简单地完成上述端口转发。
Cloudnet 内网映射的优势
- Cloudnet 的内网映射(内网穿透)功能不需要您手动配置路由器或防火墙, 只需在用户中心配置好内网映射的端口和协议, 即可完成端口转发.
- Cloudnet 的内网映射功能支持多种协议: TCP/UDP/HTTP/HTTPS, 适用于 Web 服务、API 回调、Webhook 开发回调、游戏联机等多种场景.
- Cloudnet 的内网映射功能底层基于 QUIC 协议实现, 并结合 KCP 优化算法, 提供更高的端口转发性能, 相比传统方案, TCP/UDP 端口转发性能可提升 30% 以上, 且公网入口均配备 2Gbps 的 BGP 超大带宽, 充分保证内网穿透的稳定性和访问体验。
服务内容
- 基于 KCP+QUIC 协议开发实现的内网穿透, 性能更高
- 如果您本地网络的 UDP 流量被运营商严重 QoS, 可手动切换到备用方案 mTCP 协议
- 不限带宽, 按流量计费, 最大带宽支持 2Gbps, 已覆盖全国各地 BGP 线路节点
- 支持 TCP/UDP/HTTP/HTTPS 协议
- 不限连接数, 每账户支持的最高并发数请参考套餐配额
- 支持自定义域名, 适用于免费和付费用户
- 客户端免配置, 掉线后可在 5s 内快速重连
- 多城市入口可选, 距离越近延时越低, 速度越快
- 支持多个城市入口绑定到同一个设备, 可实现负载均衡和高可用
典型使用场景
- 远程访问家用 NAS、开发测试环境或内网管理后台。
- 为 GitHub/GitLab 等代码托管平台提供 Webhook / 开发回调地址, 在本地环境调试回调接口.
- 将公司/工作室内部的 HTTP/HTTPS 服务、安全运维面板通过 Cloudnet 内网穿透安全暴露给指定的外部访问者.
- 为游戏联机、物联网设备远程控制等场景提供稳定的 TCP/UDP 端口映射能力.
如何使用 Cloudnet 内网映射
请注意: 内网映射功能会消耗中继服务的流量.
典型操作流程如下:
- 登录 Cloudnet 用户中心, 在「内网映射」页面创建映射规则(选择入口城市、协议、端口、目标 IP/端口等)。
- 保存后, 系统会自动将映射规则推送给您的客户端.
- 客户端收到规则后会自动创建转发隧道(tunnel), 无需额外手工配置.
- 最后您就可以通过分配的公网端口或域名, 访问位于内网中的服务.
FAQ:常见问题与故障排查
CORS 跨域问题
当您的前端页面通过 Cloudnet 提供的域名访问后端接口时, 浏览器会受到同源策略限制, 需要正确配置 CORS 头.
如果您使用了系统生成的域名或自定义域名, 请确保您的程序正确处理了 CORS 跨域问题.
解决方法: 在您的程序中添加 CORS 头, 例如:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization
请确保您的网页应用正确处理了 CORS 跨域问题, 否则可能会导致页面无法正常访问或显示错误.
使用 HTTP 映射的问题处理
使用 HTTP 映射后出现 503 错误的问题
如果您是在公司或单位使用, 请确认您的上层网络中是否有内容审查或安全检查系统, 这类系统通常会拦截 HTTP 请求, 因为 HTTP 是不安全的明文协议, 内容也是明文传输的, 容易被检查和篡改, 从而导致 503 错误。
解决方法: 建议将公网入口改用 HTTPS 映射。HTTPS 是安全的加密协议, 内容在传输过程中无法被明文检测和篡改。内部转发的配置无需改动, 仍然可以使用 HTTP 访问您的内网服务。
使用 HTTP 映射后访问的内容与实际内容不一致
出现这种现象一般是访问者的 HTTP 内容被篡改。访问者可能处在一个不安全的网络环境中, 由于 HTTP 是明文协议, 所以可能被运营商或上层网络的安全检查系统插入或修改内容, 导致访问的页面与实际内容不一致。
解决方法: 同样建议将公网入口改用 HTTPS 映射。HTTPS 是安全的协议, 内容是加密传输的, 无法被中间链路随意检测和篡改。内部转发的配置无需改动, 仍然使用 HTTP 即可.
如何将底层传输协议 KCP 切换为 mTCP 协议
虽然 KCP 有着很高的性能, 但是由于国内网络环境的特殊性, 部分用户的本地 UDP 流量会被运营商严重 QoS 限制, 尤其是在校园网、教育网、广电网络、移动宽带等环境下。此时您可以手动切换到备用方案 mTCP 协议, 以提高内网穿透的稳定性和性能.
- 切换方法: 在
内网映射->设置中将优先使用 KCP选项禁用即可. - 升级客户端: Cloudnet 内核版本需 >= 1.36.2.9
注意: 对于已经创建的映射规则不受影响. 禁用后新创建的映射规则才会使用 mTCP 协议.
使用自定义域名的注意事项
使用海外入口
- 域名无需备案, 因为海外不受国内备案政策的影响
- 请在 DNS 服务商处添加域名解析记录, 指向我们入口的 CNAME 地址, 例如: beijing-01.dayunet.com
- 如果配置了自定义域名, 那么入口映射协议不能使用 HTTPS, 因为我们的服务器没有您域名的 SSL 证书, 所以无法在入口处理证书请求。您可以通过绑定 SNI 转发的方式实现 HTTPS 访问
- 如果使用 mTCP 协议, 请确保自定义域名的前缀是 mt-, 例如: mt-mynet.dayunet.com, 否则会出现 503 错误
使用国内入口
- 域名需已备案,因为国内受备案政策的影响, 根据国家监管政策, 未备案的域名可能无法通过国内数据中心的备案检测系统
- 请在 DNS 服务商处添加域名解析记录, 指向我们入口的 CNAME 地址, 例如: beijing-01.dayunet.com
- 如果配置了自定义域名,那么入口映射协议不能使用 HTTPS, 因为我们的服务器没有您域名的 SSL 证书,所以无法在入口处理证书请求. 您可以通过绑定 SNI 转发的方式实现 HTTPS 访问
- 如果使用 mTCP 协议,请确保自定义域名的前缀是 mt-,例如: mt-mynet.dayunet.com, 否则会出现 503 错误
以上条件均满足后, 您就可以使用自定义域名来访问您的内部服务了, 否则可能会出现 404 错误或域名未备案的提示.
HTTP 502 错误的排查
- 确保已经安装了最新版的 Cloudnet 客户端
- 创建成功后需等待 1-2 分钟, 系统会自动推送映射规则到客户端, 如果您的客户端不在线, 则无法推送, 请确保客户端在线;
- 您的套餐是否已过期;
- 中继服务流量是否已经用尽;
- 客户端的状态是否在线;
- 转发的目的 IP 是否正确, 且端口是否可通;
- 请确保映射协议一致, 例如: 如果您使用的是 TCP/UDP 端口映射, 而端口上运行的并非 HTTP 服务, 则不能直接通过浏览器访问;
HTTP 503 错误的排查
在进行排查之前请确保您的映射规则是有效的, 转发的目标 IP 和端口能够从您的设备正常访问。确认无误后, 再按照以下步骤排查:
- 确保已经安装了 最新版 Cloudnet 客户端, Linux 请使用 apt/yum 升级!
- 如果您在原有的映射规则上更换了设备, 请务必要重启原设备的客户端服务以释放连接, 然后在新设备上重启服务, 才能让服务器连接到新的设备;
- 使用内网映射时请勿开启 IP 广播服务;
- 确认电脑未开启全局代理或 VPN;
- 如果开启了防火墙, 建议先暂时禁用防火墙, 然后再测试;
- 请确认电脑的 DNS 能否正确解析 api.cloudnet.world 及其子域名;
- 更换其他设备或网络测试, 排除是否为本地网络或设备原因;
- HTTP/HTTPS 映射的域名与您客户端的隧道 ID 是一一对应的, 如果您将多个映射的域名修改为相同的值, 会导致服务器无法路由, 从而出现 503 错误;
- 公网入口的 HTTPS 可以转发到您内网的 HTTP, 但是反过来不行; 不能使用 HTTP 入口转发到您内网的 HTTPS, 否则会出现 503 错误;
- 在没有绑定自定义域名的情况下, 请勿修改系统生成的域名, 否则会出现 503 错误。
如果经过以上步骤后仍然没有解决问题, 请提工单给我们, 我们会协助您排查并解决问题!