Redhat Linux的网络配置,基本上是通过修改几个配置文件来实现的。

虽然也可以用ifconfig来设置IP,用route来配置默认网关,用hostname来配置主机名,但是重启后会丢失。

相关的配置文件:

/ect/hosts 配置主机名和IP地址的对应

/etc/sysconfig/network 配置主机名和网关

/etc/sysconfig/network-scripts/ifcfg-eth0 eth0配置文件,eth1则文件名为ifcfg-eth1,以此类推

一、网卡配置

假设我们要配置主机名为test,eth0的IP地址192.168.168.1/24,网关地址192.168.168.250

则/etc/sysconfig/network文件内容如下:

NETWORKING=yes
HOSTNAME=test
GATEWAY=192.168.168.250

eth0对应的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0内容如下:

DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.168.1
NETMASK=255.255.255.0
TYPE=Ethernet
ONBOOT=yes

二、单网卡绑定多个IP

有时,我们需要在一块网卡上配置多个IP,例如,在上面的例子中,我们还需要为eth0配置IP 192.168.168.2和192.168.168.3。

那么需要再在/etc/sysconfig/network-scripts下新建两个配置文件:

ifcfg-eth0:0内容如下:

DEVICE=eth0:
BOOTPROTO=static
IPADDR=192.168.168.2
NETMASK=255.255.255.0
ONBOOT=yes

ifcfg-eth0:1内容如下:

DEVICE=eth0:
BOOTPROTO=static
IPADDR=192.168.168.3
NETMASK=255.255.255.0
ONBOOT=yes

三、多个网卡绑定成一个虚拟网卡

为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。

比如我们可以将eth0和eth1绑定成虚拟网卡bond0。

首先在/etc/sysconfig/network-scripts/下创建虚拟网卡bond0的配置文件ifcfg-bond0,内容如下:

DEVICE=bond0
BOOTPROTO=none
BROADCAST=192.168.168.255
IPADDR=192.168.168.1
NETMASK=255.255.255.0
NETWORK=192.168.168.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.168.250
USERCTL=no

然后分别修改eth0和eth1的配置文件
ifcfg-eth0内容:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes

ifcfg-eth1内容:

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes

因为linux的虚拟网卡是在内核模块中实现的,所以需要安装的时候已经装好该module。

/etc/modules.conf文件中添加如下内容(如果没有该文件,则新建一个,当然也可以在/etc/modprobe.d这个目录下新建bind0.conf和bind1.conf):

alias bond0 bonding
options bond0 miimon= mode= primary=eth0
alias bond1 bonding
options bond1 miimon= mode=

其中miimon=100表示每100ms检查一次链路连接状态,如果不通则会切换物理网卡。

mode=1表示主备模式,也就是只有一块网卡是active的,只提供失效保护。如果mode=0则是负载均衡模式的,所有的网卡都是active,还有其他一些模式很少用到

primary=eth0表示主备模式下eth0为默认的active网卡

miimon是毫秒数,每100毫秒触发检测线路稳定性的事件。

mode 是ifenslave的工作状态,一共有7种方式:

=0: (balance-rr) Round-robin policy: (平衡抡循环策略):传输数据包顺序是依次传输,直到最后一个传输完毕, 此模式提供负载平衡和容错能力。


=1: (active-backup) Active-backup policy:(主-备份策略):只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。 此模式提供了容错能力。 


=2:(balance-xor) XOR policy:(平衡 策略): 传输根据原地址布尔值选择传输设备。 此模式提供负载平衡和容错能力。 


=3:(broadcast) broadcast policy:  (广播策略):将所有数据包传输给所有接口。 此模式提供了容错能力。  


=4:(802.3ad) IEEE 802.3ad Dynamic link aggregation.   IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。


=5:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):没有特殊策略,第一个设备传不通就用另一个设备接管第一个设备正在处理的mac地址,帮助上一个传。


=6:(balance-alb) Adaptive load balancing: (适配器传输负载均衡):大致意思是包括mode5,bonding驱动程序截获 ARP 在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。

这些选项可以用命令:# modinfo bonding 来查看

最后,在/etc/rc.local中加入:

modprobe bonding miimon= mode=

重启机器后可以看到虚拟网卡已经生效,可以通过插拔两个物理网卡的网线来进行测试,不过linux中网卡接管的时间好象比较长。需要说明的是如果想做成负载均衡,仅仅设置这里modprode bonding miimon=100 mode=0是不够的,还需要设置交换机的端口.


从原理分析一下(bond运行在mode 0下):
mode 0下bond所绑定的网卡的IP都被修改成一样的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。
所以mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址。
由于家里没有三层交换机,这里的试验留给网友自行验证了.

====================================================

在 /etc/rc.local 文件里加上一行:

/root/bonding.sh

bonding.sh文件内容:

#!/bin/sh
modprobe -r bonding
modprobe bonding miimon= mode=
ifconfig bond0 172.16.96.46 netmask 255.255.248.0 up
route add default gw 172.16.100.1 bond0
#ifenslave bond0 eth0 eth1 eth2 eth3 eth4 eth5
ifenslave bond0 eth0 eth1
service network restart

Linux bonding驱动: http://tzsky.blog.51cto.com/1062094/237283

四、查看当前网卡是千兆还是万兆网卡

1、ethtool

ethtool 网络接口名

#ethtool em4
Settings for em4:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: g
Wake-on: d
Link detected: yes


2、lspci  

当前是博通BCM5709千兆网卡Gigabit(万兆网卡显示为10-Gigabit

#lspci -vvv | grep Ethernet
01:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 GigabitEthernet (rev 20)
Subsystem: Dell PowerEdge R710 BCM5709 Gigabit Ethernet
Product Name: Broadcom NetXtreme II Ethernet Controller
01:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
Subsystem: Dell PowerEdge R710 BCM5709 Gigabit Ethernet
Product Name: Broadcom NetXtreme II Ethernet Controller
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
Subsystem: Dell PowerEdge R710 BCM5709 Gigabit Ethernet
Product Name: Broadcom NetXtreme II Ethernet Controller
02:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
Subsystem: Dell PowerEdge R710 BCM5709 Gigabit Ethernet
Product Name: Broadcom NetXtreme II Ethernet Controller
pcilib: sysfs_read_vpd: read failed: Connection timed out

小知识:

Gigabit是数据存储的单位,通常用符号Gbit或Gb表示。它的换算公式:1 Gb = 10的9次方 bits = 1,000,000,000 bits 。
 
另一个常见的单位是Gibibit,gibibit是用来表示二进制换算的,1 gibibit = 2的30次方 bits = 1,073,741,824 bits。

最新文章

  1. Nodejs 饭店
  2. 阿里云服务器上开启linux远程桌面连接
  3. 仿饿了点餐界面2个ListView联动
  4. ASP.Net的两种开发模式
  5. MyEclipse 中各种 libraries 的含义
  6. js判断字符是否包含字母汉字
  7. Android View坐标Left, Right, Top, Bottom
  8. 配置ConvenientBanner时出现的问题
  9. Attribute "lazy" with value "true" must have a value from the list "false proxy no-proxy "
  10. 161104、NoSQL数据库:key/value型之levelDB介绍及java实现
  11. 手动实现ArrayList
  12. 【BZOJ】【1901】【Zju2112】 Dynamic Rankings
  13. 学习笔记7_Java_day11_JSP原理(5)
  14. SQL————高级查询
  15. 让Safari使用Chrome的代理
  16. css案例学习之层叠样式
  17. C# 来做 视频播放 视频流处理 转码 实时传输
  18. 《图解HTTP》读书笔记(六:HTTP状态码)
  19. 一道c++面试题 输入一个维度,逆时针打印出一个指定的矩阵
  20. python-批量添加图片水印

热门文章

  1. 552 Student Attendance Record II 学生出勤记录 II
  2. 阻塞 io 非阻塞 io 学习笔记
  3. JavaScript中的this陷阱
  4. jsonwebapi请求头的设置
  5. 洛谷 P2253 好一个一中腰鼓!
  6. codevs 1606 台阶
  7. An internal error occurred during: "Map/Reduce location status updater". java.lang.NullPointerException
  8. 如何处理Docker错误消息:please add——insecure-registry
  9. UVA - 1252 Twenty Questions (状压dp)
  10. QSting, QChar, char等的转换