我的一点实际经验理解桥接和NAT
桥接是虚拟机完全作为一个独立的地址接在局域网中,NAT是虚拟机依赖宿主主机地址转换的一种方式
例子我的虚拟机如果用桥接模式,连接外部网站如百度时会提示此pc没有装公司的身份认证工具
而采用NAT时,访问就完全没有问题。说明对外用的还是宿主主机的地址
本文参照文章:
https://www.linuxidc.com/Linux/2016-09/135521.htm
https://www.jb51.net/article/105497.htm
结合自己的环境进行配置,留下笔记便于以后查询。
vmware版本: 10.0.4
虚拟系统: Red Hat 7 EDT 2014
三种网络模式的区别
配置方法
1. Bridged (桥接模式)
2. NAT (网络地址转换模式)
3. Host-Only (仅主机模式)
三种网络模式的区别
网络模式 特点
Bridged(桥接模式) 将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络。简而言之,这就好像在局域网中添加了一台新的、独立的计算机一样。因此,虚拟机也会占用局域网中的一个IP地址,并且可以和其他终端进行相互访问。桥接模式网络连接支持有线和无线主机网络适配器。如果想把虚拟机当做一台完全独立的计算机看待,并且允许它和其他终端一样的进行网络通信,那么桥接模式通常是虚拟机访问网络的最简单途径。
NAT(网络地址转换模式) 使用NAT模式网络连接时,VMware会在主机上建立单独的专用网络,用以在主机和虚拟机之间相互通信。虚拟机向外部网络发送的请求数据”包裹”,都会交由NAT网络适配器加上”特殊标记”并以主机的名义转发出去,外部网络返回的响应数据”包裹”,也是先由主机接收,然后交由NAT网络适配器根据”特殊标记”进行识别并转发给对应的虚拟机,因此,虚拟机在外部网络中不必具有自己的IP地址。从外部网络来看,虚拟机和主机在共享一个IP地址,默认情况下,外部网络终端也无法访问到虚拟机。此外,在一台主机上只允许有一个NAT模式的虚拟网络。因此,同一台主机上的多个采用NAT模式网络连接的虚拟机也是可以相互访问的。
Host-Only(仅主机模式) 仅主机模式,是一种比NAT模式更加封闭的的网络连接模式,它将创建完全包含在主机中的专用网络。仅主机模式的虚拟网络适配器仅对主机可见,并在虚拟机和主机系统之间提供网络连接。相对于NAT模式而言,仅主机模式不具备NAT功能,因此在默认情况下,使用仅主机模式网络连接的虚拟机无法连接到Internet(在主机上安装合适的路由或代理软件,或者在Windows系统的主机上使用Internet连接共享功能,仍然可以让虚拟机连接到Internet或其他网络)。在同一台主机上可以创建多个仅主机模式的虚拟网络,如果多个虚拟机处于同一个仅主机模式网络中,那么它们之间是可以相互通信的;如果它们处于不同的仅主机模式网络,则默认情况下无法进行相互通信(可通过在它们之间设置路由器来实现相互通信)。
配置方法
打开虚拟机,在“编辑”->”虚拟网络编辑器”看到
名称 类型
VMnet0 用于桥接模式下的虚拟交换机
VMnet1 用于仅主机模式下的虚拟交换机
VMnet8 用于NAT模式下的虚拟交换机
在Windows主机上对应虚拟了VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡,桥接模式不需要虚拟网卡。
1. Bridged (桥接模式)
桥接模式就是将主机网卡与虚拟的网卡利用虚拟网桥进行通信。类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机IP地址需要与主机在同一网段,如果需要联网,则网关与DNS需要与主机网卡一致。
查看windows主机的IP、网关、DNS等信息:
- 可在windows命令行输入命令查看:
ipconfig -all
开启虚拟机,Linux下输入命令
ifconfig
看到虚拟机中我的网卡名称为:eno16777728
对应地,可以在 /etc/sysconfig/network-scripts/目录下看到一个名为“ifcfg-eno16777728”的文件。
sudo vi /etc/sysconfig/network-scripts/ifcfg-eno16777728
修改IP与windows主机在同一网段,子网掩码、网关、DNS与windows主机一致。
修改完成后重启虚拟机网卡
sudo /etc/init.d/network restart
查看能否ping通
ping -c 6 www.baidu.com
2. NAT (网络地址转换模式)
如果网络IP资源紧张,此时使用NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。
在NAT模式中,主机网卡直接与虚拟机设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。那么我们会觉得很奇怪,为什么需要虚拟网卡VMware Network Adapter VMnet8呢?VMware Network Adapter VMnet8虚拟网卡主要是为了实现主机与虚拟机之间的通信。
VMware虚拟机“编辑”–>“虚拟网络编辑器”
1.修改“NAT设置”中的网关地址(使用默认值即可)
2.配置“DHCP设置”(注意需要与子网IP在同一网段)
3.虚拟机Linux系统中修改网络配置
vi /etc/sysconfig/network-scripts/ifcfg-XXX
xxx为网卡的名
4.配置完成后重启虚拟机网卡
$/etc/init.d/network restart
使用ping命令查看是否成功
$ping -c 6 www.baidu.com
测试虚拟网卡VMware Network Adapter VMnet8的作用
Windows下禁用VMnet8
此时Linux下ping外网正常
而ping Windows主机无法ping通
启动VMware Network Adapter VMnet8虚拟网卡后,恢复正常。
证实VMware Network Adapter VMnet8的作用是主机与虚拟机之间的通信。
注:按照此步骤如果无法连接外网,可以尝试在虚拟机“虚拟网络编辑器”里选择“恢复默认设置”试试。
3. Host-Only (仅主机模式)
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信。
Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通信。
设置步骤:
1.VMware虚拟机“编辑”–>“虚拟网络编辑器”中配置VMnet1仅主机模式,并选择“DHCP配置”*(注意需要与子网IP在同一网段)
2.VMware虚拟顶部菜单选择“虚拟机”–>”虚拟机设置“–>”网络适配器“,在网络连接中选择”仅主机模式”
3.虚拟机Linux系统中修改网络配置
vi /etc/sysconfig/network-scripts/ifcfg-XXX
xxx为网卡的名
4.配置完成后重启虚拟机网卡
$/etc/init.d/network restart
此时ping主机能够ping通
$ping -c 6 192.168.127.1
但ping外网已无法ping通。
在Host-Only模式下,若要将虚拟机接入外网,可以将主机网卡共享给VMware Network Adapter VMnet1网卡。
具体操作:
1. 将主机网卡共享给VMware Network Adapter VMnet1。
2. 虚拟机中设置VMnet1
3.Linux系统中设置网关和DNS地址为主机VMware Network Adapter VMnet1的地址
4.配置完成后重启虚拟机网卡
$/etc/init.d/network restart
此时ping主机和外网均可ping通。