Linux网卡攻略-阿里云开发者社区

开发者社区> 开发与运维> 正文

Linux网卡攻略

简介: Linux系统下的网卡不像Windows那么支持完善,有时需要自己动手,本文总结了相关的驱动安装、命令行工具和测试网卡的负载等内容。 网卡驱动 http://downloadcenter.intel.com/ 安装包中README有详细说明,主要就是如下几个命令 Make install modprobe e1000e 或者 insmod e1000 rmmod e1000e; modprobe e1000e 网卡配置文件 对于网卡信息的配置通常包括:配置IP地址、子网掩码和网关。

Linux系统下的网卡不像Windows那么支持完善,有时需要自己动手,本文总结了相关的驱动安装、命令行工具和测试网卡的负载等内容。

网卡驱动

http://downloadcenter.intel.com/

clip_image002

安装包中README有详细说明,主要就是如下几个命令

Make install

modprobe e1000e 或者 insmod e1000

rmmod e1000e; modprobe e1000e

网卡配置文件

对于网卡信息的配置通常包括:配置IP地址、子网掩码和网关。网卡信息保存在网卡配置文件中。网卡配置文件位于/etc/sysconfig/network-scripts目录下。一块网卡对应一个网卡配置文件,配置文件命名规则:

ifcfg-网卡类型以及网卡的序列号

由于以太网卡类型是eth,网卡的序列号从0开始,所以第一块网卡的配置文件名称为ifcfg-eth0,第二块网卡为ifcfg-eth1,以此类推。

网卡配置文件中常用配置文件名的还以如下:

DEVICE=eth0,定义该网卡的识别名称

BOOTPROTO=dhcp,启动该网卡的识别名称。

static/none:代表固定的IP地址;bootp/dhcp:通过BOOTP或DHCP协议取得IP地址。

HWADDR=00:02:B3:0B:64:22,该网卡的MAC地址。

ONBOOT=yes,启动network服务时,是否启用该网卡。当RedHat系统启动network服务时,network服务一次读取保存于/etc/sysconfig/network-scripts/目录下所有网卡的配置文件。如果网卡配置文件的ONBOOT设置为yes,则network服务就会调用ifup命令启动该网卡;如果网卡的配置文件的ONBOOT参数为no,network会跳过启动这个网卡的工作。

TYPE=Ethernet,网卡的类型。

USERCTL=no,是否允许普通用户启动或者停止该网卡。

IPV6INIT=no,是否在该网卡上启动IPV6的功能。

PEERDNS=yes,是否允许网卡在启动时向DHCP服务器查询DNS信息,并自动覆盖/etc/resolv.conf配置文件。

以下配置项用于指定该网卡的静态IP地址,此时BOOTPROTO必须为static或者none。

IPADDR=192.168.1.55,静态方式指定网卡的IP地址。

NETMASK=255.255.255.0,定义该网卡的子网掩码。

MTU=1500,设置网卡的MAC帧最大传输单位大小。

GATEWAY=192.168.1.1,设置网络的默认网关。

DNS1=192.168.128.5,指定主要的DNS服务器地址。

DNS2=192.168.128.6,指定备用的DNS服务器地址。

配置网卡信息

配置网卡信息可以直接修改网卡配置文件中的相关内容,但是这种方法对用户的要求比较高。在RedHat Enterprise Linux5中常用于设置IP地址的三个命令,分别是:system-config-network、setup和ifconfig。其中ifconfig设置IP地址的方法将在常用命令部分中介绍。

1system-config-network命令

在命令提示行下输入system-config-network命令将会启动可视化网络配置界面(对于新手这个方式比较简单)

2setup设置网卡信息

在命令行下输入setup命令后将会进入系统设置界面,然后选择网卡设置进入网卡设置界面(很多系统都可以使用setup命令设置,运用比较广)

3ifconfig网卡常用命令

ifconfig命令的功能比较强大,可以用来查看和设置网卡信息。

a.查看网卡信息

命令语法:ifconfig [参数]

参数说明:

无参数:显示当前活动的网卡

- a:显示系统中所有网卡的配置信息

网卡设备名称:显示指定网卡的配置信息

eg:查看eth0网卡信息:#ifconfig eth0

b.设置IP地址

命令语法:ifconfig 网卡设备名 IP地址 netmask 子网掩码

(注:ifconfig命令设置的IP地址即时生效,但是重启机器后,IP地址又回复到原IP地址,所以ifconfig命令只能用于设置临时的IP地址)

eg:ifconfig eth0 192.168.168.156 netmask 255.255.255.0

c.修改MAC地址

命令语法:ifconfig 网卡设备名 hw ether MAC地址

(注:修改网卡的MAC地址前要禁用网卡,修改后要启用网卡)

eg:ifconfig eth0 hw ether 00:0C:29:03:F3:76

几个常用的命令

1.ifdown禁用网卡

语法:ifdown 网卡设备名

2.ifup启用网卡

语法:ifup 网卡设备名

3.绑定IPMAC地址

实现方法:创建/etc/ethers文件,文件内容“ip地址 mac地址”,然后执行“arp -f”命令,是配置生效。

eg:将IP地址193.168.168.154与MAC地址00:0C:29:03:F3:75绑定。

#echo "193.168.168.154 00:0C:29:03:F3:75">>/etc/ethers

#arp -f

ethtool---查看网卡以及修改网卡配置工具

ethtool 是用于查询及设置网卡参数的命令。

使用概要:
ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等
ethtool –h //显示ethtool的命令帮助(help)
ethtool –i ethX //查询ethX网口的相关信息
ethtool –d ethX //查询ethX网口注册性信息
ethtool –r ethX //重置ethX网口到自适应模式
ethtool –S ethX //查询ethX网口收发包统计
ethtool –s ethX [speed 10|100|1000] [duplex half|full] [autoneg on|off] //设置网口速率10/100/1000M、设置网口半/全双工、设置网口是否自协商

[root@linux /]# ethtool eth1 //查看网卡1信息

[root@linux /]# ethtool -i eth1 //查看网卡型号等
[root@linux /]# ethtool -S eth1 //查看数据率等

[root@linux /]# ethtool -s eth1 autoneg off speed 100 duplex full//强制修改网卡速率,配置成百兆网卡,autoneg off是一定要用,如果是on的话就是自适应配置,自动根据机器等进行配置。

[root@linux /]# which ethtool //查询 ethtool 存放的路径
/sbin/ethtool
[root@linux /]# rpm -qf /sbin/ethtool //查询 ethtool 的版本信息
ethtool-1.6-5
将 ethtool 设置永久保存在网络设备的方法
解决方法一:
ethtool 设置可通过 /etc/sysconfig/network-scripts/ifcfg-ethX 文件保存,从而在设备下次启动时激活选项。
例如:ethtool -s eth0 speed 100 duplex full autoneg off
此指令将eth0设备设置为全双工自适应,速度为100Mbs。若要eth0启动时设置这些参数, 修改文件/etc/sysconfig/network-scripts/ifcfg-eth0 ,添加如下一行:
ETHTOOL_OPTS="speed 100 duplex full autoneg off"
解决方法二:
将ethtool设置写入/etc/rc.d/rc.local之中。

mii-tool 的用法

mii-tool 在更改网络设备通信协商方式的方法比较简单,用 -v 参数来查看网络接口的状态;看下面的例子;

mii-tool 更改网络接口协商的方法;

[ ~]# mii-tool --help
usage: mii-tool [-VvRrwl] [-A media,... | -F media] [interface ...]
-V, --version display version information
-v, --verbose more verbose output 注:显示网络接口的信息;
-R, --reset reset MII to poweron state 注:重设MII到开启状态;
-r, --restart restart autonegotiation 注:重启自动协商模式;
-w, --watch monitor for link status changes 注:查看网络接口连接的状态变化;
-l, --log with -w, write events to syslog 注:写入事件到系统日志;
-A, --advertise=media,... advertise only specified media 注:指令特定的网络接口;
-F, --force=media force specified media technology 注:更改网络接口协商方式;
media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
(to advertise both HD and FD) 100baseTx, 10baseT

更改网络接口的协商方式,我们要用到-F选项,后面可以接 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD等参数;

如果我们想把网络接口eth0改为 1000Mb/s全双工的模式应该怎么办呢?

[root@localhost ~]# mii-tool -F 100baseTx-FD

[root@localhost ~]#mii-tool -v eth0

Ip

ip与ethtool的功能与传统的ifconfig类似,而且功能更强。
ip下载:apt-get install iproute

# ip addr
1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:e0:22:02:25:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0
inet6 fe80::2e0:22ff:fe02:2546/64 scope link
valid_lft forever preferred_lft forever
# ip link
1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:e0:22:02:25:46 brd ff:ff:ff:ff:ff:ff
# ip -s link ls dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:e0:22:02:25:46 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
287018517 364010 0 0 0 0
TX: bytes packets errors dropped carrier collsns
272957602 395576 0 0 0 0

网卡的负载测试工具

如果需要对网卡进行详细的负载等指标检测,可以使用如下的工具

Tcpdump

http://www.tcpdump.org/tcpdump_man.html

 

Tcprelay

http://tcpreplay.synfin.net/

http://tcpreplay.synfin.net/wiki/manual

Tcpreplay 是 UNIX 系统下用来编辑和重放网络流量包的工具集合,这些流量包可以是通过 tcpdump 或 ethereal 等工具抓取的。 tcpreplay 提供了可靠的、可重复的方法来测试不同的网络设备,包括:交换机、路由器、防火墙、入侵检测系统 (IDS) 和入侵防御系统 (IPS) 。

tcpreplay:常用的发包软件,可以重发tcpdump所捕获的报文。
pktgen:linux内核自带的发包工具。

http://blog.sina.com.cn/s/blog_63ac8a6c0100u17d.html

 

 

本资料详细地址可从

https://skydrive.live.com/embed?cid=56B433AD3D1871E3&resid=56B433AD3D1871E3%21611&authkey=AJbvG12sXg6gScQ&em=2

下载

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章