图解虚拟私有云 VPC
虚拟私有云(Virtual Private Cloud,VPC)为公有云用户提供了一个安全、隔离的私有网络环境,用户可以在VPC中按需部署云服务器、云数据库、云存储等云资源。VPC提供丰富的网络服务功能,例如子网、安全组、网络ACL、路由表、DNS,同时提供外部网络访问能力,例如基于VPC对等连接实现VPC互访、基于公网IP实现访问公网、基于IPSec VPN、专线网关实现VPC和本地互访。

图片来源:华为云帮助中心,https://support.huaweicloud.com/productdesc-vpc/
虚拟私有云VPC由一个私有网络、路由表、和至少一个子网组成;
私有网络:用户在网络控制台创建虚拟私有云VPC时,需要指定虚拟私有云VPC使用的私有网段,各大云服务商均支持IANA组织划分的标准私有网段(部分云服务商可能会占用私有网段的部分IP地址段,用户无法配置使用已占用子网段),私有网络IP段设置后无法修改,建议用户在使用前做好IP地址规划。
私有IP地址的范围分别是,10.0.0.0/8、172.16.0.0/12、192.168.0.0/16:
A类地址范围:10.0.0.0—10.255.255.255;
B类地址范围:172.16.0.0—172.31.255.555;
C类地址范围:192.168.0.0—192.168.255.255。
路由表:顾名思义,路由表是用来控制虚拟私有云的网络流量策略,用户在创建虚拟私有云VPC时,系统会自动生成默认路由表,实现同一个VPC下的所有子网互通。如果用户需要自定义路由策略以满足复杂的网络访问策略,支持用户可以创建自定义路由表并添加路由策略。
子网:子网是虚拟私有云VPC里的IP地址块,同一个VPC内子网网段不可重复,用户可以通过子网划分进行合理规划IP地址资源,VPC里的所有云资源(云服务器、云数据库)必须部署在子网内。
经过梳理和对比主流公有云服务商(AWS、阿里云、华为云),VPC承担云上业务的基础运行环境,提供了丰富的服务能力,满足用户多场景需求,主要服务能力可分为私有网络、安全访问控制、外部网络访问、审计和监控四大类。
安全组:安全组是一种虚拟防火墙,云平台一般是基于iptables实现,安全组具备状态检测和数据包过滤能力,用于控制安全组内云资源的流量流出和流入,从而提升云资源的安全性,安全组规则支持三元组(协议、端口和对端地址)。
网络ACL:网络ACL(Network Access Control List)提供VPC中的网络访问控制功能,控制VPC子网的数据流入和流出。网络ACL默认拒绝所有流量,用户需要按需配置流入和流出规则,支持五元组(源地址、目的地址、源端口、目的端口、协议),网络ACL是无状态的,需要同时配置流入和流出规则。
安全组和网络ACL功能对比
| 对比项 | 安全组 | 网络ACL |
|---|---|---|
| 作用范围 | 对云资源实例生效 | 对VPC子网生效 |
| 策略对比 | 支持允许 | 支持允许和拒绝 |
| 规则生效 | 会评估所有安全组规则 | 不评估所有规则,按照规则优先级进行匹配处理 |
| 报文状态 | 有状态,会话建立后默认放行相同会话数据包 | 无状态,返回数据流必须有明确规则允许 |
IAM权限管理:用户可以利用公有云的统一身份认证管理服务(Identity and Access Management,简称IAM),对VPC进行精细化的权限管理,通过IAM权限管理,可以将VPC资源授权给其他用户管理,包括所有权限、只读权限、修改权限。
云上私有网络的运维管理对用户来说至关重要,用户需要知道云上私有网络环境的稳定性和安全性,第一时间知道私有网络异常信息进行故障处理、回溯。
VPC流日志:可以记录VPC网络中弹性网卡ENI(Elastic Network Interface)流入和流出的网络流量信息,帮助用户监控网络流量、排查网络故障、检查访问控制规则等。捕获的流日志信息包括账号id、源地址、源端口、目的地址、目的端口、协议号等等多个参数
VPC流量镜像:VPC流量镜像提供流量采集功能,可以复制经过弹性网卡且符合筛选条件的网络流量,复制后的镜像流量转发给指定的目的实例,用于流量检查、网络威胁监控和问题排查等场景,镜像流量包括筛选条件、镜像源、镜像目的、镜像会话。
云监控:搭配公有云的云监控服务,用户可以通过云监控控制台方便的查看带宽、公网IP的流量情况,支持用户创建自定义的告警规则和通知策略,方便用户及时了解私有云的状况。
云审计:通过云审计,用户可以记录虚拟私有云相关的操作事件,便于日后的查询、审计和回溯。
公有云提供弹性、按需付费的云服务,对用户来说使用云产品必须要关心产品的计费模式,是免费资源还是付费资源?
当前公有云厂商都提供免费的虚拟私有云服务,个别附加服务会进行相应的收费,具体可以参考云服务商的帮助中心,详细标注了计费模式。
基础功能:私有网络、子网、路由表
其他功能:弹性网卡、安全组、网络ACL、HAVIP、DNS、DHCP
公有云服务商尽快提供了弹性、按需、可扩展的云服务资源,在实际使用中,云服务商因平台架构、资源可用量及管控需要,用户在使用云服务的过程中,会遇到这样或那样的约束和限制,主要有配额限制、性能限制、操作限制、资费生效限制,在用云阶段要重点关注。
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
假设您编写了一个类Sup,我决定将其扩展为SubSup。我不仅需要了解你发布的接口(interface),还需要了解你的私有(private)字段。见证这次失败:classSupdefinitialize@privateField="fromsup"enddefgetXreturn@privateFieldendendclassSub问题是,解决这个问题的正确方法是什么?看起来子类应该能够使用它想要的任何字段而不会弄乱父类(superclass)。编辑:equivalentexampleinJava返回"fromSup",这也是它应该产生的答案。 最佳答案
我正在尝试获得良好的Ruby编码风格。为防止意外调用具有相同名称的局部变量,我总是在适当的地方使用self.。但是现在我偶然发现了这个:classMyClass上面的代码导致错误privatemethodsanitize_namecalled但是当删除self.并仅使用sanitize_name时,它会起作用。这是为什么? 最佳答案 发生这种情况是因为无法使用显式接收器调用私有(private)方法,并且说self.sanitize_name是显式指定应该接收sanitize_name的对象(self),而不是依赖于隐式接收器(也是
来自Java,我正在尝试在Ruby中实现LinkedList。我在Java中实现它的通常方法是有一个名为LinkedList的类和一个名为Node的私有(private)内部类,其中LinkedList的每个对象都作为Node对象。classLinkedListprivateclassNodeattr_accessor:val,:nextendend我不想将Node类暴露给外部世界。然而,通过Ruby中的这个设置,我可以使用这个访问LinkedList类之外的私有(private)Node类对象-node=LinkedList::Node.new我知道,在Ruby1.9中,我们可以使用
您好,我正在尝试创建一个帮助程序,用于将ruby方法大量定义为私有(private)类方法。通常,可以通过使用private_class_method键工作将方法定义为私有(private)类方法。但我想创建一个以下样式的助手:classPersondefine_private_class_methodsdodefmethod_oneenddefmethod_twoendendend我计划通过以下方式动态定义它,但根本不起作用:classObjectdefself.define_private_class_methods&blockinstance_evaldoprivate&bl
在另一个对象中注册该对象后,我需要将一些实例方法设为私有(private)。我不想卡住对象,因为它必须保持可编辑状态,只是功能较少。而且我不想取消定义这些方法,因为它们是在内部使用的。我需要的是这样的:classMyClassdefmy_methodputs"Hello"endenda=MyClass.newb=MyClass.newa.my_method#=>"Hello"a.private_instance_method(:my_method)a.my_method#=>NoMethodErrorb.my_method#=>"Hello"有什么想法吗?
最好用一个例子来解释:文件1.rb:deffooputs123end文件2.rb:classArequire'file1'endA.new.foo将给出错误“':调用了私有(private)方法'foo'”。我可以通过执行A.new.send("foo")来解决这个问题,但是有没有办法公开导入的方法?编辑:澄清一下,我没有混淆include和require。另外,我不能使用正常包含的原因(正如许多人正确指出的那样)是因为这是元编程设置的一部分。我需要允许用户在运行时添加功能;例如,他可以说“run-this-app--includefile1.rb”,应用程序的行为将根据他在file1