一张网卡设置多个IP

先要明白一个道理,硬件层的网卡,cpu或内存,路由之间的联系,以及软件层的网卡(ip,mac,netmask等数据),系统路由表(ip,netmask,标识等),路由器系统路由表(ip,netmask,标识等)。和我们相关的是软件层的联系,我们要知道原理就很容易分析出网络出错的原因了。先来看一下路由表:

一张网卡设置多个IP

 上面的过程是,当我连接网络,设置dns后发现冒看到路由表,所以这时候是上不了网的,然后我service network-manager restart ,再 设置dns,最终的路由表为最下面4条,路由表有时候能看到,有时候看不到,是因为路由器的路由协议有点问题,没有自动生成我系统的路由表,这张表是动态路由协议生成的路由表,和一个虚拟机的(可能是静态的,没研究);

一张网卡设置多个IP

当我们访问目标为169.254.12.33的ip地址的时候,路由表选择的路线是第二条,这是因为路由表的网络部分为16位,及169.254开头的,直接匹配上了,当访问192.168.1.222的时候,路由表选择的路线是第三条,因为路由表的网络部分是24位,及192.168.1,直接匹配上了,当访问223.162.11.22(随便乱按的IP) 的时候,选择第一条,因为网络部分为0位,及任何非下面三条路由表的ip直接匹配网关(外网),至于局域网通信,则是根据arp发广播协议进行的,这是协议跟线路有什么关系呢,具体没看linux内核源代码。当你发过去的192.168.1.222这条ip的时候,你的路由表是192.168.1.0这条,路由器上的应该也是这条192.168.1.0,对方的路由表也是这条192.168.1.0,线路确定了现在要确定主机,主机部分就是222,对方是222的主机就是对的了,这里路由表与你ip直接是怎么进行比较然后确定IP的,没看过内核源代码,我认为是根据IP与子网掩码确定ip的,如果你的网卡设置了多个IP,是完全可以的,因为路由器中可能有多个网段,1或2,192.168.1.0或192.168.2.0,这时候你设置了你的路由表,但是你没有添加对应的IP应该也是不能多网段通信,所以一个网卡设置多个ip适合多网段数据共享;选择线路的时候,如果路由表目标相同则选择跃点小的;整个流程分析感觉都是内核算法;