使用硬件是操作系统的基本功能,linux操作系统对硬件的操控是通过驱动程序实现的。linux内核采用可加载的模块化设计,平时只能
将最基本的核心代码模块编译进内核,同时允许动态的将硬件信息通过驱动程序加载进内核,因此,网卡驱动程序可以动态的从内核加载
和卸载。
1.modprobe 加载指定的模块到内核,或者载入一组相互依赖的模块。
-r 卸载指定的模块
-l 显示所有可用模块
-n 仅显示要执行的操作 而不实际执行
-a 加载一组匹配的模块
2.depmod 分析载入模块的相关性,以供modprobe载入模块到内核时使用
-a 分析所有可用模块
-v 执行时显示详细信息
编译安装网卡
1.rpm/source rpm 驱动安装方式
从IBM官网下载对应服务器型号的网卡驱动程序,可以利用u盘等工具传到linux服务器上,接着进行编译
rpm -ivh bnx2-<version>.src.rpm
因为是root用户编译的,所以进入 /root/rpmbulid 路径进行编译
cd /root/rpmbuild
rpmbuild -bb SPECS/bnx2.spec rpm文件默认会安装在 /root/rpmbuild/RPMS 目录下
2.安装编译好的驱动包
cd /root/rpmbuild/RPMS/x86-64
rpm -vih bnx2-<version>.src.rpm
安装完毕 驱动会被安装到如下路径
/lib/modules/<kernel-version>/kernel/drivers/net/bnx2.ko
此时复制生成的模块文件到 /lib/modules/<kernel-version>/kernel/drivers/net/bnx2.ko 目录即可
3.加载驱动程序
insmod \
> /lib/modules/<kernel-version>/kernel/drivers/net/bnx2.ko
也饿可以用到以下命令 modprobe bnx2
4.查看驱动模块是否加载
lsmod |grep bnx2
如果命令输出包含bnx2模块,表明网卡驱动编译成功
5.激活网卡 查看网卡状态
ifconfig eth0 up(网卡设备名,这里以eth0为例)
ifconfig -a
(在编译模块时,因为驱动程序需要配合内核来进行编译,所以会用到 kernel source 或者kernel header等程序包 此外也需要编译器
compiler的帮助,因此用此方式进行安装前,要确保自己的Linux系统中包含 kernel-source kernel kernel-devel kernel-headers
gcc make)
源代码驱动包安装方式
1. 从官网上下载源代码包,传到linux系统上,创建一个目录,把源代码包解压到此目录下。一般情况下,在下载的源码文件中都有
readme文件,此文件介绍了安装的方式。这里下载的源代码包为 r8168-8.aaa.bb.tar.bz2
mkdir /temp
cd /temp
tar jxvf r8168-8.aaa.bb.tar.bz2
2.编译安装源码
接着上面的操作,切换到解压的目录,执行如下操作
cd r8168-8.aaa.bb
编译并在当前src目录下生成模块文件r8168.ko 执行如下操作
make clean modules
安装模块文件到 /lib/modules/<kernel_version>/kernel/drivers/net 目录 由于下载的驱动包名不相同,标准的驱动程序包会在
执行 “make install”时将模块文件直接安装到对应的驱动目录下,有些驱动包则不行。因此,如果某些安装程序没有将模块文件
安装到对应的驱动目录下,就要手动复制模块文件到此目录下。
make install
检查模块之间的依赖关系
depmod -a
加载 r8168模块
insmod ./src/r8168.ko
检查r8168模块是否加载
lsmod |grep r8168
如果看到r8168模块已经加载,证明编译成功
激活网卡设备,查看网卡的状态。
配置linux网络
网络的配置文件一般在/etc 目录下,但是在不同发行版的linux 网络配置文件路径略有不同。
Centos Linux 下网络的配置路径为:
/etc/sysconfig/network-scripts/ifcfg-lo #网卡环回地址
/etc/sysconfig/network #主机名和网关配置文件
/etc/resolv.conf #dns配置文件
/etc/hosts # 设置主机和ip绑定信息
Ubuntu Linux下网络配置文件路径为
/etc/network/interfaces #ip地址、子网掩码等配置文件
/etc/resolv.conf # DNS配置文件
/etc/hostname #全局主机名配置文件
/etc/hosts #设置主机和ip的绑定信息
网络配置文件详解
(1)CentOS 6.5版本中网络配置文件
网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 内容如下
DEVICE=eth0 表示网卡的设备名称
ONBOOT=yes 配置在开机的时候自动启动网卡eth0
BOOTPROTO=static 指出eth0接口具有一个静态(static)ip配置,如果网络环境为动态获取IP地址,改为 dncp
BROADCAST= 广播地址
IPADDR= 静态IP地址
NETMASK= 子网掩码
NETWORK= 网络号
GATEWAY= 网关
HWADDR=00:1E:0E:CF:1A:E4 显示eth0接口的MAC地址
TYPE=Ethernet 指定网卡的类型为以太网
配置完成后使用 service network restart 命令使网络设置生效
本地回环配置文件 /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo 指出网络设备名
IPADDR= lo接口的IP地址
NETMASK= 子网掩码
NETWORK= 网络号
BROADCAST= lo接口的广播地址
ONBOOT=yes 开机启动lo接口
NAME=loopback 将lo接口设备设置为本地回环(loopback)地址
主机名和网关配置文件 /etc/sysconfig/network
NETWORKING=yes 表示配置网络是否正常运行
NETWORKING_IPV6=no 表示IPv6网络是否正常
HOSTNAME=WEBServer 表示Linux的主机名
GATEWAY= 指出网关地址
DNS配置文件/etc/resolv.conf
nameserver 221.11.1.67
这里设置两个DNS 服务器地址 nameserver 表示域名服务器,后面的IP地址就是dns服务器。
当用户在Linux下访问互联网某个域名时,就是靠指定的这些dns服务器进行解析的
设置主机和IP绑定配置文件 /etc/hosts
主机和IP绑定,也叫本地解析。类似于Windows下的hosts文件,如果设置了主机和IP绑定,那么当访问绑定主机时,系统就会从hosts
中查找对应的IP地址,而不从 /etc/resolv.conf 中寻找dns服务器进行IP解析
下面是/etc/hosts 中的内容
127.0.0.1 localhost.localdomain localhost.
192.168.60.133 www.ixdba.net
hosts文件中每行内容为一个主机 每行由三部分组成 也可以是两部分,即IP地址和主机名。
第一部分表示网络IP地址
第二部分表示主机名.域名 注意主机名和域名之间有一个半角的句点 比如 localhost.localdomain
第三部分表示主机名(主机名别名)
将192.168.60.133 和 www.ixdba.net 绑定。 这样当访问www.ixdba.net 主机时,系统将会解析到192.168.60.133 机器进行访问
CentOS 版本中网络配置文件
TYPE=Ethernet
BOOTPROTO=static 启用静态IP地址
DNS=223.5.5.5
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPv6INIT=no
NAME=eth0 与网卡配置文件名对应的一个标签,无实际意义
UUID= 网卡唯一设备标识,系统自动生成
DEVICE=enp0s3 网卡设备名
ONBOOT=yes
IPADDR0= 标识IP地址 CentOS 7.0 版本后的新功能 可以一个网卡配置文件中配置多个IP地址
PREFIX0=24 设置子网掩码
GATEWAY= 设置网关地址
CentOS 7.0之后的版本 所有网络和管理都统一由NetworkManager服务来维护。相对于/etc/init.d/network脚本管理方式,NetworkManager
是动态的、事件驱动的网络管理服务。NetworkManager导致常用的一些网络命令发生了一些变化,与NetworkManager服务相对应的
管理工具是nmtui。nmtui命令比较复杂,对于新手有一定的难度,建议初学者通过修改配置文件方法来配置网络,等到对系统整体有了
完整的认识后,在学习nmtui
2)主机名配置文件/etc/sysconfig/network
7.x版本中 主机名存放在一个专门的配置文件中,要修改系统的主机名,只需要将主机名添加到此文件中即可
3)网关配置文件 /etc/sysconfig/network
这个配置文件中,可以配置系统默认的网关
GATEWAY=192.168.66.254
这个配置方法,当网卡配置文件已经配置了网关地址时,此文件中的网关配置自动失效。相反,如果没有在网卡配置文件中设置网关
地址时,系统会默认从这个文件中读取网关配置。
Linux的网络应用
Linux下可以在一个网络设备接口虚拟出多个接口。比如 eth0:0 接口其实就是设备eth0虚拟出来的设备,这样一个网卡设备就拥有了
多个IP地址。一块网卡具有多个IP地址的功能成为IP别名,也就是一块网卡可以绑定多个IP地址。
1.CentOS 6.x以及之前的版本中网卡绑定多个IP地址
Linux的网络设备配置文件存放在 /etc/sysconfig/network-scripts 目录中。
对于以太网的第一个网络设备,配置文件名一般为 ifcfg-eth0 如果需要为第一个网络设备再绑定一个IP地址,只需要在目录下创建
一个名为ifcfg-eth0:0的文件,然后配置相应的IP信息即可。
DEVICE="eth0:0"
BOOTPROTO=static
IPADDR="192.168.66.168"
NETMASK="255.255.255.0"
ONBOOT="yes"
NETWORK=192.168.60.0
BROADCAST=192.168.60.255
CentOS Linux 下可以支持255个IP别名
其实可以通过ifconfig命令来虚拟一个网络接口,并且可以立即进行连接。但是当重启网卡或者系统后,该虚拟网络接口就会被取消。
设置永久生效的办法就是通过增加配置文件。
ifconfig [device] [IP] netmask [netmask IP] [up|down]
ifconfig eth0:1 192.168.66.131 netmask 255.255.255.0 up
开启Linux 代理转发功能
1.修改/proc 下内核参数文件内容
直接修改内核参数ip_forward 在/proc 下对应文件 /proc/sys/net/ipv4/ip_forward 用下面的命令查看ip_forward文件内容
cat /proc/sys/net/ipv4/ip_forward
该文件中的默认值0表示禁止IP转发,修改为1即开启转发功能。修改后马上生效,即内核已经打开IP转发功能。如果系统重启后
又恢复默认值0 要永久打开IP转发功能,就需要修改 etc/sysctl.conf 文件内容来实现
2.修改 /etcsysctl.conf 文件
默认sysctl.conf文件中有一个变量是
net.ipv4.ip_forward=0
将后面的值改为1,然后保存文件。如果想要立即生效 需要执行命令 systl -p
路由的分类
路由分为静态路由和动态路由。
Linux上配置的路由都属于静态路由,静态路由的产生是由于系统管理员使用route命令所加入的静态路由规则,也就是由手动输入的
方式来加入的路由规则。
动态路由就是无需手动输入路由规则,其路由规则是本机与不同机器彼此经过路由程序相互交换路由规则而来的。如果网络发生了变化
, 路由如那件就会重新计算路由并发出新的路由更新信息。这些信息更新到网络,使路由器重新计算并对路由表做出相应的改变。
route [-n|ee]
route add[-net|-host] [网络或主机] netmask [mask] [gw|dev]
-n 不使用通信协议或主机名称,直接使用ip地址
-ee 显示更详细的路由信息
add 表示添加路由信息
-net 表示添加一个网络,也就是后面接的是一个网络地址
-host 表示后面接的为链接到单独主机的路由
netmask 表示后面接的是子网掩码的信息,子网掩码可以限制网络的大小
gw 网关IP信息
dev 指定由那个网络设备联机出去,后面接网络设备名
gateway:连出网关地址,表示该网络是通过这个IP链接出去的,如果显示 0:0:0:0 则表示改路由直接由本机传出去。
如果有IP显示,表示本条路由必须经过这个IP的转接才能连出去
使用route 添加路由时,设定的路由必须与自己系统的网络接口(eth0)或者IP可以直接互通,才能添加成功
将最基本的核心代码模块编译进内核,同时允许动态的将硬件信息通过驱动程序加载进内核,因此,网卡驱动程序可以动态的从内核加载
和卸载。
1.modprobe 加载指定的模块到内核,或者载入一组相互依赖的模块。
-r 卸载指定的模块
-l 显示所有可用模块
-n 仅显示要执行的操作 而不实际执行
-a 加载一组匹配的模块
2.depmod 分析载入模块的相关性,以供modprobe载入模块到内核时使用
-a 分析所有可用模块
-v 执行时显示详细信息
编译安装网卡
1.rpm/source rpm 驱动安装方式
从IBM官网下载对应服务器型号的网卡驱动程序,可以利用u盘等工具传到linux服务器上,接着进行编译
rpm -ivh bnx2-<version>.src.rpm
因为是root用户编译的,所以进入 /root/rpmbulid 路径进行编译
cd /root/rpmbuild
rpmbuild -bb SPECS/bnx2.spec rpm文件默认会安装在 /root/rpmbuild/RPMS 目录下
2.安装编译好的驱动包
cd /root/rpmbuild/RPMS/x86-64
rpm -vih bnx2-<version>.src.rpm
安装完毕 驱动会被安装到如下路径
/lib/modules/<kernel-version>/kernel/drivers/net/bnx2.ko
此时复制生成的模块文件到 /lib/modules/<kernel-version>/kernel/drivers/net/bnx2.ko 目录即可
3.加载驱动程序
insmod \
> /lib/modules/<kernel-version>/kernel/drivers/net/bnx2.ko
也饿可以用到以下命令 modprobe bnx2
4.查看驱动模块是否加载
lsmod |grep bnx2
如果命令输出包含bnx2模块,表明网卡驱动编译成功
5.激活网卡 查看网卡状态
ifconfig eth0 up(网卡设备名,这里以eth0为例)
ifconfig -a
(在编译模块时,因为驱动程序需要配合内核来进行编译,所以会用到 kernel source 或者kernel header等程序包 此外也需要编译器
compiler的帮助,因此用此方式进行安装前,要确保自己的Linux系统中包含 kernel-source kernel kernel-devel kernel-headers
gcc make)
源代码驱动包安装方式
1. 从官网上下载源代码包,传到linux系统上,创建一个目录,把源代码包解压到此目录下。一般情况下,在下载的源码文件中都有
readme文件,此文件介绍了安装的方式。这里下载的源代码包为 r8168-8.aaa.bb.tar.bz2
mkdir /temp
cd /temp
tar jxvf r8168-8.aaa.bb.tar.bz2
2.编译安装源码
接着上面的操作,切换到解压的目录,执行如下操作
cd r8168-8.aaa.bb
编译并在当前src目录下生成模块文件r8168.ko 执行如下操作
make clean modules
安装模块文件到 /lib/modules/<kernel_version>/kernel/drivers/net 目录 由于下载的驱动包名不相同,标准的驱动程序包会在
执行 “make install”时将模块文件直接安装到对应的驱动目录下,有些驱动包则不行。因此,如果某些安装程序没有将模块文件
安装到对应的驱动目录下,就要手动复制模块文件到此目录下。
make install
检查模块之间的依赖关系
depmod -a
加载 r8168模块
insmod ./src/r8168.ko
检查r8168模块是否加载
lsmod |grep r8168
如果看到r8168模块已经加载,证明编译成功
激活网卡设备,查看网卡的状态。
配置linux网络
网络的配置文件一般在/etc 目录下,但是在不同发行版的linux 网络配置文件路径略有不同。
Centos Linux 下网络的配置路径为:
/etc/sysconfig/network-scripts/ifcfg-lo #网卡环回地址
/etc/sysconfig/network #主机名和网关配置文件
/etc/resolv.conf #dns配置文件
/etc/hosts # 设置主机和ip绑定信息
Ubuntu Linux下网络配置文件路径为
/etc/network/interfaces #ip地址、子网掩码等配置文件
/etc/resolv.conf # DNS配置文件
/etc/hostname #全局主机名配置文件
/etc/hosts #设置主机和ip的绑定信息
网络配置文件详解
(1)CentOS 6.5版本中网络配置文件
网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 内容如下
DEVICE=eth0 表示网卡的设备名称
ONBOOT=yes 配置在开机的时候自动启动网卡eth0
BOOTPROTO=static 指出eth0接口具有一个静态(static)ip配置,如果网络环境为动态获取IP地址,改为 dncp
BROADCAST= 广播地址
IPADDR= 静态IP地址
NETMASK= 子网掩码
NETWORK= 网络号
GATEWAY= 网关
HWADDR=00:1E:0E:CF:1A:E4 显示eth0接口的MAC地址
TYPE=Ethernet 指定网卡的类型为以太网
配置完成后使用 service network restart 命令使网络设置生效
本地回环配置文件 /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo 指出网络设备名
IPADDR= lo接口的IP地址
NETMASK= 子网掩码
NETWORK= 网络号
BROADCAST= lo接口的广播地址
ONBOOT=yes 开机启动lo接口
NAME=loopback 将lo接口设备设置为本地回环(loopback)地址
主机名和网关配置文件 /etc/sysconfig/network
NETWORKING=yes 表示配置网络是否正常运行
NETWORKING_IPV6=no 表示IPv6网络是否正常
HOSTNAME=WEBServer 表示Linux的主机名
GATEWAY= 指出网关地址
DNS配置文件/etc/resolv.conf
nameserver 221.11.1.67
这里设置两个DNS 服务器地址 nameserver 表示域名服务器,后面的IP地址就是dns服务器。
当用户在Linux下访问互联网某个域名时,就是靠指定的这些dns服务器进行解析的
设置主机和IP绑定配置文件 /etc/hosts
主机和IP绑定,也叫本地解析。类似于Windows下的hosts文件,如果设置了主机和IP绑定,那么当访问绑定主机时,系统就会从hosts
中查找对应的IP地址,而不从 /etc/resolv.conf 中寻找dns服务器进行IP解析
下面是/etc/hosts 中的内容
127.0.0.1 localhost.localdomain localhost.
192.168.60.133 www.ixdba.net
hosts文件中每行内容为一个主机 每行由三部分组成 也可以是两部分,即IP地址和主机名。
第一部分表示网络IP地址
第二部分表示主机名.域名 注意主机名和域名之间有一个半角的句点 比如 localhost.localdomain
第三部分表示主机名(主机名别名)
将192.168.60.133 和 www.ixdba.net 绑定。 这样当访问www.ixdba.net 主机时,系统将会解析到192.168.60.133 机器进行访问
CentOS 版本中网络配置文件
TYPE=Ethernet
BOOTPROTO=static 启用静态IP地址
DNS=223.5.5.5
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPv6INIT=no
NAME=eth0 与网卡配置文件名对应的一个标签,无实际意义
UUID= 网卡唯一设备标识,系统自动生成
DEVICE=enp0s3 网卡设备名
ONBOOT=yes
IPADDR0= 标识IP地址 CentOS 7.0 版本后的新功能 可以一个网卡配置文件中配置多个IP地址
PREFIX0=24 设置子网掩码
GATEWAY= 设置网关地址
CentOS 7.0之后的版本 所有网络和管理都统一由NetworkManager服务来维护。相对于/etc/init.d/network脚本管理方式,NetworkManager
是动态的、事件驱动的网络管理服务。NetworkManager导致常用的一些网络命令发生了一些变化,与NetworkManager服务相对应的
管理工具是nmtui。nmtui命令比较复杂,对于新手有一定的难度,建议初学者通过修改配置文件方法来配置网络,等到对系统整体有了
完整的认识后,在学习nmtui
2)主机名配置文件/etc/sysconfig/network
7.x版本中 主机名存放在一个专门的配置文件中,要修改系统的主机名,只需要将主机名添加到此文件中即可
3)网关配置文件 /etc/sysconfig/network
这个配置文件中,可以配置系统默认的网关
GATEWAY=192.168.66.254
这个配置方法,当网卡配置文件已经配置了网关地址时,此文件中的网关配置自动失效。相反,如果没有在网卡配置文件中设置网关
地址时,系统会默认从这个文件中读取网关配置。
Linux的网络应用
Linux下可以在一个网络设备接口虚拟出多个接口。比如 eth0:0 接口其实就是设备eth0虚拟出来的设备,这样一个网卡设备就拥有了
多个IP地址。一块网卡具有多个IP地址的功能成为IP别名,也就是一块网卡可以绑定多个IP地址。
1.CentOS 6.x以及之前的版本中网卡绑定多个IP地址
Linux的网络设备配置文件存放在 /etc/sysconfig/network-scripts 目录中。
对于以太网的第一个网络设备,配置文件名一般为 ifcfg-eth0 如果需要为第一个网络设备再绑定一个IP地址,只需要在目录下创建
一个名为ifcfg-eth0:0的文件,然后配置相应的IP信息即可。
DEVICE="eth0:0"
BOOTPROTO=static
IPADDR="192.168.66.168"
NETMASK="255.255.255.0"
ONBOOT="yes"
NETWORK=192.168.60.0
BROADCAST=192.168.60.255
CentOS Linux 下可以支持255个IP别名
其实可以通过ifconfig命令来虚拟一个网络接口,并且可以立即进行连接。但是当重启网卡或者系统后,该虚拟网络接口就会被取消。
设置永久生效的办法就是通过增加配置文件。
ifconfig [device] [IP] netmask [netmask IP] [up|down]
ifconfig eth0:1 192.168.66.131 netmask 255.255.255.0 up
开启Linux 代理转发功能
1.修改/proc 下内核参数文件内容
直接修改内核参数ip_forward 在/proc 下对应文件 /proc/sys/net/ipv4/ip_forward 用下面的命令查看ip_forward文件内容
cat /proc/sys/net/ipv4/ip_forward
该文件中的默认值0表示禁止IP转发,修改为1即开启转发功能。修改后马上生效,即内核已经打开IP转发功能。如果系统重启后
又恢复默认值0 要永久打开IP转发功能,就需要修改 etc/sysctl.conf 文件内容来实现
2.修改 /etcsysctl.conf 文件
默认sysctl.conf文件中有一个变量是
net.ipv4.ip_forward=0
将后面的值改为1,然后保存文件。如果想要立即生效 需要执行命令 systl -p
路由的分类
路由分为静态路由和动态路由。
Linux上配置的路由都属于静态路由,静态路由的产生是由于系统管理员使用route命令所加入的静态路由规则,也就是由手动输入的
方式来加入的路由规则。
动态路由就是无需手动输入路由规则,其路由规则是本机与不同机器彼此经过路由程序相互交换路由规则而来的。如果网络发生了变化
, 路由如那件就会重新计算路由并发出新的路由更新信息。这些信息更新到网络,使路由器重新计算并对路由表做出相应的改变。
route [-n|ee]
route add[-net|-host] [网络或主机] netmask [mask] [gw|dev]
-n 不使用通信协议或主机名称,直接使用ip地址
-ee 显示更详细的路由信息
add 表示添加路由信息
-net 表示添加一个网络,也就是后面接的是一个网络地址
-host 表示后面接的为链接到单独主机的路由
netmask 表示后面接的是子网掩码的信息,子网掩码可以限制网络的大小
gw 网关IP信息
dev 指定由那个网络设备联机出去,后面接网络设备名
gateway:连出网关地址,表示该网络是通过这个IP链接出去的,如果显示 0:0:0:0 则表示改路由直接由本机传出去。
如果有IP显示,表示本条路由必须经过这个IP的转接才能连出去
使用route 添加路由时,设定的路由必须与自己系统的网络接口(eth0)或者IP可以直接互通,才能添加成功