2022年LXC系列教程之三:LinuxContainer虚拟网络管理 .pdf
《2022年LXC系列教程之三:LinuxContainer虚拟网络管理 .pdf》由会员分享,可在线阅读,更多相关《2022年LXC系列教程之三:LinuxContainer虚拟网络管理 .pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux 核心虚拟技术容器篇3-1 第三章 : Linux Container 虚拟网络管理3.1 内定虚拟网络 (lxcbr0, iptables, dnsmasq)对于虚拟(云端)系统平台来说,网络架构是否正确,联机功能是否正常,可是攸关整个虚拟(云端)系统平台能否发挥功能的重要关键,但早期的网络系统,大多利用网络硬件装置,如 实体的 Router 、Switch ,来串接各个网络区段的计算机群,或者是内部网络的链接,除了建置成本高昂之外,还需要投入不少人力在维护网络硬设备的运作,这对于一般中小企业来说,若要架设一个公司专属的私有云,在经费与人力上,都是沉重的负担。而若能善用Linux
2、原生的虚拟网络,就可以达到大部分私有云内部所需要的网络架构,这不只是可以大大节省网络硬设备的支出,更可以利用现有Linux 系统的管理人力,直接管控更多系统与网络的运作,让架构公司内部的私有云,成为了一种可能。不管是哪一套虚拟系统,只要是运作在Linux 系统架构之内,所使用的虚拟网络,就是Linux 系统原生的虚拟网络架构(TAP/TUP , Bridge ) ,LXC 也不例外,不过,这边我们不着重在介绍 Linux 原生的虚拟网络,而着眼在LXC 内建的虚拟网络架构。与 Linux KVM 相同, LXC 安装完成,预设就会产生一个IP 分享器(此IP 分享器包含以下功能: Bridge
3、 + DHCP Server + NAT + Cache DNS Server),也就是lxcbr0 ,这点,利用以下指令就可以得知:$ brctl show 由上图就可以明显看到lxcbr0 的相关信息,而这个IP 分享器,除了扮演Switch 的功能之外,默认也提供了NAT 与 DHCP 的功能,简单来说,就是lxcbr0 除了提供 Switch Hub 的 功能之外,也提供了DHCP Server 与 DNS Cache , 再透过 iptables 启动 NAT 的功能,这由以下指令可以来证明:$ sudo iptables -t nat -L -n 名师资料总结 - - -精品资料欢
4、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - Linux 核心虚拟技术容器篇3-2 由图中,可以发现在Linux iptables 的 NAT table 内,加入了一笔10.0.3.0/24 的信息在POSTROUTING Chain 之内,这笔信息,就是透过iptables 启动 NAT 转址的功能,让LXC 虚拟计算机可以利用内部的虚拟网络来与外部的因特网沟通。而至于 DHCP Server 与 DNS Cache 的功能,则是透过dnsmasq 这个
5、套件来操控,这点,一样可以利用以下指令来看到dnsmasq 的功能:$ ps aux | grep dnsmasq 利用上述指令,就可以明显看到dnsmasq 启动时,就分别启用了DHCP 与 DNS Cache 的功能,让 LXC 虚拟计算机可以透过DHCP 的功能,取得一个内部网络的IP 地址,而所谓的DNS Cache ,简单来说,就是DNS Server ,所以, dnsmasq 也能够执行DNS Server 的功能,让 LXC 虚拟计算机能够透过此DNS Cache 的功能,顺利的执行域名解析功能。3.2 修改默认网络组态文件透过 ifconfig lxcbr0 的指令,可以得知L
6、XC 内建 Bridge 的网络接口 ( lxcbr0) IP 地址,而由ps aux | grep dnsmasq的指令,也可以清楚看到DHCP Server 所派发的 IP 范围,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - Linux 核心虚拟技术容器篇3-3 因此可以知道LXC 原生虚拟网络默认的IP 区段为 10.0.3.0/24 ,那么,这些信息,可以修改吗?当然可以,以上这些网络信息,是LXC 原生默认的网络设
7、定组态,所以可以透过修改组态档的方式,来修改相关信息,以符合实际应用的状况,可以利用任一编辑器来开启LXC 的网络组态文件:$ sudo vim /etc/default/lxc 开启档案后,在档案的最后面,就可以看到网络组态的相关设定值:那这边我们就尝试修改LXC 内建的网络组态,依照原先网络组态的设定格式,新增修改的网络组态设定值,并将原先的设定值给标注起来,如下图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - Linu
8、x 核心虚拟技术容器篇3-4 设定完成之后,将实体计算机(Host OS )重新启动,或者利用以下的指令,重新启动LXC 的网络服务,让LXC 虚拟系统可以套用新的网络组态文件, 命令如下:$ sudo service lxc-net restart LXC 的网络服务重新启动后, 原先 iptables 设定还保留 , 所以建议还是重新启动. 重新启动之后,一样利用以下指令,来查看LXC 虚拟系统是否已经套用新的网络组态设定值:$ ifconfig lxcbr0 $ ps aux | grep dnsmasq 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
9、- - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - Linux 核心虚拟技术容器篇3-5 由图中就可以明显看到,不管是lxcbr0 的网络组态,或者是DHCP Server 的 IP 派发范围,都完整套用刚刚我们手动指定的网络组态设定值,因此,若再实际运用上,对于IP 地址与DHCP Server 的相关设定有需求时,就可以利用修改网络组态文件的方式,以符合实际的需求。测试异动后的网 络组态虽然利用上述指令的方式,可以查询到lxcbr0 与 DHCP Server 的网络相关设定都已经套用新的设定值,但实际上,
10、LXC 内的虚拟计算机,是否也能够取得正确的网络设定值呢?首先,利用以下指令来启动LXC 虚拟计算机:$ sudo lxc-start -n myUS1204 -d(将 LXC 虚拟计算机丢到背景执行)$ sudo lxc-console -n myUS1204(利用Console 的联机方式,进入在背景执行的虚拟计算机)登入计算机之后,再利用以下指令来查询myUS1204 这台虚拟计算机的网络设定:$ ifconfig -a 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,
11、共 21 页 - - - - - - - - - Linux 核心虚拟技术容器篇3-6 由图中可以看到, myUS1204 这台虚拟计算机,由DHCP Server 取得的 IP 地址为10.0.100.216 ,正好落在刚刚配置文件内,指定DHCP Server 派发的 IP 位置范围之内,而这也再次证实了,修改后的网络组态文件,可以完整套用到LXC 的系统之内。但内部网络是否能够相互沟通呢?我们可以再利用sudo lxc-create -t ubuntu -n ubuntu1204 的指令,产生另外一台名称为ubuntu1204 的 LXC 虚拟计算机,开机之后,一样先利用ifconfig
12、 -a 的指令,查看ubuntu1204 这台虚拟计算机的网络组态:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - Linux 核心虚拟技术容器篇3-7 由图中,可以清楚的看到,默认LXC 虚拟计算机是透过dnsmasq 这个套件所产生的DHCP Server ,取得相关的网络设定值,而在前面的步骤中,我们手动将DHCP Server 派发的IP 地址范围调整为10.0.100.200 10.0.100.250 ,图中的信息,
13、也确实显示所取得的IP 地址是落在此范围内。现在尝试手动设定ubuntu1204 这台 LXC 虚拟计算机的IP 地址,利用任一编辑器开启网络组 态配置文件:$ sudo vim /etc/network/interfaces 档案开启之后,将原本预设的dhcp ,修改为 static ,也就是手动指定网络组态,并将相关设定值设定好,如下图:设定好之后,可以重新启动,或是利用以下指令来重新套用网络设定值:$ sudo /etc/init.d/networking restart 网络重新套用之后,一样利用ifconfig -a 的指令,来看看手动设定的网络组态是否有套用上去:名师资料总结 -
14、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - Linux 核心虚拟技术容器篇3-8 确认手动指定的IP 地址正确套用之后,利用以下指令,来确认内部网络是否可以正常链接:$ ping -c 3 10.0.100.216(此为第一台LXC 虚拟计算机,也就是myUS1204 的 IP 地址)有上图可以看到,内部网络可以正常沟通链接,那外部网络(因特网)呢?一样可以利用以下指令来确认:$ ping -c 3 168.95.1.1 $ ping -c
15、 3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页 - - - - - - - - - Linux 核心虚拟技术容器篇3-9 我们可以发现,不只可以连结到因特网,连网址也都可以ping 到,这也表示dnsmasq 套 件的DNS Cache (DNS Server )的功能是可以正常运作的。3.3 使用 (连接) 自定的 Bridge虽然 LXC 原生的虚拟网络提供了一个功能完整的IP 分享器( Bridge 、DHCP Server 、DNS Cache 、
16、NAT) ,但可能在某些实际的状况下,我们并不需要,可能也不希望提供如此完整的网络功能,例如,当我们需要一个封闭的网络区段来做测试环境时,在不修改、异动LXC 原生网络设定的前提之下,若直接使用LXC 原生的网络架构,并无法提供我们所需要的网络环境。所以,若使用LXC 架构的虚拟计算机,且还要达到如上述情境的网络架构(封闭的网络区段),则势必是需要另外再产生一个封闭的网络区段,那该怎么做呢?其实,就只需要另外产生一个 Bridge ,就可以将测试环境内的虚拟计算机,全部整合在此Bridge 的封闭网络区段内,而具体的步骤如下:步骤 1:手动建立Bridge这边所谓的手动产生Bridge ,就是
17、利用Linux 内建的虚拟网络,来建立一个Bridge 网络设备,这就需要安装bridge-utils 这个桥接( Bridge )套件,不过,因为最初在安装LXC 的时候,预设就会将此套件安装到系统之内,所以就可以直接使用,而建立 Bridge 的指令如下:$ sudo brctl addbr br01 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - Linux 核心虚拟技术容器篇3-10 其中, br01就是手动新增Bri
18、dge 的名称,可以自定义,建立之后,利用以下指令来检视系 统 Bridge 接口的信息:$ brctl show 由图中就可以清楚看到,手动产生的br01 与 LXC 原生虚拟网络中的lxcbr0 ,同样都是属于Bridge 网络设备,而因为目前并没有启动任何一台虚拟计算机,所以两个Bridge 网络设备后 方 interface 的字段都是空白的。手动产生 br01 这个 Bridge 网络设备之后,要使用之前,必须先将此网络设备启动,启动的指令如下:$ sudo ifconfig br01 0.0.0.0 up(或者, sudo ifconfig br01 up也是一样的)Bridge
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年LXC系列教程之三:LinuxContainer虚拟网络管理 2022 LXC 系列 教程 LinuxContainer 虚拟 网络 管理
限制150内