云服务器网络配置有何不同?

话题来源: 配置linux设置默认网关不生效的原因

说到云服务器的网络配置,真的是和传统物理服务器有着天壤之别。刚开始接触云计算时,我也曾经把物理机那套配置方法生搬硬套到云环境,结果踩了不少坑。比如有一次在阿里云上折腾了半天默认网关就是不生效,后来才发现云环境中压根不需要配置默认网关 – 这个插曲让我深刻认识到云网络的特殊性。

虚拟网络基础设施的差异

云服务的精髓就在于它的虚拟化特性,这一点在网络层面体现得尤为明显。与传统物理服务器直接连接交换机不同,云服务器的网络流量都要经过虚拟交换机(vSwitch)这个中间层。以AWS为例,当你创建EC2实例时,系统会自动将其接入VPC(虚拟私有云),每个实例默认会获得一个弹性网络接口(ENI)。这时候如果有人想通过ifconfig命令查看网卡信息,可能会困惑为什么看不到熟悉的eth0——因为在很多云平台中,网卡设备名可能变成了ens5这样的名称。

记得我刚接触Azure的时候,发现即使完全相同的镜像,在Azure上启动后网络配置也会自动变更。原来云平台会在实例启动时通过DHCP+cloud-init自动注入网络配置,这种”你不必操心基础网络”的设计哲学,有时候反而会让习惯手动配置的老司机无所适从。

安全组:云环境的特殊”防火墙”

云环境下最容易被忽略的网络配置差异可能就是安全组(Security Group)了。和传统的iptables防火墙不同,安全组是实时生效的状态化防火墙,而且绑定在实例级别而非网络接口级别。我有次在腾讯云上配置了一套看起来很完善的iptables规则,结果完全不起作用,排查半天才发现是安全组设置阻断了流量。

更”诡异”的是,有些云平台的安全组规则甚至会影响同一VPC内实例间的通信。比如说在AWS中,即使两个EC2实例在同一个子网内,如果出方向安全组没有放行相应流量,它们之间也无法通信——这和传统局域网环境下的认知完全相反!

弹性IP和NAT网关的玄机

云环境中另一个颠覆传统网络认知的就是公网IP的分配机制。传统IDC环境下我们通常直接配置公网IP到服务器网卡上,但在云环境中,弹性IP(EIP)实际上是通过NAT方式映射到私有IP的。这就导致了很多”神奇”的现象:比如当你在实例内部用ifconfig查看时,看到的永远是私有IP;再比如某些云平台的EIP居然可以在不停机的情况下随意更换绑定实例。

不得不吐槽的是,各云厂商在这方面的实现还各不相同。阿里云的NAT网关和AWS的就有显著差异,华为云的共享带宽功能又自成一派。我曾经帮客户迁移项目时,就因为在NAT网关配置上吃了亏 – 明明规则看起来一模一样,就是不通,最后发现是UDP会话保持时间的默认设置不同导致的。

说到底,云服务器的网络配置更像是在一个已经搭建好的网络框架内做调优,而不是从头构建网络环境。理解这一点,很多”不按常理出牌”的现象就都能找到解释了。下次当你发现某个网络配置不生效时,不妨先问问自己:这个配置在云环境下真的还有必要吗?

评论