dhcppython
① 一对虚拟网桥发包为什么会影响另一对网桥上的服务器的访问速度
本文详细介绍了Openstack的网络原理和实现,主要内容包括:Neutron的网络架构及网络模型还有neutron虚拟化的实现和对二三层网桥的理解。
一、Neutron概述
Neutron是一个用python写的分布式软件项目,用来实现OpenStack中的虚拟网络服务,实现软件定义网络。Neutron北向有自己的REST API,中间有自己的业务逻辑层,有自己的DB和进程之间通讯的消息机制。同时Neutron常见的进程包括Neutron-server和Neutron-agent,分布式部署在不同的操作系统。
OpenStack发展至今,已经经历了20个版本。虽然版本一直在更替,发展的项目也越来越多,但是Neutron作为OpenStack三大核心之一,它的地位是不会动摇的。只不过当初的Neutron也只是Nova项目的一个模块而已,到F版本正式从中剥离,成为一个正式的项目。
从Nova-Network起步,经过Quantum,多年的积累Neutron在网络各个方面都取得了长足的发展。其主要的功能为:
(1)支持多租户隔离
(2)支持多种网络类型同时使用
(3)支持隧道技术(VXLAN、GRE)
(4)支持路由转发、SNAT、DNAT技术
(5)支持Floating IP和安全组
多平面租户私有网络
图中同时有VXLAN和VLAN两种网络,两种网络之间互相隔离。租户A和B各自独占一个网络,并且通过自己的路由器连接到了外部网络。路由器为租户的每个虚拟机提供了Float IP,完成vm和外网之间的互相访问。
二、Neutron架构及网络模型
1、Neutron架构
Neutron-sever可以理解为类似于nova-api那样的一个专门用来接收API调用的组件,负责将不同的api发送到不同Neutron plugin。
Neutron-plugin可以理解为不同网络功能实现的入口,接收server发来的API,向database完成一些注册信息。然后将具体要执行的业务操作和参数通知给对应的agent来执行。
Agent就是plugin在设备上的代理,接受相应的plugin通知的业务操作和参数,并转换为具体的命令行操作。
总得来说,server负责交互接收请求,plugin操作数据库,agent负责具体的网络创建。
2、Neutron架构之Neutron-Server
(1)Neutron-server的本质是一个Python Web Server Gateway Interface(WSGI),是一个Web框架。
(2)Neutron-server接收两种请求:
REST API请求:接收REST API请求,并将REST API分发到对应的Plugin(L3RouterPlugin)。
RPC请求:接收Plugin agent请求,分发到对应的Plugin(NeutronL3agent)。
3、Neutron架构之Neutron-Plugin
Neutron-plugin分为Core-plugin和Service-plugin。
Core-plugin:ML2负责管理二层网络,ML2主要包括Network、Subnet、Port三类核心资源,对三类资源进行操作的REST API是原生支持的。
Service-plugin:实现L3-L7网络,包括Router、Firewall、VPN。
4、Neutron架构之Neutron-Agent
(1)Neutron-agent配置的业务对象是部署在每一个网络节点或者计算节点的网元。
(2)网元区分为PNF和VNF:
PNF:物理网络功能,指传统的路由器、交换机等硬件设备
VNF:虚拟网络功能,通过软件实现的网络功能(二层交换、三层路由等)
(3)Neutron-agent三层架构如下图:
Neutron-agent架构分为三层,北向为Neutron-server提供RPC接口,供Neutron server调用,南向通过CLI协议栈对Neutron VNF进行配置。在中间会进行两种模型的转换,从RPC模型转换为CLI模型。
5、Neutron架构之通信原理
(1)Neutron是OpenStack的核心组件,官网给出Neutron的定义是NaaS。
(2)Naas有两层含义:
对外接口:Neutron为Network等网络资源提供了RESTful API、CLI、GUI等模型。
内部实现:利用linux原生或者开源的虚拟网络功能,加上硬件网络,构建网络。
Neutron接收到API请求后,交由模块WSGI进行初步的处理,然后这个模块通过Python API调用neutron的Plugin。Plugin做了相应的处理后,通过RPC调用Neutron的Agent组件,agent再通过某种协议对虚拟网络功能进行配置。其中承载RPC通信的是AMQP server,在部署中常用的开源软件就是RabbitMQ
6、Neutron架构之控制节点网络模型
控制节点没有实现具体的网络功能,它对各种虚拟设备做管理配合的工作。
(1)Neutron:Neutron-server核心组件。
(2)API/CLI:Neutron进程通过API/CLI接口接收请求。
(3)OVS Agent:Neutron通过RPC协议与agent通信。
控制节点部署着各种服务和Neutron-server,Neutron-server通过api/cli接口接收请求信息,通过RPC和Agent进行交互。Agent再调用ovs/linuxbridge等网络设备创建网络。
7、Neutron架构之计算节点网络模型
(1)qbr:Linux Bridge网桥
(2)br-int:OVS网桥
(3)br-tun:OVS隧道网桥
(4)VXLAN封装:网络类型的转变
8、Neutron架构之网络节点网络模型
网络节点部署了Router、DHCP Server服务,网桥连接物理网卡。
(1)Router:路由转发
(2)DHCP: 提供DNS、DHCP等服务。
(3)br-ex: 连接物理网口,连接外网
三、Neutron虚拟化实现功能及设备介绍
1、Neutron虚拟化实现功能
Neutron提供的网络虚拟化能力包括:
(1)二层到七层网络的虚拟化:L2(virtual Switch)、L3(virtual Router 和 LB)、L47(virtual Firewall )等
(2)网络连通性:二层网络和三层网络
(3)租户隔离性
(4)网络安全性
(5)网络拓展性
(6)REST API
(7)更高级的服务,包括 LBaaS,FWaaS,VPNaaS 等
2、Neutron虚拟化功能之二层网络
(1)按照用户权限创建网络:
Provider network:管理员创建,映射租户网络到物理网络
Tenant network:租户创建的普通网络
External network:物理网络
(2)按照网络类型:
Flat network:所有租户网络在一个网络中
Local network:只允许在服务器内通信,不通外网
VLAN network:基于物理VLAN实现的虚拟网络
VXLAN network:基于VXLAN实现的虚拟网络
3、Neutron虚拟化实现功能之租户隔离
Neutron是一个支持多租户的系统,所以租户隔离是Neutron必须要支持的特性。
(1)租户隔离三种含义:管理面隔离、数据面的隔离、故障面的隔离。
(2)不同层次租户网络的隔离性
租户与租户之间三层隔离
同一租户不同网络之间二层隔离
同一租户同一网络不同子网二层隔离
(3)计算节点的 br-int 上,Neutron 为每个虚机连接 OVS 的 access port 分配了内部的 VLAN Tag。这种 Tag 限制了网络流量只能在 Tenant Network 之内。
(4)计算节点的 br-tun 上,Neutron 将内部的 VLAN Tag 转化为 VXLAN Tunnel ID,然后转发到网络节点。
(5)网络节点的 br-tun 上,Neutron 将 VXLAN Tunnel ID 转发了一一对应的 内部 VLAN Tag,使得 网络流被不同的服务处理。
(6)网络节点的 br-int 上连接的 DHCP 和 L3 agent 使用 Linux Network Namespace 进行隔离。
4、Neutron虚拟化实现功能之租户网络安全
除了租户隔离以外 Neutron还提供数据网络与外部网络的隔离性。
(1)默认情况下,所有虚拟机通过外网的流量全部走网络节点的L3 agent。在这里,内部的固定IP被转化为外部的浮动IP地址
(1)Neutron还利用Linux iptables特性,实现其Security Group特性,从而保证访问虚机的安全性
(3)Neutron利用网络控制节点上的Network Namespace中的iptables,实现了进出租户网络的网络防火墙,从而保证了进出租户网络的安全性。
5、Neutron虚拟化设备
(1)端口:Port代表虚拟网络交换机上的一个虚拟交换机端口
虚拟机的网卡连接到Port上就会拥有MAC地址和IP地址
(2)虚拟交换机:Neutron默认采用开源的Openvswitch,
同时还支持Linux Bridge
(3)虚拟路由器VR:
路由功能
一个VR只属于一个租户,租户可以有多个VR
一个VR可以有若干个子网
VR之间采用Namespace隔离
Linux Bridge直接与物联网卡相连
每个Flat独占一个物理网卡
配置文件添加响应mapping
四、Neutron网桥及二三层网络理解
1、Neutron-Local-Bridge
仅用于测试;网桥没有与物理网卡相连VM不通外网。
图中创建了两个local network,分别有其对应的qbr网桥。Vm123的虚拟网卡通过tap连接到qbr网桥上。其中2和3属于同一个network可以通信,1属于另一个网络不能和23进行通信。并且qbr网桥不连物理网卡,所以说local网络虚拟机只能同网络通信,不能连通外网。
2、Neutron-Flat-Bridge
Flat网络是在local网络的基础上实现不同宿主机之间的二层互联,但是每个flat network都会占用一个宿主机的物理接口。其中qbr1对应的flatnetwork 连接 eth1 qbr2,两个网络的虚机在物理二层可以互联。其它跟local network类似。
3、Neutron-VLAN-Bridge
在基于linux bridge的vlan网络中,eht1物理网卡上创建了两个vlan接口,1.1连接到qbr1网桥,1.2连接到了qbr2网桥。在这种情况下vm通过eth1.1或者eth1.2发送到eth1的包会被打上各自的vlan id。此时vm2和vm3属于同一个network所以是互通的,vm与vm2和vm3不通。
4、Neutron-VXLAN-Bridge
这个是以Linux bridge作agent的Vxlan网络:
Vxlan网络比Vxlan网络多了个VXLAN隧道,在Openstack中创建好内部网络和实例后,agent就会在计算节点和网络节点创建一对vxlan vtep.组成隧道的两个端点。
Vxlan连接在eth0网口。在网络节点多了两个组件dhcp 和router,他们分别通过一对veth与qbr网桥连接在一起,多个dhcp和路由之间使用namesapce隔离,当vm产生ping包时,发往linux 网桥qbr1,通过网桥在vxlan12上封装数据包,数据通过eth0网卡出计算节点到网络节点的eth0,在vxlan12解包。到达路由器之后经过nat地址转换,从eth1出去访问外网,由租户网络到运营商网络再到外部网络。
5、Neutron-VLAN-OVS
与Linux bridge不同,openvswitch 不是通过eth1.1 eth1.2这样的vlan接口来隔离不同的vlan,而是通过openvswitch的流表规则来指定如何对进出br-int的数据进行转发,实现不同vlan的隔离。
图中计算节点的所有虚拟机都连接在int网桥上,虚拟机分为两个网络。Int网桥会对到来的数据包根据network的不同打上vlan id号,然后转发到eth网桥,eth网桥直连物理网络。这时候流量就从计算节点到了网络节点。
网络节点的ehx int网桥的功能相似,多了一个ex网桥,这个网桥是管理提前创建好的,和物理网卡相连,ex网桥和int网桥之间通过一对patch-port相连,虚拟机的流量到达int网桥后经过路由到ex网桥。
6、Neutron-VXLAN-OVS
Vxlan的模型和vlan的模型十分相似,从表面上来看,他俩相比只有一个不同,vlan对应的是ethx网桥,而vxlan对应的是tun网桥。
在这里ethx和tun都是ovs网桥,所以说两者的差别不是实现组件的差别而是组件所执行功能的差别,ethx执行的是普通二层交换机的功能,tun执行的是vxlan中的vtep的功能,图中俩tun对应的接口ip就是vxlan的隧道终结点ip。所以说虚机的数据包在到达tun网桥之前是打的是vlan tag,而到达tun之后会发生网络类型的转换,从vlan封装为vxlan然后到达网络节点。而之前的vlan类型的网络,虚机数据包的类型一直都是vlan。
7、物理的二层与虚拟的二层(VLAN模式)
(1)物理的二层指的是:物理网络是二层网络,基于以太网协议的广播方式进行通信。
(2)虚拟的二层指的是:Neutron实现的虚拟网络也是二层网络(openstack的vm机所用的网络必须是大二层),也是基于以太网协议的广播方式进行通信,但毫无疑问的是该虚拟网络是依赖于物理的二层网络。
(3)物理二层+虚拟二层的典型代表:VLAN网络模式。
8、物理的三层与虚拟的二层(GRE模式与VXLAN模式)
(1)物理三层指的是:物理网络是三层网络,基于IP路由的方式进行通信。
(2)虚拟的二层指的是:Neutron实现的虚拟网络仍然是二层网络(openstack的vm机所用的网络必须是大二层),仍然是基于以太网的广播方式进行通信,但毫无疑问的是该虚拟机网络是依赖于物理的三层网络,这点有点类似于VPN的概念,根本原理就是将私网的包封装起来,最终打上隧道的ip地址传输。
(3)物理三层+虚拟二层的典型代表:GRE模式与VXLAN模式。
② Python3 & TCP协议和UDP协议的特点和区别
优点:
(1)TCP是面向连接的运输层协议;
(2)每一条TCP连接只能有两个端点(即两个套接字),只能是点对点的;
(3)TCP提供可靠的传输服务。传送的数据无差错、不丢失、不重复、按序到达;
(4)TCP提供全双工通信。允许通信双方的应用进程在任何时候都可以发送数据,因为两端都设有发送缓存和接受缓存;
(5)面向字节流。虽然应用程序与TCP交互是一次一个大小不等的数据块,但TCP把这些数据看成一连串无结构的字节流,它不保证接收方收到的数据块和发送方发送的数据块具有对应大小关系,例如,发送方应用程序交给发送方的TCP10个数据块,但就受访的TCP可能只用了4个数据块久保收到的字节流交付给上层的应用程序,但字节流完全一样。
缺点:
慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接。事实上,每个连接都会占用系统的CPU、内存等硬件资源。因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
TCP的应用场景:
当对网络通讯质量有要求的时候。例如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用。如:用于文件传输(ftp HTTP 对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念)等等。
优点:
(1)UDP是无连接的传输层协议;
(2)UDP使用尽最大努力交付,不保证可靠交付;
(3)UDP是面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界;
(4)UDP没有拥塞控制,因此即使网络出现拥塞也不会降低发送速率;
(5)UDP支持一对一一对多多对多的交互通信;
(6)UDP的首部开销小,只有8字节.
缺点:
不可靠,不稳定。 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。
UDP的应用场景:
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快),在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等。
(1)TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
(2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
(3)TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
(4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
(5)TCP首部开销20字节;UDP的首部开销小,只有8个字节
(6)TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
HTTP、HTTPS、FTP、TELNET、SMTP(简单邮件传输协议)协议基于可靠的TCP协议。TFTP、DNS、DHCP、TFTP、SNMP(简单网络管理协议)、RIP基于不可靠的UDP协议
③ 华为ensp模拟器上面可以运行python代码吗
楼主 提示已经说得很明显了照着上面的做就行了 先打开VirtualBox 进入管理—-全局设定---网络 然后里面有个host-only网络鼠标双击进入更改IP 就是在虚拟网卡创建host-only这一步的时候 你将IP地址改为192.168.56.1 掩码为255.255.255.0 的同时要把旁边的DHCP服务器的自动获取IP地址的勾去掉 若问题解决 望采纳
④ 同时快速部署100台linux服务器,有什么现成的解决方案吗
说说我以前最常用的三种批量部署方案(有疑问接受私信):
第一:服务器一般都会用两块磁盘做RAID1作为系统盘,手动安装完第一台操作系统,RAID1的功能是两块盘中具有相等的数据,所以两块盘都存在了刚刚安装好的linux系统,拔出一块系统盘(服务器认为你这块盘坏了),再插入一块新盘到刚刚拔出磁盘的位置,此时服务器会再次向新磁盘自动同步数据,保持1:1备份。接下来刚刚拔出的那块系统盘派上用场,把刚刚扒出来的那块有系统的盘插到另外一台无系统的服务器上,自动完成与另外一块盘的同步,以此类推,1生2,2生4,4生8,8生16,16生32
第二种:刻录无人值守光盘
第三种:PXE批量部署
PXE实例:
我3年前做过一套PXE部署系统(以下是当时用于机房部署系统的截图界面)。可以部署windows+linux的各个版本,部署服务器采用的windows系统(因为windows能通过easybcd制作syslinux引导),syslinux就可以成功引导起win和linux,引导成功后,调用kickstart制作的linux无人应答文件,wds &AKT制作的windows无人应答文件,完成系统安装。你的需求只需要安装统一的linux版本,所以相对来说比较容易,花两天学习下kickstart基本就能在虚拟机上实践成功,但是如果要应用到物理服务器,还需要考虑驱动,raid,格式化等问题
解决办法当然是PXE+Kickstart了,学会一次就能一直用很方便。
你需要准备:
1、交换机,用于连接Server和客户机(必须临时关闭DHCP)
2、部署用server主机(由此台主机接管DHCP服务)
3、其他一堆客户机(需要调节至PXE引导模式)
然后按照教程
https://andyx.net/pxe_kickstart_automatic_deployment_of_linux_system/对Server
主机进行部署PXE+Kickstart,完成之后客户端开机即可自动安装。
没有部署同时过100多台,但是曾经部署26台ECS集群,支撑1500左右tps。部署的方案是:阿里云ECS+镜像+弹性伸缩+负载均衡。开发测试环境用的是Vagrant直接控制多台虚拟机,曾经也使用过VMware ESXi和VMware VCenter管理虚拟机集群
腾讯有个蓝鲸平台,只需要录入你的服务器ip就可以批量操作。
还有一个ansible的来源运维工具。
还可以通过pexpect脚本,自己用python结合ssh搭建一个运维平台。
如果是批量买机器的话,各个云厂商都提供有接口,写个简单都shell就可以了。
阿里云前天刚发布的,叫什么servicefee,忘了,可视化部署,一键拉起,可设置拉起顺序,定时弹性容灾,服务之间的调用可视化,其他数据也是可监控
会 python 和 shell 可以搞搞 fabric ,我在用,还不错!
看你部署应用还是系统,平台是什么。
系统简单,做个模板机,复制就行了。
应用也不麻烦,跟上边的一样做个镜像就行,或者用批量管理工具ansible salt 这类的工具。云服务器的话,镜像市场也有公用的。
ansible,puppet和chef是常用的自动化运维工具。你说的需求用这三个都能做
1.部署操作系统,制作系统模板,批量创建或调用api接口即可
2.部署应用软件,可使用自动化工具如ansible或者编写脚本来批量部署
linux有类似ghost那样的克隆工具,推荐clonezilla。ghost for Linux也可以。
另外,Linux下的dd命令可以完成一个源驱动器对目标驱动器的镜像操作。
⑤ 您好,我想用Python实现DHCP客户与服务器的交互,可否给我讲解一下代码
这个不是讲解的问题,你要去看Linux操作系统中DHCP处理的源代码
⑥ Python网络编程5-实现DHCP Client
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息。
option字段
DHCP报文中的Options字段可以用来存放普通协议中没有定义的控制信息和参数。如果用户在DHCP服务器端配置了Options字段,DHCP客户端在申请IP地址的时候,会通过服务器端回应的DHCP报文获得Options字段中的配置信息。
获取IP地址过程
实验使用的linux 主机由两个网络接口,其中ens33使用DHCP获取IP地址,ens37使用静态IP地址;因此需要使用ens33来发送数据包。
Change_MAC.py用于MAC地址与Bytes类型相互转换。
DHCP_Discover.py用于发送DHCP Discover报文;其中GET_MAC.py见ARP章节。
DHCP_Request.py用于发送DHCP Request报文。
DHCP_FULL.py用于完成DHCP Client与DHCP Server的报文交互
Wireshark对远程linux主机抓包,结果如下
客户端以广播发送DHCP Discover包,其中报文操作类型为1(请求报文),DHCP客户端的MAC地址设置为00:0c:29:03:a1:08,option53设置报文类型为Discover,option55(请求选项列表)中包含请求的参数。
服务器以单播向客户端回复信息,其中报文操作类型为2(应答报文),分配给客户端的IP为192.168.160.146,option 53设置报文类型为offer,Option 54设置服务器标识为192.168.160.254,其他option为客户端请求列表的应答。
值得注意的是,交互的四个报文中Transaction ID均为0x00000000,表明是同一次DHCP交互报文。
⑦ 我想使用python读取一个文件的特定字段,格式如dhcp-option DNS 192.168.1.1 我只想读取DNS及后面的内容
[line.split()[-1] for line in open("file.file")]
⑧ python可以通过什么命令更改ip地址
#!/usr/bin/env python
#-*- encoding:gb2312 -*-
Filename: IP.py
import sitecustomize
import _winreg
import ConfigParser
from ctypes import *
print '正在进行网络适配器检测,请稍候…'
print
netCfgInstanceID = None
hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
r'System\CurrentControlSet\Control\Class{4d36e972-e325-11ce-bfc1-08002be10318}')
keyInfo = _winreg.QueryInfoKey(hkey)
寻找网卡对应的适配器名称 netCfgInstanceID
for index in range(keyInfo[0]):
hSubKeyName = _winreg.EnumKey(hkey, index)
hSubKey = _winreg.OpenKey(hkey, hSubKeyName)
try:
hNdiInfKey = _winreg.OpenKey(hSubKey, r'Ndi\Interfaces')
lowerRange = _winreg.QueryValueEx(hNdiInfKey, 'LowerRange')
检查是否是以太网
if lowerRange[0] == 'ethernet':
driverDesc = _winreg.QueryValueEx(hSubKey, 'DriverDesc')[0]
print '检测到网络适配器名:', driverDesc
netCfgInstanceID = _winreg.QueryValueEx(hSubKey, 'NetCfgInstanceID')[0]
print '检测到网络适配器ID:', netCfgInstanceID
if netCfgInstanceID == None:
print '没有找到网络适配器,程序退出'
exit()
break
_winreg.CloseKey(hNdiInfKey)
except WindowsError:
print r'Message: No Ndi\Interfaces Key'
循环结束,目前只提供修改一个网卡IP的功能
_winreg.CloseKey(hSubKey)
_winreg.CloseKey(hkey)
通过修改注册表设置IP
strKeyName = 'System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' + netCfgInstanceID
print '网络适配器的注册表地址是:\n', strKeyName
hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
strKeyName, \
0, \
_winreg.KEY_WRITE)
config = ConfigParser.ConfigParser()
print
print '正在打开IP.ini配置文件…'
config.readfp(open('IP.ini'))
IPAddress = config.get("school","IPAddress")
SubnetMask = config.get("school","SubnetMask")
GateWay = config.get("school","GateWay")
DNSServer1 = config.get("school","DNSServer1")
DNSServer2 = config.get("school","DNSServer2")
DNSServer = [DNSServer1,DNSServer2]
print '配置文件内设定的信息如下,请核对:'
print
print 'IP地址:', IPAddress
print '子关掩码:', SubnetMask
print '默认网关:', GateWay
print '主DNS服务器:', DNSServer1
print '次DNS服务器:', DNSServer2
print
res = raw_input('现在,请您决定:输入1,则将配置文件写入系统;输入2,则将现有的系统设定还原为全部自动获取;否则程序退出:')
if str(res) == '1':
try:
_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'IPAddress', None, _winreg.REG_MULTI_SZ, [IPAddress])
_winreg.SetValueEx(hkey, 'SubnetMask', None, _winreg.REG_MULTI_SZ, [SubnetMask])
_winreg.SetValueEx(hkey, 'DefaultGateway', None, _winreg.REG_MULTI_SZ, [GateWay])
_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, ','.join(DNSServer))
except WindowsError:
print 'Set IP Error'
exit()
_winreg.CloseKey(hkey)
print '切换成功!重置网络后即可生效'
elif str(res) == '2':
try:
_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000001)
_winreg.SetValueEx(hkey, 'T1', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'T2', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, None)
_winreg.SetValueEx(hkey, 'DhcpConnForceBroadcastFlag', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'Lease', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'LeaseObtainedTime', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'LeaseTerminatesTime', None, _winreg.REG_DWORD, 0x00000000)
except WindowsError:
print 'Set IP Error'
exit()
_winreg.CloseKey(hkey)
print '切换成功!重置网络后即可生效'
else:
print '用户手动取消,程序退出'
exit('')
⑨ Linux运维工程师都需要具备哪些技能和职业品质
1、具备扎实的基础:如果没有扎实的基础,是难以掌握这门课程的,如果没有基础你想想如何查看文件类型、查看系统运行状态、创建用户等,所以一定要掌握扎实,才能够走的更远。
2、搭建服务:Linux服务有很多种,每个公司使用是截然不同的,所以常见的基础一定要掌握好,比如说ftp、Bind、DHCP、SAMBA服务要了解会简单配置,不光会搭建,一定要熟悉服务里面的配置。
3、掌握脚本语言:shell语言是这个行业中必须要掌握的,一些比较简单的系统管理shell脚本是最为常见的、使用到的。另外就是使用到语言就是Python,是当下比较火的,程序效率高、语言简洁清晰等,可以实现自动化运维。
4、网络服务:网站运维,当然WEB是核心了,这块需要掌握的有nginx,apache
web服务,必须要熟练,对应的组合就是LNMP和LAMP是必须要熟练,我所指的不是光光会简单搭建,而是要很熟悉里面的配置才行,深入了解内部运行机制和原理,因为网站公司最关键的绝对是WEB服务,所以nginx和apache要熟悉,特别是nginx一定要很熟悉才行,有些公司(游戏公司多)还会用tomcat,这个也最好学一下,JVM优化要会最好了。
5、网站集群服务:现在的公司多数都会有集群环境,特别是网站公司,大并发高性能是主旋律,要想发展好这些都是必须会的,例如LVS,NGINX,KEEPALIVED集群软件,MEMCACHED,REDIS。
6、数据库:数据库是所有网络服务里最核心的,必须要学会学好,这里建议首选mysql,别问我为什么不学oracle,因为互联网公司用得最多绝对是MySQL,安装、基础维护命令、主从复制,引擎,备份,恢复,增量恢复,必须要学会。
7、防火墙:防火墙,不学不行,防火墙也算是个难点,说难不难,说易不易,最重要弄懂规则,如果学过CCNA的朋友可能会比较好学,因为iptables也有NAT表,原理是一样的,而FILTER表用得最多,反正不学就肯定不合格。