ifconfig 命令详解(转载)

无论是Linux 自动安装还是我们手工安装,Linux 都会向你询问有关网络的问题并配置相关的软件。这个用于配置网卡的基本命令就是ifconfig。
在执行ifconfig 命令后,系统将在内核表中设置必要的参数,这样Linux 就知道如何与网络上的网卡通
信。ifconfig 命令有以下两种格式:

※ifconfig [interface]
※ifconfig interface [aftype] option | address …

ifconfig 的第一种格式(或使用不带任何参数的ifconfig 命令)可以用来查看当前系统的网络配置情况。
在刚刚安装完系统之后,实际上是在没有网卡或者网络连接的情况下使用Linux,但通过ifconfig 可以使用回绕方式工作,使计算机认为自己工作在网络上。
现在我们运行一下ifconfig 命令,不带参数的ifconfig 命令可以显示当前启动的网络接口,其输出结果
为:

[root@machine1 /sbin]#ifconfig
eth0 Link encap:Ethernet Hwaddr 52:54:AB:DD:6F:61
inet addr:210.34.6.89 Bcast:210.34.6.127 Mask:255.255.255.128
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:46299 errors:0 dropped:0 overruns:0 frame:189
TX packets:3057 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0xece0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

其中以eth0 为首的部分是本机的以太网卡配置参数,这里显示了网卡在下的设备名/dev/eth0 和硬件的MAC 地址52:54:AB:DD:6F:61,MAC 地址是生产厂家定的,每个网卡拥有的唯一地址。
不过我们可以手工改动网卡的MAC 地址,只要我们在/etc/rc.d/init.d/中的network 中加入:

ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx

然后重启,此时再用ifconfig 命令查看一下,我们就会发现网卡的MAC 地址已经变成xx:xx:xx:xx:xx:xx
了。
下一行显示本机的IP 地址信息,分别是本机的IP 地址,网络广播地址和子网掩码。必须确认这些信息都是正确无误的,否则Linux 服务器无法与其它网络设备建立连接。我们也可以手工实现IP 与Mac 地址的
捆绑,命令是

arp -i eth0 -s xxx.xxx.xxx.xxx(IP) xx.xx.xx.xx.xx(MAC)

接下来显示的是设备的网络状态。MTU(最大传输单元)和Metric(度量值)字段显示的是该接口当前的
M T U 和度量值的值。按照惯例,度量值供某些操作系统所用,用于计算一条路由的成本。
再下来显示接口通信的网络统计值。RX 和TX 分别表示接收和传送的数据包。如果你的网卡已经完成配置却还是无法与其它设备通信,那么从RX 和TX 的显示数据上可以简单地分析一下故障原因。在这种情况下,如果你看到接收和传送的包的计数(packets)增加,那有可能是系统的IP 地址出现了混乱;如果你看到大量的错误(errors)和冲突(Collisions),那么这很有可能是网络的传输介质出了问题,例如网线不通或hub损坏。
再下面的Interrupt:5 Base address:0xece0 显示的是网卡的中断调用号和端口号,这是两个非常重要的硬件配置信息。如果您的网卡是PCI 的,那么Linux 在引导时有可能会自动配置这些信息(也很有可能会让您手工配置)但目前绝大多数网卡都是PnP 的,这就需要我们进行手工配置了。如果您的网卡还没有
配置好,那么运行:

[root@machine1 /sbin]#ifconfig

系统只会输出以lo 为首的部分。lo 是look-back 网络接口,从IP 地址127.0.0.1 就可以看出,它代表”本机”。无论系统是否接入网络,这个设备总是存在的,除非你在内核编译的时候禁止了网络支持,这是一个称为回送设备的特殊设备,它自动由Linux 配置以提供网络的自身连接。IP 地址 127.0.0.1 是一个特殊的回送地址(即默认的本机地址),您可以在自己的系统上用telnet 对IP 地址127.0.0.1 进行测试。如果有inetd进程在运行的话您会从自己的机器上获得登录提示符。Linux 可以利用这个特征在进程与仿真网络之间进行通信。(您有兴趣的话还可以试试本机的实际IP 地址,如这里的机器就是210.34.6.89,或者试试”localhost”,或者”127.0.0.1″,同样可以模拟网络通信。这可是Linux 一个非常突出的优点!)
如果你只是关心某个设备是否正常,可以在ifconfig 后面加上接口名字:

[root@machine1 /sbin]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 52:54:AB:DD:6F:61
inet addr:210.34.6.89 Bcast:210.34.6.127 Mask:255.255.255.128
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:50568 errors:0 dropped:0 overruns:0 frame:198
TX packets:3200 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0xece0

表示eth0 设备已经正常工作。
有时需要为某个设备接口配置多个IP 地址,办法是使用设备别名,例如,eth0 设备可以有eth0,eth0:0,
eth0:1….多个别名,每个都可以有一个独立的IP 地址:

ifconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127
ifconfig eth0:0 210.34.6.88 netmask 255.255.255.128 broadcast 210.34.6.127

这样,210.34.6.89 和210.34.6.88 都会被绑定在eth0 设备上,使用同样的网络设备,不同的IP 地址。
如果你要暂停某个网络接口的工作,使用down 参数:

ifconfig eth0 down

将取消eth0 网络接口。与之对应的是有一个参数up,不过由于是缺省值,所以从来不用。
如果我们使用了带有参数的ifconfig 命令,那就可以手动设置网卡的配置参数了。有效的ifconfig 命令参数及其意义为(选项对应的特性可以打开也可以取消,只在选项名前加一个破折号(-)即可):
Interface 网络设备名,如eth0 就表示本机的第一块网卡。
up 标志接口处于” up”状态,也就是说, IP 层可以对其进行访问。这个选项用于命令行上给出一个地址之时。如果这个接口已被” down”选项临时性取消的话(与该选项对应的标记是UP RUNNING),还可以用于重新启用一个接口。down 标标志接口处于” down”状态,也就是说, IP 层不能对其进行访问。这个选项有效地禁止了IP 通信流通这个接口。注意,它并没有自动删除利用该接口的所有路由信息。如果永久性地取消了一个接口,就应该删除这些路由条目,并在可能的情况下,提供备用路由。
netmask 标分配子网掩码,供接口所用。要么给一个前面是0x 的32 位十六进制号码,要么采用只适用于两台主机所用的点分四段式号码。对SLIP 和PLIP 接口来说,这个选项是必须配置的。
address 设置指定接口设备的IP 地址。
dstaddr adderss 为PPP 设置远程IP 地址,此关键字可用pointopoint 代替。
irqaddress 设置指定接口设备使用的中断行。
pointtopoint address 该选项用于只涉及两台主机的点到点链接。对SLIP 和PLIP 接口来说,这个选项是必须配置的(如果已经设置了一个点到点地址,ifconfig 就会显示出POINTTPOINT 标记)。
broadcast address 广播地址通常源于网络编号,通过设置主机部分的所有位得来。有的I P 采用的方案有所不同:这个选项可适用于某些奇怪的环境(如果已经设置了广播地址, ifconfig 就会显示出一个BROADCAST 标记)。hw class addr 设置指定接口设备的MAC 地址,关键字的后面必须跟硬件名或者与之等价的ASCII码。目前支持的硬件类有ether, ax25, ARCnet 和netrom。
metric number 该选项可用于为接口创建的路由表分配度量值。路由信息协议( RIP)利用度量值来构建
网络路由表。ifconfig 所用的默认度量值是0。如果不运行RIP 程序,就没必要采用这个选项。如果要运行RIP 程序,就尽量不要改变这个默认的度量值。
mtu bytes 该选项用于设置最大传输单元,也就是接口一次能处理的最大字节数。对以太网接口来说, MTU的默认设置是1500 个字节;对SLIP 接口来说,则是296 个字节。
arp 标这个选项专用于以太网或包广播之类的广播网络。它启用ARP(地址解析协议)来保护网络上各台
主机的物理地址。对广播网来说,默认设置是” on”(开)。
promisc 将接口置入promiscuous(混乱)模式。广播网中,这样将导致该接口接收所有的数据包,不管其目标是不是另一台主机。该选项允许利用包过滤器和所谓的以太网窥视技术,对网络通信进行分析。通常情况下,这对揪出网络故障的元凶来说,是相当有用的。但另一方面,如果有人蓄意攻击你的网络,也可浏览到 s 通信数据,进而获得密码,破坏你的网络。一项重要的保证措施是杜绝任何人将他们的计算机接入你的以太网。另一个选项用于保护某些身份验证协议的安全,比如Kerberos 或SRA 登录套件(该选项对应的标记是PROMISC)。
traIlers 开或关闭跟踪器。目前在某些Linux 系统中还无法实现此功能。
allmulti 多播地址即是向不在同一个子网上的一组主机广播数据。多播地址尚未获得内核支持(该选项对应的标记是ALLMULTI)txqueuelen len 设置指定接口设备的发送队列长度。
由此可以看出有大量的参数可用于配置网卡,下面是在这台计算机上使用ifconfig 命令的实例:

ifconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127

该命令的作用是设置网卡eth0 的IP 地址,网络掩码和网络的本地广播地址。同样的方式可以用来配置eth1,eth2 等等,通常netmask 和broadcast 只要设置一个就可以了。
linux

160 thoughts on “ifconfig 命令详解(转载)

  1. Pingback: Google

  2. Bricks Manufacturers in Salem

    I have been surfing on-line more than 3 hours today, yet I never discovered any attention-grabbing article like yours. It is beautiful value enough for me. Personally, if all webmasters and bloggers made just right content material as you did, the net shall be much more useful than ever before.

发表评论