Azure 12个月免费 Azure微软云服务器网络过滤设置

微软云Azure / 2026-04-25 20:44:51

前言:云里也得“管得住”流量

在本地机房里,大家对“网络过滤”这事儿基本都熟:路由器/防火墙策略一条条贴上去,开几个端口,关几个端口,剩下的就交给规则去拦。可到了 Azure(微软云)之后,很多人会发现:同样是“过滤”,但工具长得不太一样,概念也容易互相打架。

你可能会遇到这样的经典场景:明明在服务器里开了端口,安全组里也看着没问题,但就是外面连不上;或者你放行了 80 端口,结果 HTTPS 不通;再或者你写了规则,却发现效力在另一层被“盖章”了。别慌,这篇文章就专门讲清楚 Azure 云服务器网络过滤设置该怎么做,怎么配才不容易踩坑。

先把概念捋顺:Azure 里到底“过滤”谁

Azure 的网络过滤常见涉及三类东西:网络安全组(Network Security Group,简称 NSG)、Azure 防火墙(Azure Firewall)、以及应用层/网络层的其他“配套控件”(比如路由、策略、第三方设备等)。你可以把它们理解成:门禁系统、保安亭、以及“你得先过安检再进楼”的那种额外流程。

NSG:最常用的“门禁规则”

NSG 是最常见的网络过滤方式,通常用于虚拟机(VM)子网或网卡(NIC)级别。你可以为入站(Inbound)和出站(Outbound)分别设置规则:

  • 入站:外面谁能连进来(比如互联网访问 Web 服务器)。
  • 出站:这台机器能访问外面哪些目的地(比如应用需要拉取更新包、连接数据库等)。

NSG 规则有优先级(默认按优先级数值从小到大生效),并且每条规则还会包含协议(TCP/UDP/ICMP 等)、端口、源/目的地址范围。

Azure Firewall:更像“专职保安亭 + 统一出入口”

当你想要更集中、更高级、更可审计的出站控制,或者希望对多个资源统一管理时,Azure Firewall 会更合适。它可以对出站进行更精细的策略管理,也适合和路由(UDR)配合使用,把流量引导到防火墙处。

不过本文重点会放在“云服务器网络过滤设置”的常用落点,也就是 NSG 的配置与排错,因为大多数团队从这里开始,最实用也最容易上手。

别忽略:关联位置决定生效范围

NSG 可以关联到两个地方:

  • 子网级别:该子网内所有资源(通常是 NIC)都受影响。
  • 网卡级别:只对某台机器的网卡生效。

如果你把 NSG 同时挂在子网和网卡上,那就要注意组合生效后的结果(规则可能叠加或被覆盖)。简单说:别同时在两个地方“写了两套宇宙规则”,最后自己都不清楚哪条才是对的。

入门配置:从“规则长什么样”开始

我们用一个常见需求开场:有一台 Azure 虚拟机作为 Web 服务器,希望外网访问 HTTP(80)和 HTTPS(443),同时允许服务器主动访问外部(比如下载依赖或访问外部 API),但不希望出现“随便谁都能扫端口”的情况。

第一步:明确你的流量方向与对象

  • 外网访问 Web:属于 入站
  • 服务器访问外部:属于 出站
  • 需要限制的通常是:入站(谁能进来),以及出站(能不能随意出去)

第二步:建立 NSG(或使用默认的)

创建或选择 NSG 后,关键是要做“最小放行原则”:能精确到端口就别放整个协议栈;能限制到来源 IP 就别用 0.0.0.0/0。

例如:Web 服务入站规则通常这样想:

  • 允许 TCP 80:源地址(建议限制为你的访问方或 CDN 网段;如果确实要开放互联网,再用 0.0.0.0/0)
  • 允许 TCP 443:同上
  • 拒绝其他入站端口:通过“默认拒绝”或显式规则实现

第三步:规则示例(以安全组方式)

假设你希望只开放 Web:

  • 入站规则 1:Allow-HTTP,TCP,端口 80,源为你的地址范围,目标由系统隐含为资源本身
  • 入站规则 2:Allow-HTTPS,TCP,端口 443,同上
  • 入站规则 3:Deny-All-Other(可不显式写死,取决于 NSG 默认策略;但你至少要确保没有其他允许规则误放行)

出站规则方面:

  • 一般来说,允许必要的出站(比如访问 DNS 53、HTTP/HTTPS 443 用于拉取依赖等)。
  • 如果你要更严格,可以把出站目标限制到特定服务或地址段。

进阶:别只会放行,还要会“封得漂亮”

现实世界里,恶意扫描不会跟你讲道理。你要做的不是“开放得多”,而是“开放得刚好”。下面几个策略能显著提高网络过滤的质量。

策略一:限制来源地址(减少攻击面)

最简单有效的做法之一:不要让所有入站都来自 0.0.0.0/0,除非你真的必须公开服务。

例如:

  • 运维管理(SSH/RDP)只允许你办公网络或跳板机所在的 IP 段访问。
  • 数据库只允许来自应用服务器所在子网或应用服务器 IP 访问。
  • 管理接口尽量限制到特定地址。

这一步的收益非常大:你防住的可能不是“黑客”,而是那种每天在互联网上四处扫端口的自动脚本。

策略二:使用端口与协议精确匹配

别把 TCP 80 放成“TCP 任意端口”,也别把 HTTPS 端口弄错。看起来是低级错误,但真的有人这么做,然后跑来问“为什么 443 还是不通”。

记住:NSG 是网络层过滤,应用层还得再看反向代理、应用监听端口、证书配置等。

策略三:优先级一定要想明白

NSG 中规则有优先级。优先级越小越先匹配。比如:

  • Allow-HTTP(优先级 100)
  • Deny-All-Inbound(优先级 200)

这样会产生正确效果:HTTP 先被允许,其他再被拒绝。反过来如果你把 deny 放在更前面,HTTP 也会被挡住。

建议你在团队内形成一个约定,比如:允许规则统一使用 100-199,拒绝/兜底规则使用 900-999,避免“你改我也改”的优先级冲突。

典型场景:按业务来配,不要凭感觉乱点

下面给你几个常见场景的网络过滤思路。你可以把它当成“配置地图”,用业务倒推规则。

场景 1:公网 Web 服务器(允许 80/443,禁掉其他入站)

需求:互联网用户可以访问网站;不要允许外部直接访问 SSH/RDP;让系统只开放必须端口。

NSG 入站规则:

  • Allow TCP 80(源:Internet 或你的 CDN 网段)
  • Allow TCP 443(源:Internet 或你的 CDN 网段)
  • Deny 其他入站(确保没有额外 allow)

NSG 出站规则:

  • Azure 12个月免费 允许解析 DNS(通常 UDP/TCP 53,具体看环境)
  • Azure 12个月免费 允许访问外部的 80/443(拉取依赖、访问第三方服务)
  • 其他可按需收紧

常见坑:

  • 网站配置监听在 8080,但你放行的是 80/443。
  • 容器/反向代理没起来,端口虽然放行了,但服务根本不在。
  • 你配的是 NSG,但实际网卡关联的不是这个 NSG(或关联到错误子网)。

场景 2:数据库服务器(只允许应用访问,不允许公网直连)

数据库安全是重中之重。合理做法是:数据库不暴露公网,只让应用服务器能连。

假设应用服务器在某个子网(比如 app-subnet),数据库在 db-subnet。

NSG 入站规则(对数据库网卡或 db-subnet):

  • Allow TCP 3306(MySQL 示例),源为 app-subnet 或应用服务器 IP 段
  • Allow TCP 5432(PostgreSQL 示例),源为 app-subnet 或应用服务器 IP 段
  • Deny 其他入站

这样做的好处是:就算有人在互联网上猜到数据库端口,还是进不来。

额外建议:即使 NSG 限制了源地址,也建议数据库层再做最小权限账号与防爆破配置。

场景 3:运维跳板(RDP/SSH 不直接暴露)

很多团队喜欢“为了省事直接开 22/3389 给全网”。这种省事叫做“未来事故的预告片”。更稳的做法是跳板机(Bastion 或运维专用 VM),对外只开放跳板所需端口,对内再开放。

思路:

  • 对业务机器:入站允许来自跳板机 IP 段的 SSH/RDP
  • 对跳板机:入站只允许你的办公 IP 段(比如你家宽带或公司办公网出口)

这样你在外面要运维时,安全性主要由跳板机控制;业务机器不会直接沦为“互联网自由练习场”。

场景 4:封禁异常(只允许少量管理端口 + 记录与回溯)

当你遇到某类异常流量(比如某端口被频繁扫、某 IP 段异常),你可以做两件事:过滤和追踪。

过滤层面:

  • 对管理端口(如 API 管理、内网接口)只允许特定来源。
  • 必要时增加拒绝规则,优先级放到允许规则之前或之后取决于你想要的效果。

追踪层面:

  • 确保网络日志或诊断日志开启(用于回溯是谁在打、打了什么端口、流量是否被拒绝)。
  • 定期检查 NSG 规则是否被“临时放行”后忘记收回。

排错宝典:为什么“我都配了还是不通”

网络过滤配置最让人崩溃的时刻通常是:你觉得你做对了,但结果不对。下面给你一套实用的排错顺序(按优先级从高到低),基本能覆盖 80% 的问题。

第一步:确认你配到的是“正确的关联位置”

NSG 可能关联在子网或网卡。你要确认:

  • 虚拟机的网卡是否关联了你以为的 NSG。
  • 子网级 NSG 是否存在并影响了结果。

你可以把它理解成:你在门禁系统 A 放了“允许”,但这扇门实际用的是门禁系统 B。

第二步:方向别搞反(入站 vs 出站)

很多人只看“我想让外面进来”,然后只改了出站规则。注意:

  • 外部访问 VM:看 入站
  • VM 访问外部:看 出站

方向搞错就会出现一种很神奇的现象:你放行了,但其实不是同一条“路”。

第三步:端口与协议要对号入座

TCP 与 UDP 不同;80/443 不同;源端口也可能被误解(虽然 NSG 主要看目的端口)。你要确认:

  • 规则里选择的是 TCP 还是 UDP
  • 端口号是否一致
  • 服务监听是否在该端口(在虚拟机里用命令或应用配置确认)

第四步:检查优先级与拒绝规则

Azure 12个月免费 如果存在“拒绝所有其他入站”的兜底规则,那么你新增的允许规则是否优先级更高(数值更小)就很关键。

建议做法:在规则名称上标注优先级范围,团队维护时不容易乱。

第五步:别忘了操作系统防火墙/应用监听

NSG 只是云网络层的过滤,不等于机器内部一定允许。

  • Linux/Windows 防火墙是否放行端口?
  • 应用是否确实在监听 0.0.0.0 或对应网卡地址?
  • 是否被反向代理/容器网络配置影响?

一句话总结:网络过滤之外还有“地板上的地砖”,不对也会绊倒你。

第六步:用“验证工具/测试请求”缩小范围

排错时别凭感觉。你可以通过不同网络路径做测试:

  • 从允许的源 IP 测试。
  • 从不允许的源 IP 测试(确保确实被拒绝)。
  • 在开放端口上做简单连接测试(例如访问 HTTP 返回状态)。

测试的目的不是炫技,是为了验证“规则是否按预期生效”。

最佳实践:让网络过滤可维护、可审计、少翻车

配置能跑起来是一回事,能长期维护又是另一回事。下面这些建议你可以拿去和团队“立规矩”。

实践 1:最小权限 + 先放行再收紧

Azure 12个月免费 初期搭建阶段可以稍微宽松,但要在上线前进行收敛。比如:

  • 先确认服务可用
  • 再把入站限制为必要端口与必要来源
  • 最后检查出站是否过度开放

不要上线后才想起“哎我们之前为了调试放宽了一下”。这种“放宽”最容易在数周后成为安全债务。

实践 2:规则命名与分组有标准

建议命名包含:业务/环境/用途/协议端口。

例如:
dev-web-allow-https-tcp-443(开发环境 Web 允许 HTTPS)
prod-db-allow-mysql-tcp-3306-from-appsubnet(生产数据库允许来自应用子网的 MySQL)

当你两个月后回来看到这些规则,至少不会“看着像外星语言”。

实践 3:尽量使用子网 NSG 做统一管理

当你的虚拟机数量多且分层清晰(web/db/app 分子网),用子网级 NSG 管理会更直观。但如果你有“同一子网内少数机器例外”,再用网卡级 NSG 处理差异即可。

一句话:能用子网统一就别每台机器都手工加规则。

实践 4:开启日志与回溯

网络过滤一旦出了问题,日志就是救命稻草。确保你:

  • 能看到拒绝/允许的记录
  • Azure 12个月免费 能追溯源地址、目标端口、时间
  • 能对异常进行统计

不然你只能靠“我觉得当时应该是这样”,那是推理小说,不是运维。

关于性能与规模:网络过滤也会影响体验

很多人关心“过滤会不会慢”。答案是:通常 NSG 的性能足够支撑绝大多数场景,但你需要注意两点:

  • 规则数量:规则太多会让管理变复杂,也可能带来排错成本上升。
  • 不必要的放宽:如果出站/入站规则特别宽泛,虽然不一定慢,但安全风险更大。

当规模很大或安全要求很高时,再考虑 Azure Firewall 或更系统的网络治理方案。

小结:把网络过滤当成“防守体系”,而不是“临时补丁”

Azure 微软云服务器的网络过滤设置,本质上就是:用 NSG/防火墙规则把流量分门别类,让你真正需要的进得来、不需要的进不来;同时让你允许出去的出去、拒绝出去的别出去。

如果你只记住三句话:

  • 先想清方向(入站/出站),再下规则。
  • 规则要精确(端口/协议/来源范围),别图省事开大。
  • 排错按顺序(关联位置、优先级、端口协议、再到 OS/应用)。

这样你就不会再陷入“我明明配了为什么不通”的循环里。网络过滤不是玄学,是体系;是当你把规则当成防线,而不是临时贴纸时,它才真的可靠。

如果你愿意,我可以按你的实际环境给出规则草案

你可以告诉我:你的虚拟机用途(Web/数据库/应用/运维)、需要开放的端口、是否有跳板机、网络分层(web/app/db 是否有子网)、以及你希望允许的来源范围(例如某个办公室出口 IP 或公司 VNet)。我就能把“入站/出站 NSG 规则清单”帮你整理成可落地的配置方案,并标注常见坑位。

下载.png
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系