引:在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/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
vconfig add eth0 51
ip address add 217.221.181.1/24 dev eth0.51
ip link set dev eth0.51 up
vconfig add eth0 52
ip address add 217.221.182.1/24 dev eth0.52
ip link set dev eth0.52 up
vconfig add eth0 53
ip address add 217.221.183.1/24 dev eth0.53
ip 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.

參考文件

不過這樣的應用我不是很懂為什麼要將一個網路埠切割成多個並將子埠指派不同的 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