引:在Linux下有時候需要給一個網卡綁定多個IP,本文介紹在Redhat系列(redhat,Fedora Core,Centos)中的實現方法和一種在Gentoo等其他Linux中普遍適用的方法。
在Linux下有時候需要給一個網卡綁定多個IP,本文介紹在Redhat系列(redhat,Fedora Core,Centos)中的實現方法和一種在Gentoo等其他Linux中普遍適用的方法。
1、單網卡綁定多IP在Redhat系列中的實現方法
假設需要綁定多IP的網卡是eth0,請在/etc/sysconfig/network-scripts目錄裡面建立一個名為ifcfg-eth0:0的檔案,
內容範例為:
DEVICE=”eth0:0″ IPADDR=”192.168.0.2″ BROADCAST=”172.168.0.255″ NETMASK=”255.255.255.0″ ONBOOT=”yes” |
其中的DEVICE為裝置的名稱,
IPADDR為此裝置的IP地址,
BROADCAST是廣播位址,
NETMASK為子網路遮罩,
ONBOOT 表示在系統啟動時自動啟動。
如果需要再綁定多一個IP地址,
只需要把檔案名稱和檔案內的DEVICE中的eth0:x加一即可。
LINUX最多可以支援255個IP別名
2、普遍適用的單網卡綁定多IP實現方法
ifconfig eth0:1 192.168.0.3 broadcast 192.168.0.255 netmask 255.255.255.0 |
可以把上述命令加在啟動自運行檔案裡面,在Gentoo下是/etc/conf.d/local.start,而某些版本的Linux是/etc/rc.d/rc.local。
3、多網卡共用單IP的實現方法
使用多塊網卡虛擬成為一塊網卡,具有相同的IP地址。這項技術其實在sun和cisco中已經存在,分別稱為 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或者/etc/conf.d/local.start調用,以便一開機就生效。
bonding對於伺服器來是個比較好的選擇,在沒有千兆網卡時,用兩三塊100兆網卡作 bonding,可大大提高伺服器到交換器之間的頻寬。但是需要在交換器上設定串連bonding 網卡的兩個口子映射為同一個虛擬介面。
-----
設定linux的vlan指令碼2007-11-19 10:30
下面是指令碼vlan.sh#!/bin/bashecho 1 > /proc/sys/net/ipv4/ip_forwardvconfig add eth0 51ip address add 217.221.181.1/24 dev eth0.51ip link set dev eth0.51 upvconfig add eth0 52ip address add 217.221.182.1/24 dev eth0.52ip link set dev eth0.52 upvconfig add eth0 53ip address add 217.221.183.1/24 dev eth0.53ip link set dev eth0.53 up在rc.local中啟動 |
--------------
透過 VLan 的功能能將一個實體的 switch 將他切割成多個 logical broadcast domain (所有的廣播封包 broadcast package 只會在此 doamin 中傳送).他的做法也很簡單就是在原先的訊框 (Frame) 指定 tag 而這 tag 的數字即是 VLAN ID. VLAN 已經被 IEEE 列為標准協定的一員 802.1q一開始沒設定任何 VLAN 的 switch 其所有的網路埠的 VLAN ID 皆為 1.
Linux 的核心也是有支援 VLAN 功能,主要就是在網路埠上的訊框加上指定的 VLAN Tag .設定使用上很簡單.只要 2 步驟即可.
步驟一
目前 RedHat 是將 VLAN 編譯成模組的方式來支援,所以先看看你的 Linux 是否已經掛載了 802.1q(VALN) 的模組.
[root@benjr ~]# modprobe 8021q [root@benjr ~]# lsmod |grep -i 8021q |
步驟二
開始設定 VLAN ID .我們透過指令 #vconfig add [interface-name] [vlan_id] 這邊要注意的一點是要設定網路裝置 [interface-name] 必須是 active 的,可以透過 #ifconfig 查詢到的.[vlan_id] 可以為 0-4095.
[root@benjr ~]# vconfig add eth0 10 |
這樣系統就會多出一組 eth0.10 的裝置出來,這裝置將只接受含有 VLAN ID =10 的訊框.所有設定好的 VLAN 網路埠都可以透過 /proc/net/vlan/config 來查詢到.不過這樣的設定下次重新開機就會失效了,還需要將他寫在 /etc/rc.local,讓他在開機時候就會生效.如果是要立即移除時可使用 #vconfig rem [vlan-name] 來移除.
不過這並不符合我當初的構想是將 Linux 下多個網路埠把他當成可以使用 VLAN 的 switch.
參考檔案 http://linux.vbird.org/somepaper/20060622-linux_vlan.pdf
不過這樣的應用我不是很懂為什麼要將一個網路埠切割成多個並將子埠指派不同的 VLAN ID.上網查了一下似乎有一種應用叫做單臂路由器 one-armed-router,是用來在多個虛擬網路中傳送封包.而一個單臂路由器上所連接網路埠都是再同一個實體網路埠上.看起來不是很懂還是有其 他的應用方式.
然後添加虛擬設備
vconfig add eth0 192
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0.192
編輯ifcfg-eth0.192 將eth0改成eth0.192
編輯ETH0將關於ip的刪除
開機啟動802.1q
在/etc/sysconfig/network鍵入VLAN=yes
開機保留vlan配置:編輯/etc/rc.local
添加如下內容:
modprobe 8021q
vconfig add eth0 192
ifup eth0.192