理论基础
1、先说说这个IP:
IP是一种协议,计算机与计算机通信协议,是一种底层通信协议,分为IPv4与IPv6,现在使用的还是IPv4
IPv4由32位二进制组成,也就是由32位0或者1组成,通过排列组合也能算出来这个世界一共有多少个IP了,有2^32个IP约42.9亿个IP,但是据说现在地球人口已经80来亿了,可以想像一下,IP资源比较溃乏,还好IPv6快要出现了,这个ip几乎可以说是用之不净的IP有2^128个IP,据说可以给世界上的每一粒砂子配置一个IP,可以想像一下,IPv6的数量是恐怖的
2、说说这个IP的分类吧
先按照这个IP前八位数字的型式分一下类,分为五类,分别是A,B,C,D,E
A:1.0.0.0~127.255.255.255
B:128.0.0.0~191.255.255.255
C:192.0.0.0~223.255.255.255
D:224.0.0.0~239.255.255.255(组播地址)
E:240.0.0.0~255.255.255.255(供给研究使用的预留IP)
再按这个使用用途分一下类,这个就是公有IP与私有IP啦,下面说说这些IP中的私有IP,每一个类别中有一段IP划分成私有IP
A:10.0.0.0~10.255.255.255
B:172.16.0.0~172.31.255.255
C:192.168.0.0~192.168.255.255
D和E没有私有IP是不是有点讨厌呢。。。
注:公有IP和私有IP默认是不能通信的,大家明白,据一些老前辈说他们在年轻的时候办公电脑用的IP是公有IP,这种情况我是没有见过。。。。
3、说一下VLSM吧:(可变长子网掩码)
这里要小说几个术语了:
网段:就像A,B,C,D,E分类一样,只不过是不知名的分类,例如把A类地址又分为十份,这十份中的每一份都是一个网段
网络位:评定两个IP是不是同一个网段的标准
主机位:确定一个网段中可以容纳多少台设备,有的人一说这个设备就是计算机,我觉的现在不应该这么狭隘了,现在马桶都快变成智能化了,所以就没有必要在这么局限了
与运算:是一种算法,就是对位做乘法,就是0与1做乘法,这个答案比较明了,不是1就是0,但是有很多人就是不会算,我想你是一个聪明人,应该会算的喽;记住是对位相乘,不要跑偏了
我预计有很大一部分人是不会做进制转化的,咱专业点好不好,做为半个IT界人,居然不会进制转化,我有点不淡定了,其实进制蛮多的,比如我们生活中经常用到的十进制,一小时60分,一天24小时,这都能算是一种进制,我们即然会算时间,为什么不会算这些个二进制、八进制、十进制呢
先说说十进制转化为二进制吧,使用短除法进行转化
例:将1382转化为二进制
1382/2=691 余0
691/2=345 余1
345/2=172 余1
172/2=86 余0
86/2=43 余0
43/2=21 余1
21/2=10 余1
10/2=5 余0
5/2=2 余1
2/2=0 余0
1
倒着写下去,从下往上写就是10101100110,这一串数就是1382转化成二进制的结果
上面说了十转二,下面来看看二转二
例:将10001011111011001转化为十进制
10001011111011001=1*2^0+0*2^1+0*2^2+1*2^3+1*2^4+0*2^5+1*2^6+1*2^7+1*2^8+1*2^9+1*2^10+0*2^11+1*2^12+0*^2^13+0*2^14+0*2^+15+1*2^16
=1+0+0+8+16+0+64+128+256+512+1024+0+4096+0+0+0+65535
=71641
所以这个二进制转化为十进制的结果就是71641
用二进制转化八进制与十六进制的简单方法,这种方法叫”八四二一码“,如下图
这就是八四二一码的核心思想,分片,补0,其中要将二进制转化为八进制,将二进制分为三个一组(从未位到首位分割),如果首位不够三位可心借0,同样的,如果是转化为十六进制,那么就是将四个二进制分成一组,不够可心补0,还是容比较容易与方便的
这个进制转化的中介是十进制,如果要将八进制或都十六进制转化为二进制,需要将八进制或都十六进制转化为十进制,然后再转化为二进制
例:将八进制转化为十进制:将八进制数66转化为十进制
66=6*8^0+6*8^1
=6+48
=54
例:将十六进制转化为十进制:将十六进制数8E65转化为十进制
8E65=5*16^0+6*16^1+14*16^2+8*16^3
=5+96+3584+32768
=36453
例:将十进制转化为十六进制:将十进制数12306转化为十六进制
12306/16=769 余2
769/16=48 余1
48/16=3 余0
3
所以结果十六进制为3012
现在说说IP与子网掩码的与运算:
与运算就是将IP与子网掩码转化成二进制后,对位相乘,如下图
上图就是IP与子网掩码做与运算,并得出网络位为192.168.1.0
而主机位就是二进制网络俺码中的0即为主机位,由排列组合可以看出一类子网掩码可以包含多少个主机,但是在主机中,有两个特别的存在,那就是主机位与网络位即这一个网络中最大的一个IP与最小的一个IP,这两个不可以给设备分配,同时192.168.1.0表示这个网段,192.168.1.255就是这个网段的广播地址。
VLSM:可变长子网掩码
向主机位借位,借位后的IP就是无类的IP,比如说192.168.1.0/24借两位就表示成192.168.1.0/26,当然,即然借了,广播地址就不为255,比如这个网段192.168.1.0/26的广播地址就是192.168.1.63
下面说下相关公式吧:
计算一个网段下的主机数:2^n-2(其中n为主机位0的个数)
计算一个网段分的子网段数:2^m(其中m为借位的个数)
子网的边界:256-N(N为借位后二进制数值转化为十进制的值,例192.168.1.0/26中借位两位由原来的八个0变为11000000,那么11000000转化为十制就是192,那么公式就是256-192,结果为64,那么,这个子网段就是以64分割的,第一个网段就是192.168.1.0~192.168.1.63、第二个就是192.168.1.64~192.168.1.127、……)
4、CIDR(超网)
超网是一种减少路由条目的技术,可以将多个网段合并为一个网段
例如三个网段分别为192.168.128.0/24、192.168.192.0/24、192.168.224.0/24在写入路由条目的时候就可以合并为一条路由192.168.128.0/17
5、说说静态路由与动态路由吧:
静态路由顾名思义就是固定的,一个缺点,当然也有优点了,缺点是需要一条一条的配置,面全球有十三万条路由,好不容易配置好了十三万条路由了,路由器崩溃了,这是必然的,能存十三万条路由的路由器一般单位还买不起,所以,这个静态路由适合小环境中使用,一般公司都公使用静态路由,因为还有一个技术叫NAT(有兴趣可以上网查下),而且又有几个公司有超过5台路由器的,况且五台路由器才配置几条路由啊,简单实惠,何乐而不为呢,所以说,动态路由对大部分地方就是一个复杂而无用的技术,当然,动态路由的优点是静态所不能比的,如果用静态路由写5000条路由,用动态也就那么几条,动态路由的路由主要是靠自动获取,性能也要比静态好的多(大型网络中)。所以在Linux中静态路由就是必不可少的了,当然,如果你要用Linux当个路由器,也是可以的,可以装个quagga软件包,这个包里有OSPF与RIP协议,用这个软件的,应该就是做软路由了,那你也可以创业了,做个联通的宽带代理商了,成本价也就几百块。。。。闲扯结束,继续写吧。。
实例1
静态路由
路由拓扑
步骤:
1、配置IP
(临时)ifconfig 网卡名 IP/PREFIX
(非临时)写入配置文件/etc/sysconfig/network-scripts/ifcfg-网卡名
2、在路由器上配置
echo 1 > /proc/sys/net/ipv4/ip_forward
3、配置路由与网关
(网关)route add default gw 网关
(路由)route add -net 要去的网段 gw 下一跳近端口IP
配置过程
S1:ifconfig eth0 192.168.35.2/24
route add default gw 192.168.35.1
S2:ifconfig eth0 172.31.1.2/24
route add default gw 172.31.1.1
R1:ifconfig eth0 192.168.35.1/24
ifconfig eth1 10.1.1.1/24
route add -net 172.31.1.0/24 gw 10.1.1.2
echo 1 > /proc/sys/net/ipv4/ip_forward
R2:ifconfig eth0 172.31.1.1/24
ifconfig eth1 10.1.1.2/24
route add -net 192.168.35.0/24 gw 10.1.1.1
echo 1 > /proc/sys/net/ipv4/ip_forward
配置结束
注:各种网卡的协调性
实例2
BONDING:
BONDING的模式:
mode 0 为balance-rr(轮询模式)
mode 1 为active-backup(主备模式)
mode 3 为broadcast(广播策略)
步骤:
1、清除原有配置网卡配置文件
2、新建bonding配置文件
3、配置bonding虚拟设备文件
DEVICE= //设备名
BOOTPROTO= //获取IP方式
ONBOOT= //是否开机自动启动
BONDING_OPTS=”mode={0|1|3};miimon=100″ //BONDING模式
IPADDR= //静态IP地址
NETWORK= //掩码
GATEWAY= //网关
DNS1= //dns
4、配置实体网卡的配置文件
DEVICE= //设备名
SLAVE= //是否为slave{yes|no}
MASTER= //是否为master{bonding的设备名}
配置过程:
ifconfig eth0 down
ifconfig eth1 down
rm -rf ifcfg-eth0
rm -rf ifcfg-eth1
touch ifcfg-bond0
touch ifcfg-eth0
touch ifcfg-eth1
编辑配置文件:ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
BONDING_OPTS=”mode=1 miimon=100″
IPADDR=172.16.1.1
PREFIX=16
GATEWAY=172.16.0.1
DNS1=172.16.0.1
编辑配置文件:ifcfg-eth0
DEVICE=eth0
SLAVE=yes
MASTER=bond0
编辑配置文件:ifcfg-eth1
同ifcfg-eth1
可以查看/proc/net/bonding/bond0
配置完成
实例3
在CentOS7中的网络组
Teaming的工作模式:
broadcast(广播模式)
roundrobin(轮询)
activebackup(主备)
loadbalance(负载均衡)
lacp(链路聚合控制协议)
配置步骤:
1、删除原有网卡相关的配置文件
2、生成team
3、将实体网卡加入到team中
4、启动
配置过程:
nmcli con add type team con-name team0 ifname team0 config ‘{“runner”:{“name”:”activebackup”}}’
nmcli con add type team-slave con-name team0-eth0 ifname eth0 master team0
nmcli con add type team-slave con-name team0-eth1 ifname eth1 master team0
nmcli con down team0
nmcli con up team0
nmcli con up team0-eth0
nmcli con up team0-eth1
配置完成
原创文章,作者:gaomei,如若转载,请注明出处:http://www.178linux.com/71516