linux 單網卡來綁定多IP實現多網段訪問以及多網卡綁定單IP實現附載均衡

今天有遇到實現linux下訪問多網段問題,以前只是有注意資料修改linux路由的的方法,在使用2003系統時倒是有經常單網卡訪問多網段。前提是先綁定每個網段的一個IP
那同理如果我們需要實現linux下單網卡訪問多網段,我們就必須先在單網卡上綁定多個IP了,看以下實現:

我這裏以自己使用的Redhat Enterprise Linux爲例說明。
假設需要綁定多IP的網卡是eth0,我們先看看原網卡的配置信息和系統路由:
[root@test network-scripts]# more ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=172.16.1.255
HWADDR=00:0C:29:A2:0C:32
IPADDR=172.16.1.55
NETMASK=255.255.255.0
NETWORK=172.16.1.0
ONBOOT=yes
TYPE=Ethernet

[root@test network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         172.16.1.1      0.0.0.0         UG    0      0        0 eth0

請在/etc/sysconfig/network-scripts目錄裏面創建一個名爲ifcfg-eth0:0的文件,內容和原來ifcfg-eth0內容類似,但是需要注意按照自己的目的修改,如下這是原網卡的配置信息:我們也可以簡單地將原ifcfg-eth0複製一份並更名爲ifcfg-eth0:1
[root@test network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1
並修改內容如下
[root@test network-scripts]# more ifcfg-eth0:1
DEVICE=eth0:1   
BOOTPROTO=static
BROADCAST=192.168.140.255
HWADDR=00:0C:29:A2:0C:32
IPADDR=192.168.140.242
NETMASK=255.255.255.0
NETWORK=192.168.140.0
ONBOOT=yes
TYPE=Ethernet
其中的DEVICE爲設備的名稱,如果複製過來後設備名沒有修改,該網卡上將會被綁定eth0:1這個文件中的IP。
IPADDR爲此設備的IP地址,BROADCAST是廣播地址,NETMASK爲子網掩碼,ONBOOT 表示在系統啓動時自動啓動,如果IP地址相同,該網卡會被自動down掉的,即ONBOOT=no
[root@test network-scripts]# service network restart  //配置完成後重新啓動網絡服務就可以了連接到新的網段了。
[root@test network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.140.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0  //增加綁定IP後自動添加的路由
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         172.16.1.1      0.0.0.0         UG    0      0        0 eth0
[root@test network-scripts]# ping 192.168.140.1    //並且可以對應網段正常通信了。
PING 192.168.140.1 (192.168.140.1) 56(84) bytes of data.
64 bytes from 192.168.140.1: icmp_seq=0 ttl=255 time=3.75 ms

如果需要再綁定多一個IP地址,只需要把文件名和文件內的DEVICE中的eth0:x加一即可,LINUX最多可以支持255個IP別名.


對以上內容的一點擴充:在這裏我在用route命令添加靜態路由,使該機器可以訪問到其他網段:注意:我這裏的環境是192.168.140.1爲三層交換機上一個VLAN的IP,並且三層交換上啓用了路由在手動增加靜態路由之前,我們並沒有辦法訪問到192.168.140.1以外的網段。我們這裏添加一條路由
[root@test network-scripts]# route add -net 192.168.0.0/16 gw 192.168.140.1
[root@test network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.140.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
192.168.0.0     192.168.140.1   255.255.0.0     UG    0      0        0 eth0
0.0.0.0         172.16.1.1      0.0.0.0         UG    0      0        0 eth0
[root@test network-scripts]# ping 192.168.200.1   //這裏我們可以看到增加靜態路由後立即就可以通過三層交換訪問到其他網段了
PING 192.168.200.1 (192.168.200.1) 56(84) bytes of data.
64 bytes from 192.168.200.1: icmp_seq=0 ttl=63 time=3.77 ms

route 命令參數如果記不牢固,可以通過route --help查看即可。對於linuix使用者來說,任何情況這是最直接也是最好的幫助了。當然我們希望不要每次重新啓動計算機之後去手動添加路由,那我們可以把該命令寫入到系統啓動腳本/etc/rc.d/rc.local中

普遍適用的單網卡綁定多IP實現方法
ifconfig eth0:1 192.168.140.242 broadcast 192.168.140.255 netmask 255.255.255.0
同樣可以把上述命令加在啓動腳本/etc/rc.d/rc.local中.


多網卡共用單IP的實現方法
 
  使用多塊網卡虛擬成爲一塊網卡,具有相同的IP地址。這項技術其實在cisco和sun中已經存在,分別稱爲Trunking和 etherchannel技術,在linux中,這種技術稱爲bonding.因爲bonding在內核2.4.x中已經包含了,只需要在編譯的時候把網絡設備選項中的 Bonding driver support選中就可以了。然後,重新編譯核心,重新起動計算機,執行如下命令:
ismod bonding
ifconfig eth0 down
ifconfig eth1 down
ifconfig bond0 ipaddress
ifenslave bond0 eth0
ifenslave bond0 eth1
現在兩塊網卡已經象一塊一樣工作了,這樣可以提高集羣節點間的數據傳輸。
你最好把這幾句寫成一個腳本,再由/etc/rc.d/rc.local,以便一開機就生效。
  bonding對於服務器來是個比較好的選擇,在沒有千兆網卡時,用兩三塊100兆網卡作 bonding,可大大提高服務器到交換機之間的帶寬。但是需要在交換機上設置連接bonding 網卡的兩個口子映射爲同一個虛擬接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章