欢迎关注博主 Mindtechnist 或加入【Linux C/C++/Python社区】一起探讨和分享Linux C/C++/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。
IP地址虚拟网络与虚拟机网络配置
- 1. IP地址与子网划分
- ☞IP地址
- ☞特殊IP地址
- ☞IP地址申请
- ☞子网掩码
- ☞子网划分
- 2. IP地址配置
- 3. 虚拟机网络配置
专栏: 《Linux从小白到大神》| 系统学习Linux开发、VIM/GCC/GDB/Make工具、Linux文件IO、进程管理、进程通信、多线程等,请关注专栏免费学习。
IP地址分为网络地址和主机地址
在同一个子网内,通过mac地址就能通信,如果是跨子网的话就需要IP地址来实现通信。
将IP地址的网络位和主机位固定下来后,IP地址被分为了以下几类
比如说现在有一个IP地址:172.16.45.10/16。其中/16表示这个IP地址的前16位是网络位,那么该IP地址包含了两部分信息:
在局域网内可以配置公网IP,但是不能去连接网络,因为这些IP可能会和外网的IP产生冲突,因为我们在私网内配置了公网IP。所以,私网内就要用私网地址,如果配置公网地址一定不能去连接网络,因为如果和其它公网IP冲突的话,即使发送数据包连接网络也会因为冲突而发送失败。
子网掩码用于识别IP地址中的网络地址和主机地址,子网掩码也是32位二进制数,在子网掩码中,对应于网络地址部分全用1表示,主机部分全用0表示。还可以用网络前缀表示子网掩码,即"/<网络地址位数>",比如 172.16.45.0/24 表示B类网络 172.16.45.0/24 的子网掩码为 255.255.255.0 。
子网划分是通过借用IP地址的若干位主机位来充当子网地址,从而将原来的网络划分为若干个彼此隔离的子网。实际上就是把主机位拿出来给网络位用,扩大网络数,实现三层隔离。比如 192.168.1.1/25,这就是一划分后的子网,把主机位的1位拿出来给网络位用。
需要注意的是:
ifconfig查看当前操作系统中被激活的网卡信息
eth6:eth代表以太网etherent,6表示第6号网卡;网卡属于数据链路层,以太网协议;HWaddr表示mac地址;inet表示IP地址;Bcast表示广播地址;Mask表示子网掩码;MTU表示网卡最大传输单元,即一次虽多收发多大的数据;RX表示收了多少包;TX表示发了多少包;RX/TX bytes表示总共收发了多少MB。
lo:本地回还,loopback协议,inet是它的回还地址。
可以通过 ifconfig eth6 之查看eth6的信息。使用ifconfig可以配置网卡,比如配置网卡IP(一般需要加上掩码,否则会自动分配掩码,加掩码有两种方式)
这种直接通过命令行配置的方式是临时配置,重启Linux配置就失效了。或者重启网络服务后也失效了,重启网络服务命令是
service network restart
要想永久配置网卡,有两种方式
修改eth6网卡的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth6
ONBOOT:开机或重启网络服务的时候,网卡是否被激活。
网卡的守护进程,一般不启动这个服务,选择no,也可以通过命令停止网卡守护进程服务。(守护进程最好关闭,因为这个进程会影响我们配置网络,导致配置不成功)
BOOTPROTO表示IP的获取方式:
dhcp:选择dhcp表示自动获取(动态获取),如果我们的Linux需要分配IP的话,它会向dhcp服务器去请求。
static:静态获取,选择静态方式的话,需要在配置文件中把IP、掩码、网关、DNS等都写在配置文件中;
none:类似于静态;
通过配置文件配置完网卡后,需要重启网络服务才能生效。同时,配置文件中的ONBOOT必须是yes才能在重启的时候激活网卡。
如果ONBOOT改为yes后,还没有配置生效,可以查看下守护进程NetworkManager是否在运行,如果在运行的话,则关闭该服务。
chkconfig --list #查看服务
0-6分别表示,在操作系统的0-6启动级别下,启动操作系统的时候,该服务是否开启。使用该命令也可以修改在相应启动级别下某一服务的开启或关闭状态。
上面命令表示,在启动级别2345,也就是启动级别为2345的时候,启动操作系统,NetworkManager服务关闭。这样,我们即使以后重启操作系统,NetworkManager服务也不会开启。(实际上我们只关注3和5启动级别就够了,这也是一般情况下使用的开机启动级别)
查看网关信息用route命令
这两行信息表示,如果往192.168.80.0发包没有网关,如果往其它任何地址发包,网关是192.168.80.2,最后的eth6表示从eth6网口发出包。
查询DNS服务通过配置文件查看
正常情况下,我们的网卡需要通过网线连接到交换机上。虚拟机中的虚拟网卡,也应该连接到一个虚拟的交换机上,虚拟交换机有很多选择。
桥接模式:如果选择桥接模式,就相当于把我们的计算机本地连接的网卡当作虚拟交换机,也就是说虚拟机网卡的虚拟网线连接到了本地连接这个网卡(虚拟交换机)上了。而本地网卡的网线连接到了局域网内的交换机上了,此时就相当于我们的虚拟机也连接在了局域网内,它就相当于一台实际的物理机,可以和局域网内的计算机通信,可以使用ping来测试。(在一个子网内部通信,是不需要网关的)
还可以使用arping,表示arp ping发送arp包获取物理地址,可以用来检测IP是否冲突,如果回复的物理地址有两个,则表示IP冲突。下面的命令表示arp包从eth0出去,发给11.11
NAT模式:NAT就是指网络地址转换,我们使用的路由器都是有自己的地址的,一般我们安装路由器都会有一个登陆用的账户密码,这个账户就是登陆并连接运营商的,它会得到一个运营商承认的IP地址,这样我们就可以上网了(连接公网)。然后,我们有很多手机、电脑等可以连接到这个路由器来上网,这些设备也都有自己的IP,这些IP是私网IP。也就是说,路由器有一个公网IP和一个私网IP,私网IP负责和手机等设备连接,公网IP可以连接运营商来实现上网。所以,我们的手机如果想连接Internet,需要通过路由器,由路由器来转发我们手机发出的数据包。比如说我们用手机打开浏览器,输入"www.baidu.com",这是一个域名(需要由DNS解析为IP才能访问,如果手机没有DNS,那么将无法上网),首先手机会发包到路由器,路由器识别出手机IP是私网IP,目的IP是公网IP,会进行一个操作叫做snat网络地址转换,把源地址换成能连接百度的公网IP,这样手机就连到百度了。
NAT模式,虚拟机的网卡相当于通过网线连接到了物理机的VMnet8网卡了
这个配置可以在虚拟机的虚拟网络编辑器查看
NET模式下,一般使用DHCP自动获取IP。因为虚拟机连接的VMnet8网卡,而这个网卡是一个虚拟网卡(桥接模式中连接的本地网卡是物理网卡),而虚拟机网卡只能被物理机本机识别,所以虚拟机只能和物理机本机连接(桥接模式虚拟机就相当于一个物理机,和本机是同一级别的,而NET模式相当于虚拟机是本机内部的),此时虚拟机需要通过物理本机来和外界连接。
仅主机模式:也相当于只能和物理本机连接。如果我有两个虚拟机都设置仅主机的话,这两台虚拟机就相当于在一个子网内,他们都连接VMnet1虚拟网卡,此时两台虚拟机可以直接连接。此时物理主机是通过虚拟的VMnet1网卡来和虚拟机通信的,所以物理主机要想ping虚拟机,要设置到同一网络(IP地址的网络位)。
一般我们都是用桥接模式,使用桥接模式的时候,我们相当于有两台物理机(本机和虚拟机)。
网卡相关命令补充:
ifconfig eth6 up
ifconfig eth6 down #关闭网卡
ifdown eth6
ifup eth6 #让网卡加载网卡配置文件(需要先down再up)
两个虚拟机都是桥接模式,为什么不能ping通,虽然二层相同,但是三层是隔离的。