一、基础概念
1.1、基于数据包的通行方式
1.2、公有 ip 和 私有 ip
- public IP : 互联网上的唯一表示,可以访问 internet
- Private IP : 不可再互联网上使用,仅供机构内部使用
私网地址:
A类:10.xxx.xxx.xxx
B类:172.16.0.0-172.31.255.255
C类:192.168.xxx.xxx
1.3、网络地址转换 NAT(本地访问 internet)
访问外网的时候 通过查 NAT Translate Table
对非私有的网络地址进行转换 转换好了之后再发送请求
1.4、Ping 和 telnet 工具
- Ping(ICMP): 验证 IP的可达性 (不能百分百验证 其他情况 eg:防火墙)
eg: ping 192.168.1.1
eg: ping www.baidu.com
- telnet: 验证服务的可用性
eg: telnet 192.168.1.1 5000 访问 ip 为192.168.1.1 的 5000 端口
eg: telnet www.baidu.com 80
1.5、wireshark 网络 抓包工具
通过上方搜索框输入 ip.addr==192.168.205.10
二、常见的虚拟机软件
在工作中,经常需要在不同平台使用不同的软件,这时候虚拟机就是必需品了。在Linux上比较常见的有kvm、Xen、virtualbox、vmware workstation等。
-
kvm
Kernel-based Virtual Machine的简称,是基于内核的开源虚拟化,在Linux2.6.20之后集成在各个主要的发行版本。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。在2008年的时候,红帽发言人表示,KVM相比Xen有着更好的可管理性以及更高的性能。因此RHEL6以及之后的版本,默认支持KVM,而放弃了Xen。
-
Xen
Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发。Xen通过一种叫做半虚拟化的技术获得高效能的表现(较少的效能损失, 典型的情况下大约损失 2%, 在最糟的情况下会有 8% 的效能耗损; 与其它使用完全的虚拟化却造成最高到 20% 损耗的其他解决方案形成一个明显的对比),甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有极佳的表现。但是Xen的操作比较复杂,维护成本比较高。不支持windows虚拟机。
-
VirtualBox
VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。VirtualBox号称是最强的免费虚拟机软件,它不仅具有丰富的特色,而且性能也很优异!VirtualBox 是由 qemu 改写而成,包含大量 qemu 代码。可以使用于不支持虚拟化的cpu。值得说的一点:VirtualBox 在图形方面比较好,能进行2D 3D加速。操作上有独立的图形界面,易于上手。但对CPU的控制不是很好,比较适合有桌面需要的虚拟机。
-
VMware Workstation
VMware Workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。收费收费收费,重要的事情说三遍。
三、环境准备
3.1、什么是vagrant?
vagrant是一个工具,用于创建和部署虚拟化开发环境的。
拿VirtualBox举例,VirtualBox会开放一个创建虚拟机的接口,Vagrant会利用这个接口创建虚拟机,并且通过Vagrant来管理,配置和自动安装虚拟机。
3.2、常见命令
命令 | 解释 |
---|---|
vagrant box list | 查看目前已有的box |
vagrant box add | 新增加一个box |
vagrant box remove | 删除指定box |
vagrant init | 初始化配置vagrantfile |
vagrant up | 启动虚拟机 |
vagrant ssh | ssh登录虚拟机 |
vagrant suspend | 挂起虚拟机 |
vagrant reload | 重启虚拟机 |
vagrant halt | 关闭虚拟机 |
vagrant status | 查看虚拟机状态 |
vagrant destroy | 删除虚拟机 |
3.3、应用
- 编写Vagrantfile文档
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.require_version ">= 1.6.0"
boxes = [
{
:name => "docker-node1",
:eth1 => "192.168.205.10",
:mem => "1024",
:cpu => "1"
},
{
:name => "docker-node2",
:eth1 => "192.168.205.11",
:mem => "1024",
:cpu => "1"
}
]
Vagrant.configure(2) do |config|
config.vm.box = "centos/7"
boxes.each do |opts|
config.vm.define opts[:name] do |config|
config.vm.hostname = opts[:name]
config.vm.provider "vmware_fusion" do |v|
v.vmx["memsize"] = opts[:mem]
v.vmx["numvcpus"] = opts[:cpu]
end
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", opts[:mem]]
v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
end
config.vm.network :private_network, ip: opts[:eth1]
end
end
config.vm.synced_folder "./labs", "/home/vagrant/labs"
config.vm.provision "shell", privileged: true, path: "./setup.sh"
end
- 编写 setup.sh 为 并且创建 labs
#/bin/sh
# change registory
sudo yum install -y wget
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum makecache
sudo yum -y update
# install some tools
sudo yum install -y git vim gcc glibc-static telnet bridge-utils
# install docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
# start docker service
sudo groupadd docker
sudo usermod -aG docker vagrant
sudo systemctl start docker
rm -rf get-docker.sh
- 3. 使用 ip a 查看 虚拟机的ip地址 然后 使用 ping ping通两台虚拟机 能 ping 通即可
ip a
ping 192.168.205.10
ping 192.168.205.11