理論基礎
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.www58058.com/71516