Linux 网络接口2012-06-21 10:29:45
分类:LINUX
在 Linux 中,所有的网络通讯都发生在软件接口与物理网络设备之间。与网络接口配置相关的文件,以及控制网络接口状态的脚本文件,全都位于 /etc/sysconfig/netwrok-scripts/ 目录下。虽然在不同的系统之间,这些文件的类型和数量并不一定相同,但大致来讲,都包含以下几类与网络相关的配置文件:
1.网络接口配置文件
2.网络接口控制脚本
3.与网络相关的函数库文件(function files)
各种的网络设备都需要用到这些文件保证设备的正常动作
本章将深入探讨这些文件的用途,以及使用它们的方式。
Linux 网络接口
网络接口配置文件
在 Linux 中,网络接口配置文件用于控制系统中的软件网络接口,并通过接口实现对网络设备的控制。当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如此对这些接口进行配置。
在 Linux 中,网络接口配置文件用于控制系统中的软件网络接口,并通过这些接口实现对网络设备的控制。当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如何对这些接口进行配置。接口配置文件的名称通常类似于 ifcfg-
在所有的网络接口中,我们日常中最常用到的接口类型就是以太网接口。
以太网接口
在所有的网络配置文件中,最常用的就是 ifcfg-eth0,因为它是系统中第一块网卡的配置文件。如果系统中有多块网卡,ifcfg-eth 后面的数字就会依次递增。正因为每个设备都有对应的一个配置文件,因此管理员也能够单独地控制每一个设备。
以下是一个 ifcfg-eth0 配置文件的示例,在配置中已经为网卡设置好了 IP 地址。
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.0.1.0
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no // 是否允许非root用户控制网卡
在接口配置文件中,选项之间存在着一些关联,如果不像上例中那样使用固定 IP,使用 DHCP 获取 IP 地址的配置文件又会不一样。以下就是将网卡配置成通过 DHCP 获取 IP 地址的配置:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
使用网络管理工具(system-config-network) 对网络接口文件进行更改是比较方便的一种方式,但通过学习手动更改配置文件,能够更好的在各种 Linux 发行版中执行网络配置的工作。
有关网络管理工具的使用方法,可以参考下一章翻译文档 - 《Fedora/Linux 网络配置工具》
下面是以太网接口配置文件中常用的一些选项:
BOOTPROTO=
?none- 不指定启用协议
?bootp- 使用 BOOTP 协议
?dhcp- 使用 DHCP 协议
BROADCAST=
表示广播地址。ifcalc 程序会自动计算这个地址,不推荐手动对它进行配置。DEVICE=
DNS{1,2}=
IPADDR=
的值就是分配给网卡的 IP 地址NETMASK=
GATEWAY=
的值为路由器或其它网关设备的 IP 地址NETWORK=
表示网络地址,ifcalc 程序会自动计算这个地址,不推荐手动对它进行配置。ONBOOT=
?yes - 系统启动时激活设备
?no - 系统启动时不激活设备
PEERDNS=
?yes - 使用 DNS 选项的值替代 /etc/resolv.conf 中的配置。如果使用 DHCP,yes 则为这个选项的默认
?no - 不更改 /etc/resolv.conf 中的配置
USERCTL=
?yes - 允许非 root 用户控制这个设备
?no - 不允许非 root 用户控制这个设备
以上是有关以太网配置的常用选项,更多配置选项请参考《Linux 以太网接口配置》
网络配置文件
在开始对 Linux 进行网络配置之前,我们先要认识与网络配置相关的一些主要配置文件。了解这些配置文件如何控制和影响网络,对你自定义 Fedora 系统的网络非常有帮助。
在开始对 Linux 进行网络配置之前,我们先要认识与网络配置相关的一些主要配置文件。了解这些配置文件如何控制和影响网络,对你自定义 Fedora/Linux 系统的网络非常有帮助。
以下是 Linux 中主要的几个网络配置文件,目前你只需要大致了解一下,在之后的教程中会详细讲解各种网络配置:
/etc/hosts
这个文件用于设置主机名与 IP 映射关系,为那些无法通过其它方式 (如通过 DNS 服务器) 解析的主机名进行解析,它还能够在没有DNS 的小型网络中充当主机名解析的角色。不论计算机在什么类型的网络上,hosts 文件中都有关于环回链路(127.0.0.1)的主机记录(localhost.localdomain)。
更多有关 hosts 文件的信息,请参考 hosts 文件的 man 文档。
/etc/resolv.conf
这个文件用于设置 DNS 的 IP 地址和搜索域,除非另行配置,否则网络初始化脚本总是使用这个文档中的配置信息。更多信息请参考resolv.conf 的 man 文档。
/etc/sysconfig/network
这个文件用于为所有网络接口设置路由和主机信息。有关此文件的更多信息,请参考《/etc/sysconfig/network 配置文件》
/etc/sysconfig/network-script/ifcfg-
每一个网络接口,都有一个与之对应用的配置脚本,这些脚本文件为相应的网络接口设置指定的配置信息。有关这类文件的信息以及如何使用这类文件,请参考《网络接口配置文件》
/etc/sysconfig/networking/ 目录中包含着网络管理工具使用的文档,请不要人工更改这些文件。有关网络管理工具的更多信息,可参考《网络配置》
以太网接口配置
本文是对以太网接口配置文件中选项的补充,有关 Linux 网络的基本配置,还请参考《Linux 网络接口配置文件》。
本文是对以太网接口配置文件中选项的补充,有关 Linux 网络的基本配置,还请参考《Linux 网络接口配置文件》。
BONIDNG_OPTS=
这个参数用于 /etc/sysconfig/network-scripts/ifcfg-bond
这项配置被应用之后,多个绑定设备就能够应用不同的配置。如果你在 ifcfg-
BOOTPROTO=
?none- 不指定启用协议
?bootp- 使用 BOOTP 协议
?dhcp- 使用 DHCP 协议
BROADCAST=
表示广播地址。ifcalc 程序会自动计算这个地址,不推荐手动对它进行配置。DEVICE=
DHCP_HOSTNAME
某些 DHCP 服务器要求客户端设置这个主机名才能获取到 IP 地址,一般无需使用这个选项。
DNS{1,2}=
ETHTOOL_OPTS=
GATEWAY=
的值为路由器或其它网关设备的 IP 地址HWADDR=
IPADDR=
的值就是分配给网卡的 IP 地址MASTER=
SLAVE=
?yes - 表示此设备可以由 MASTER 指令中配置的通道绑定接口进行控制。
?no - 表示此设备不能由 MASTER 指令中配置的通道绑定接口进行控制。
NETMASK=
NETWORK=
表示网络地址,ifcalc 程序会自动计算这个地址,不推荐手动对它进行配置。ONBOOT=
?yes - 系统启动时激活设备
?no - 系统启动时不激活设备
PEERDNS=
?yes - 使用 DNS 选项的值替代 /etc/resolv.conf 中的配置。如果使用 DHCP,yes 则为这个选项的默认?no - 不更改 /etc/resolv.conf 中的配置
SRCADDR=
的值为出栈数据包的源 IP 地址USERCTL=
?yes - 允许非 root 用户控制这个设备
?no - 不允许非 root 用户控制这个设备
IPSec 接口配置
在上面的配置文件中,X.X.X.X 要替换为支持 IPsec 的目标路由器的公网 IP 地址。除了以上的选项和指令外,IPSec 接口配置文件中还可以使用以下选择和指令
使用 Fedora/Linux 操作系统,能够轻易的实现 IPSec 接口的配置,以下是一个网络间 IPsec 连接的接口配置文件的示例。它的配置文件名中具备唯一的连接标识符 ipsec
TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X
在上面的配置文件中,X.X.X.X 要替换为支持 IPsec 的目标路由器的公网 IP 地址。除了以上的选项和指令外,IPSec 接口配置文件中还可以使用以下选择和指令:
DST=
表示支持 IPsec 的目标主机或路由器的 IP 地址,分别用于配置主机对主机和网络对网络间的 IPsec。DSTNET=
SRC=
表示使用 IPsec 的源主机或源路由器的 IP 地址,这一选项只能用于主机间的 IPsec 的可选配置。SRCNET=
TYPE=
提示:如果 IPsec 使用人工密钥方式进行加密,可参考 /usr/share/doc/initscripts-
racoon IKEv1 密钥管理守护程序为 IPSec 协商并配置一系列参考,它能够使用预定义密钥、RSA 签名或 GSS-API,如果使用 racoon 程序自动管理密钥加密,则要求配置以下附加选项:
IKE_METHOD=
IKE_PSK=
IKE_CERTFILE=
IKE_PEER_CERTFILE=
IKE_DNSSEC=
yes - racoon 守护程序通过 DNS 取得远程计算机的 X.509 证书文件。
如果设置了IKE_PEER_CERTFILE选项,就不应该再使用这个选项。
更多有关 IPsec 可用的加密算法的信息,可参考 setkey 的 man 文档。更多有关 racoon 程序的信息,可参考 racoon 和racoon.conf 文件的 man 文档。
通道绑定接口配置
Fedora/Linux 操作系统允许管理员通过使用“绑定内核模块”(bonding kernel model),将多个网络接口绑定成一个”通道绑定接口“(channel bonding interface),或称“绑定接口”。
Fedora/Linux 操作系统允许管理员通过使用“绑定内核模块”(bonding kernel model),将多个网络接口绑定成一个”通道绑定接口“(channel bonding interface),或称“绑定接口”。
绑定接口能够让两个或多个网络接口变成一个,从而增加网络带宽,提供网络冗余。
通过在 /etc/sysconfig/network-scripts/ 目录下创建 ifcfg-bond
ifcfg-bond
有关以太网接口配置文件,可参考《Linux 网络接口配置文件》
以下是一个绑定接口的配置文件样本:
DEVICE=bond0
BONDING_OPTS="mode=1 miimon=500"
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.0.1.0
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no
通过配置文件创建一个绑定接口,之后还需要在被绑定的网络接口的配置文件中添加从属关系选项(MASTER 和 SLAVE)。例如,将名为eth0 和 eth1 的两块以太网上进行了绑定,则它们的配置文件内容类似于:
DEVICE=eth
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
绑定接口通过内核模块进行控制,有关 bonding 模块的更多信息,请参考《Channel Bonding 模块》
拨号接口配置
如果你是拨号上网用户,你也需要一个与拨号接口相关的配置文件。PPP 接口配置文件的名称规范为 ifcfg-ppp
如果你是拨号上网用户,你也需要一个与拨号接口相关的配置文件。PPP 接口配置文件的名称规范为 ifcfg-ppp
当使用 wvdial 命令、网络配置管理工具或者 Kppp 创建拨号帐户时,会自动生成 PPP 接口配置文件。
本文及本章节,都是说明如何对各种网络接口配置文档进行人工创建和编辑。有关网络管理工具的使用教程,可参考下一章翻译文档《网络管理工具》
以下是一个典型的 ifcfg-ppp0 配置文件
DEVICE=ppp0
NAME=test
WVDIALSECT=test
MODEMPORT=/dev/modem
LINESPEED=115200
PAPNAME=test
USERCTL=true
ONBOOT=no
PERSIST=no
DEFROUTE=yes
PEERDNS=yes
DEMAND=no
IDLETIMEOUT=600
以下是拨号接口配置文件中各个选项及指令的用法和说明DEFROUTE=
?yes - 将此接口作为默认路由
?no - 不将此接口作为默认路由
DEMAND=
?yes - 启用按需要拨号。即当用户需要网络连接时允许 pppd 程序自动初始化拨号连接
?no - 必须手动建立拨号连接
IDLETIMEOUT=
INITSTRING=
这个选项主要与 SLIP 接口配合使用,用于将初始化值
LINESPEED=
MODEMPORT=
MTU=
NAME=
PAPNAME=
PERSIST=
?yes - 始终保持接口为激活状态,即使调制解调器已经断开。
?no - 当调制解调器断开后,取消接口激活状态。
REMIP=
的值为远程系统的 IP 地址,通常不配置。WVDIALSECT=
别名接口和克隆接口配置文件
别名(Alias) 文件和克隆(clone) 文件是 Linux 中用得比较少的两类网络接口配置文件。其中别名文件可以将多个 IP 地址绑定到一个网络接口上,克隆文件则用于为接口定义附加选项。
别名(Alias) 文件和克隆(clone) 文件是 Linux 中用得比较少的两类网络接口配置文件。其中别名文件可以将多个 IP 地址绑定到一个网络接口上,克隆文件则用于为接口定义附加选项。
别名文件
别名文件的命名结构为ifcfg-
有关以太网接口配置文件(如 ifcfg-eth0),可参考《Linux 网络接口配置文件》
注意:以太网接口 (ifcfg-eth0) 能够配置成 DHCP,但别名接口 (ifcfg-eth0:0) 不能配置成 DHCP。
克隆文件
克隆接口的命名结构为 ifcfg-
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
以上配置没有设置 USERCTL 选项,因此 USERCTL 使用默认值 no,即非 root 用户无法控制接口的启用状态。通过将 ifcfg-eth0 文件复制成 ifcfg-eth0-user,并向克隆文件中添加 USERCTL=yes 指令,普通用户则能够通过 /sbin/if-up eth0-user 命令启用 eth0 接口了。
使用克隆文件时,实际上是整合了接口配置文件 (如 ifcfg-eth0) 和克隆文件 (如 ifcfg-eth0-user) 中的配置。
使用网络管理工具是创建别名文件和克隆文件较为简单,有关这个工具的使用信息,请参考下一章翻译文档《网络配置》
其它网络接口配置
除了之前讲到的以太网接口、IPSec 接口、通道绑定接口、别名接口、克隆接口及拨号接口的配置文件,Linux 还能够配置以下几种不太常用的网络接口。
除了之前讲到的以太网接口、IPSec 接口、通道绑定接口、别名接口、克隆接口及拨号接口的配置文件,Linux 还能够配置以下几种不太常用的网络接口。
ifcfg-lo
本地环回链路接口。环回链路通常用于测试,被不少应用程序所使用。任何发送到环回链路的数据都会马上返回到主机的网络层。
环回链路接口脚本位于 /etc/sysconfig/network-scripts/ifcfg-lo,在任何情况下,都不要手动编辑这个文件,极可能导致系统不正常。
ifcfg-irlan0
红外线接口,它与以太网设备的配置方式差不多,但它通常用于红外线设备间的点对点连接。
ifcfg-plip0
PLIP (平行链路接口协议) 与以太网设备连接的工作方式大致相同,不同之处在于它采用平行化端口。
ifcfg-tr0
令牌环网络拓扑与以太网络很不相同,以太网的流行使得令牌环网络很少被用到。
网络接口控制脚本
在 Linux 中,接口控制脚本用于激活和取消激活系统接口, /sbin/ifdown 和 /sbin/ifup 是两个最主要的接口控制脚本,它们通过调用 /etc/sysconfig/network-scripts/ 目录中的配置文件起作用。
在 Linux 中,接口控制脚本用于激活和取消激活系统接口,/sbin/ifdown和/sbin/ifup是两个最主要的接口控制脚本,它们通过调用/etc/sysconfig/network-scripts/目录中的配置文件起作用。
ifup 和 ifdown 接口脚本是指向 /sbin/ 目录的链接符号,在使用这两个脚本时,需要指定接口的名称,如
~]# ifup eth0
普通用户也能够使用 ifup 和 ifdown 命令,但能够控制指定的接口还与接口的配置有关。
网络接口被启动时需要完成许多网络初始化的工作,其中大部分工作都由 /etc/rc.d/init.d/functions和
/etc/sysconfig/network-scripts/network-functions这两个文件实现,详情可参考《Linux 网络相关函数文件》。当验证某个接口已经被配置完成,并且用户拥有控制接口的权限之后,相应的脚本则会启用或关闭这个接口。以下是位于/etc/sysconfig/network-scripts/ 目录中常用的接口控制脚本:
ifup-aliases
当有别名接口配置文件时,为指定接口配置多个 IP 地。
ifup-ippp 和 ifdown-ippp
启用和关闭 ISDN 接口。
ifup-ipsec 和 ifdown-ipsec
启用和关闭 IPsec 接。
ifup-ipv6 和 ipdown-ipv6
启用和关闭 IPv6 接口。
ifup-plip
启用 PLIP 接口。
ifup-plusb
为网络连接启用 USB 接口。
ifup-post 和 ifdown-post
包含接口被启用或被关闭后要执行的命令
ifup-ppp 和 ifdown-ppp
启用和关闭 PPP 接口。
ifup-routes
当接口被启用时,为设备添加静态路由。
ifup-sit 和 ifdown-sit
包含在 IPv4 连接中启用和关闭 IPv6 通道所要被调用的函数。
ifup-sl 和 ifdown-sl
启用和关闭 SLIP 接口。
ifup-wireless
启用无线接口。
删除或更改/etc/sysconfig/network-scripts/目录下的任何脚本,都可能导致接口连接出错或失败。因此,所以只在你对这些内容非常熟悉的情况下,才对它们进行更改。
同时操作所有网络脚本的最简单方法,就是使用 /sbin/service 命令对网络服务(/etc/rc.d/init.d/network)进行操作,如
~]# /sbin/service network
使用以下命令,则可以查看已配置的设备及当前激活的网络接口的状态
~]# /sbin/service network status
配置静态路由
路由功能可以在路由设备上得以实现,因此在 Fedora/Linux 服务器或客户端上配置静态路由并不是十分必要。但如果有要求为每个接口配置静态路由,也是能够实现的。
路由功能可以在路由设备上得以实现,因此在 Fedora/Linux 服务器或客户端上配置静态路由并不是十分必要。但如果有要求为每个接口配置静态路由,也是能够实现的,尤其当机器上的多个接口分别位于不同的网段时,这一功能是相当有用。并且通过route命令能够显示当前的 IP 路由表。
静态路由配置存储在 /etc/sysconfig/network-scripts/route-
route-
IP 命令行参数格式的静态路由配置
这种格式的静态路由配置首先定义接口的默认网关,然后配置文件中的每一行都被单独解析成一条路由条目。以下是一个配置样本default x.x.x.x dev
x.x.x.x/x via x.x.x.x dev
在第一行中,x.x.x.x 表示默认网关的 IP 地址,
注意:如果网卡被配置成通过 DHCP,并可以通过 DHCP 设置其默认网关,则不需要定义默认网关,即不要定义 default x.x.x.x dev