Linux 网卡绑定和多网卡共用单 IP
Linux 操作系统中存在两种网卡绑定方式:单网卡绑定多 IP 和多网卡共用单 IP。这两种方式都可以提高服务器的网络性能和可靠性。
单网卡绑定多 IP
单网卡绑定多 IP 是指在一个网卡上绑定多个 IP 地址,使得服务器可以同时提供多个网络服务。在 Redhat 系列中,可以在 `/etc/sysconfig/network-scripts` 目录下创建一个名为 `ifcfg-eth0:0` 的文件,以实现单网卡绑定多 IP。文件内容样例为:
```
DEVICE="eth0:0"
IPADDR="172.16.170.2"
BROADCAST="172.16.170.254"
NETMASK="255.255.255.0"
ONBOOT="yes"
```
其中,`DEVICE` 为设备的名称,`IPADDR` 为此设备的 IP 地址,`BROADCAST` 是广播地址,`NETMASK` 为子网掩码,`ONBOOT` 表示在系统启动时自动启动。如果需要再绑定多一个 IP 地址,只需要把文件名和文件内的 `DEVICE` 中的 `eth0:x` 加一即可。Linux 最多可以支持 255 个 IP 别名。
此外,还可以使用 `ifconfig` 命令来实现单网卡绑定多 IP,例如:
```
ifconfig eth0:1 172.16.170.3 broadcast 172.16.170.254 netmask 255.255.255.0
```
可以把上述命令加在启动自运行文件里面,在 Gentoo 下是 `/etc/conf.d/local.start`,而某些版本的 Linux 是 `/etc/rc.d/rc.local`。
多网卡共用单 IP
多网卡共用单 IP 是指使用多块网卡虚拟成为一块网卡,具有相同的 IP 地址。这项技术其实在 sun 和 cisco 中已经存在,分别称为 Trunking 和 etherchannel 技术,在 Linux 中,这种技术称为 bonding。因为 bonding 在内核 2.4.x 中已经包含了,只需要在编译的时候把网络设备选项中的 Bonding driver support 选中就可以了。
具体实现步骤为:
1. 编译内核时选择 Bonding driver support 选项。
2. 重新编译核心,重新启动计算机。
3. 执行以下命令:
```
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 网卡的两个口子映射为同一个虚拟接口。