Azure VM通过Cloudflare隧道隐藏公网访问的技术咨询
用Cloudflare Tunnel隐藏Azure VM公网访问的实现步骤
前提准备
- 拥有Cloudflare账号,且已将用于访问网站的域名(或子域名)托管至Cloudflare
- Azure VM可正常访问互联网(用于安装Cloudflare Tunnel客户端)
- VM上的网站服务正常运行(比如监听80/443端口)
步骤1:创建Cloudflare Tunnel
- 登录Cloudflare控制台,进入Zero Trust板块(免费版即可满足需求,无需付费升级)
- 左侧导航栏选择Access > Tunnels,点击Create a tunnel
- 为隧道命名(例如
azure-vm-web-tunnel),点击Save tunnel
步骤2:在Azure VM上安装Cloudflare Tunnel客户端(cloudflared)
Windows VM操作
- 打开管理员权限的PowerShell,执行命令下载客户端安装包:
Invoke-WebRequest -Uri https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi -OutFile cloudflared.msi - 运行下载好的MSI文件完成安装,然后验证安装状态:
cloudflared --version - 返回Cloudflare控制台的隧道创建页面,复制对应Windows系统的授权命令(格式类似
cloudflared service install <TOKEN>),在PowerShell中执行,完成客户端与隧道的绑定
Linux VM操作(以Ubuntu为例)
- 打开终端,执行命令下载并安装客户端:
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb sudo dpkg -i cloudflared.deb sudo apt-get install -f - 验证安装状态:
cloudflared --version - 复制控制台提供的Linux授权命令(格式类似
cloudflared service install <TOKEN>)执行,完成客户端与隧道的绑定
步骤3:配置隧道路由规则
- 隧道创建完成后,进入Public Hostname标签页,点击Add a public hostname
- 在Hostname字段填入你要用来访问网站的域名(例如
web.yourdomain.com) - Service区域选择HTTP,输入VM内部的服务地址和端口(比如
localhost:80,如果网站监听本地80端口;若为其他端口则对应修改) - 按需配置TLS设置(默认已开启HTTPS访问),点击Save hostname
步骤4:移除Azure VM的公网访问
- 登录Azure门户,找到目标VM,进入网络板块
- 找到VM绑定的公共IP地址,点击该资源后选择解除关联,可直接删除该公共IP(或保留但确保无NSG规则允许公网访问)
- 检查VM的网络安全组(NSG),删除所有允许80/443等网站端口的公网入站规则;若需远程管理VM,仅保留VNet内部或特定可信IP的访问规则(如SSH/RDP),或直接禁用公网远程访问
验证效果
- 使用浏览器访问配置好的Cloudflare域名(例如
web.yourdomain.com),确认网站可正常加载 - 尝试访问VM原公网IP(若已删除则跳过),确认无法访问,即公网访问已被成功隐藏
内容的提问来源于stack exchange,提问作者André Miranda
相关产品推荐
相关产品推荐

