LINUX网络配置

来源:互联网 发布:英语词典 知乎 编辑:程序博客网 时间:2024/05/01 23:50
 

Linux网络基础

etony C.F.AN etony@tom.com

v0.0.1, 2006-7-23


本文档主要介绍讲述在 Debian系统下有关网络的一些基本信息.


1. 声明

  • 版本信息:

本文档的最新版本将张贴于: LinuxSir.Org论坛 Debian 发行版讨论区 ;

也可以从 http://debian.linuxsir.org/ 获取.

  • 反馈:

所有评论, 错误报告, 其他信息以及批评, 请邮寄到 etony@tom.com ;

或在LinuxSir.Org论坛 Debian发行版讨论区 张贴.

  • 版权信息:

本文档的版权(c)2006-2007 归 etony C.F.AN 所有.

转载请注明源自 http://debian.linuxsir.org/ .

2. 网络相关配置文件介绍

2.1 /etc/hosts

包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态获取,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络名称服务器之前,/etc/hosts.conf 通常会告诉解析程序先查看这里。

文件格式:

ip地址          主机名          别名

 

$ cat /etc/hosts

 

127.0.0.1       localhost.localdomain   localhost

2.2 /etc/services

Internet网络服务文件,将网络服务名转换为端口号/协议。由 inetd、telnet、tcpdump 和一些其它程序读取。文件中的每一行对应一种服务,它由4个字段组成,中间用TAB或空格分隔,分别表示“服务名称”、“使用端口”、“协议名称”以及“别名”。

文件格式:

服务            端口/端口类型           别名

 

$ cat /etc/services  |more

 

tcpmux          1/tcp                           # TCP port service multiplexer

echo            7/tcp

echo            7/udp

discard         9/tcp           sink null

discard         9/udp           sink null

systat          11/tcp          users

daytime         13/tcp

daytime         13/udp

netstat         15/tcp

qotd            17/tcp          quote

msp             18/tcp                          # message send protocol

2.3 /etc/hostname

主机名配置文件,该文件只有一行,记录着本机的主机名。

文件格式:

主机名

$ cat /etc/hostname

tonybox

2.4 /etc/host.conf

当系统中同时存在DNS域名解析和/etc/hosts主机表机制时,由该/etc/host.conf确定主机名解释顺序。示例:

order hosts,bind    #名称解释顺序

multi on            #允许主机拥有多个IP地址

nospoof on          #禁止IP地址欺骗

order是关键字,定义先用本机hosts主机表进行名称解释,如果不能解释,再搜索bind名称服务器(DNS)。

2.5 /etc/nsswitch.conf

名称服务交换设定档。它控制了数据库搜寻的工作,包括承认的主机,使用者,群组等。此外,这个档案还定义了所要搜寻的 数据库,例如此行:

hosts: files dns

指明主机数据库来自两个地方,files ( /etc/hosts file) 和 DNS, 并且本机上档案优先于 DNS。

$ cat /etc/nsswitch.conf

 

passwd:         compat

group:          compat

shadow:         compat

 

hosts:          files dns

networks:       files

 

protocols:      db files

services:       db files

ethers:         db files

rpc:            db files

 

netgroup:       nis

2.6 /etc/resolv.conf

该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:

nameserver   #定义DNS服务器的IP地址

domain       #定义本地域名

search       #定义域名的搜索列表

sortlist     #对返回的域名进行排序

下边是一个示例:

#cat /etc/resolv.conf

domain mydebian.com

nameserver 192.168.1.1  //最多三个域名服务器地址

2.7 /etc/network/interfaces

网络接口参数配置文件, 下面是一个配置示例, 有两个网络接口, 其中eth0 分配静态IP地址, eth1动态获取IP地址 :

        # This file describes the network interfaces available on your system

        # and how to activate them. For more information, see interfaces(5).

 

        # The loopback network interface

        auto lo

        iface lo inet loopback

 

        # The primary network interface

        auto eth0

        iface eth0 inet static

                address 192.168.1.254

                network 192.168.1.0

                netmask 255.255.255.0

                broadcast 192.168.1.255

                gateway 192.168.1.1

 

        auto eth1

        iface eth1 inet dhcp

如果对此文件进行修改, 需要重启网络方能生效:

        # /etc/init.d/networking restart

3. 基本的网络配置命令和脚本

3.1 etherconf

Debian 下提供一个名叫 etherconf软件包, 用于配置网络信息,这包括主机名,IP,DHCP,DNS,GATEWAY,NETMASK...等, 默认没有安装这一软件包, 需要您手动安装:

        # aptitude install etherconf

安装完毕后运行:

        $dpkg-reconfigure etherconf

进行配置.

这个软件会修改以下配置文件:

        /etc/resolv.conf

        /etc/network/interfaces

        /etc/hosts

        /etc/hostname

重复使用这一配置文件的方法是:

        # dpkg-reconfigure etherconf

3.2 /etc/init.d/networking

系统启动时的初始化脚本, 当系统以某个级别启动时, 它负责初始化所有的已配置的网络接口.

3.3 ifconfig

用于配置常驻内核的网络接口。它用于在引导成功时设定网络接口。此后,只在需要调试及系统调整时才使用。

命令格式:

        ifconfig [接口]

        ifconfig 接口 [aftype] options | address ...

如没有给出参数, ifconfig 显示当前有效接口的状态。如给定单个 接口 作为参数,它只显示给出的那个接口的状态;如果给出一个 -a 参数,它会显示所有接口的状态,包括那些停用的接口。否则就对一个接口进行配置。

选项

        接口 接口名称。通常是一个后跟单元号的驱动设备名,例如第一个以太接口 eth0 。

 

        up

            此选项激活接口。如果给接口声明了地址,等于隐含声明了这个选项。

        down

            此选项使接口驱动设备关闭。

 

        netmask addr

            为接口设定 IP 网络掩码。缺省值通常是 A,B 或 C 类的网络掩码 (由接口的 IP 地址推出),但也可设为其它值。

        add addr/prefixlen

            为接口加入一个 IPv6 地址。

        del addr/prefixlen

            为接口删除一个 IPv6 地址。

        hw class address

            如接口驱动程序支持,则设定接口的硬件地址。此选项必须后跟硬件的类型名称和硬件地址等价的可打印 ASCII 字符。当前支持的硬件类型包括 ether (以太网), ax25 (AMPR AX.25), ARCnet 和 netrom (AMPR NET/ROM)

  利用ifconfig命令查看网络信息:

ifconfig

        eth0      Link encap:Ethernet  HWaddr 00:15:58:3E:F2:6B 

                  inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0

                  inet6 addr: fe80::215:58ff:fe3e:f26b/64 Scope:Link

                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

                  RX packets:29458 errors:0 dropped:0 overruns:0 frame:0

                  TX packets:23690 errors:0 dropped:0 overruns:0 carrier:0

                  collisions:0 txqueuelen:1000

                  RX bytes:10945195 (10.4 MiB)  TX bytes:2935004 (2.7 MiB)

                  Interrupt:169 Base address:0xe200

 

        eth0:0    Link encap:Ethernet  HWaddr 00:15:58:3E:F2:6B 

                  inet addr:192.168.1.244  Bcast:192.168.1.255  Mask:255.255.255.0

                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

                  Interrupt:169 Base address:0xe200

 

        lo        Link encap:Local Loopback 

                  inet addr:127.0.0.1  Mask:255.0.0.0

                  inet6 addr: ::1/128 Scope:Host

                  UP LOOPBACK RUNNING  MTU:16436  Metric:1

                  RX packets:354 errors:0 dropped:0 overruns:0 frame:0

                  TX packets:354 errors:0 dropped:0 overruns:0 carrier:0

                  collisions:0 txqueuelen:0

                  RX bytes:45062 (44.0 KiB)  TX bytes:45062 (44.0 KiB)

 

        ppp0      Link encap:Point-to-Point Protocol 

                  inet addr:18.18.18.13  P-t-P:18.18.18.1  Mask:255.255.255.255

                  UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1

                  RX packets:9631 errors:0 dropped:0 overruns:0 frame:0

                  TX packets:9189 errors:0 dropped:0 overruns:0 carrier:0

                  collisions:0 txqueuelen:3

                  RX bytes:8460352 (8.0 MiB)  TX bytes:913898 (892.4 KiB)

ifconfig的第一种格式(或使用不带任何参数的ifconfig命令)可以用来查看当前系统的网络配置情况。

    * eth0 : 表示网卡代号

    * lo :Linux内部的网络回环地址, 用于模拟网络行为,

    * HWaddr :网卡的硬件地址,也就是MAC地址

    * inet addr :网卡的ip地址

    * Bcast :广播地址( broadcast ) ;

    * Mask :子网掩码;

    * MTU :最大传输单元的缩写(Maximum Trasmission Unit), 标示此网络接口的可传输的最大封包, 此值的设定错误可能引起网络故障.

    * RX :网络从起动到现在为止数据的接收情况

    * TX :网络从起动到现在为止数据的发送情况

    * collisions :网络信号发生冲突的情况;

激活网络设备

        ifconfig eth0 up

更改网络设备信息

        #ifconfig eth0 192.168.1.112 netmask 255.255.255.0

关闭网络设备

        ifconfig eth0 down

修改网卡的MAC地址

        ifconfig eth0 down

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

        ifconfig eth0 up

4. 网络服务相关

5. 测试网络

5.1 ping

向网络主机发送ICMP回显请求(ECHO_REQUEST)分组 程序使用 ICMP 协议的强制回显请求数据报以使主机或网关发送一份 ICMP 的回显应答。回显请求数据报(`` pings IP 及 ICMP 的报头,后跟一个``时间值关键字''然后是一段任意长度的填充字节用于把保持分组长度为16的整数倍。以下是程序的选项:

        ping  [-c count ] [-i wait ] [-p pattern ] [-s packetsize ] [ -t ttl]   destination

 

        -c

            count 在发送(和接收)了正好数量为 count 的回显应答分组后停止操作。

        -i

            wait 在发送每个分组时等待 wait 个秒数。缺省值为每个分组等待一秒。此选项与-f选项不能同时使用。

 

        -p

            pattern 可以指定最多16个填充字节用于保持分组长度为16的整数倍。在网络上诊断与数据相关问题时此选项很有用。例如``-p ff''将使发出的分组都用全1填充数据区。

 

        -s

            packetsize 指定要发送数据的字节量。缺省值为 56 ,这正好在添加了 8 字节的 ICMP 首部后组装成 64 字节的 ICMP 数据报。

 

        -t

 

           ttl指存活数值TTL的大小默认为255

        tony@tonybox:~$ ping www.linuxsir.org -c 4

        PING www.linuxsir.org (218.61.34.138) 56(84) bytes of data.

        64 bytes from 218.61.34.138: icmp_seq=1 ttl=52 time=103 ms

        64 bytes from 218.61.34.138: icmp_seq=2 ttl=52 time=125 ms

        64 bytes from 218.61.34.138: icmp_seq=3 ttl=52 time=126 ms

        64 bytes from 218.61.34.138: icmp_seq=4 ttl=52 time=110 ms

 

        --- www.linuxsir.org ping statistics ---

        4 packets transmitted, 4 received, 0% packet loss, time 3003ms

        rtt min/avg/max/mdev = 103.513/116.329/126.598/9.856 ms

        tony@tonybox:~$

5.2 route

Route route 程序对内核的 IP 路由表进行操作。它主要用于给那些已经用 ifconfig(8) 程序配置过的接口指定主机或网络设置静态路由。

当使用了 add 或 del 选项的时候, route 修改路由表.如果没有这些选项, route 显示当前路由表的内容.

        # route [-nee]

        # route add [-net|-host] 目标主机或网络 [netmask] [gw|dev]

        # route del [-net|-host] 目标主机或网络 [netmask] [gw|dev]

 

        -n   :数字地址形式代替解释主机名形式来显示地址。此项对检测为何你到域名服务器的路由发生故障的原因非常有用。

        -ee   :将产生包括选路表所有参数在内的大量信息

        add   :添加一条路由

        del   :删除一条路由

        -net  :路由目标 target 为网络。

        -host  :路由目标 target 为主机。

        netmask :为添加的路由指定网络掩码!

        gw    :通过一个网关进行包路由.

注意:

指定的网关首先必须是可达的。也就是说必须为该网关预先指定一条静态路由。如果你为本地接口之一指定这个网关地址的话,那么此网关地址将用于决定此接口上的分组将如何进行路由。这是兼容 BSD 风格。 dev   :强制路由与指定的设备关联,否则内核自己会试图检测相应的设备 (方法是检查要增加的路由项所处环境中已存在的路由和设备声明)。在多数正常的网络上无需使用。

        # route  查看本地路由信息

        tonybox:/etc/network/run# route

        Kernel IP routing table

        Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

        18.18.18.1      *               255.255.255.255 UH    0      0        0 ppp0

        192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

        default         *               0.0.0.0         U     0      0        0 ppp0

        route add -net 127.0.0.0

            加一条普通的回环记录,它使用掩码 255.0.0.0 (从目标地址可以判断它是 A 类网)并与设备 "lo" 相关联 .

 

        route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0

            给通过 "eth0" 的路由表添加一条指向网络 192.56.76.x 的路由。其中 C 类子网掩码修饰词并不是必须的,因为 192.* 是个 C 类的 IP 地址。这里可省略关键字 "dev"。

 

        route add default gw 192.168.1.1

            加入一条缺省路由(如果无法匹配其它路由则用它)。使用此路由的所有包都将通过网关 192.168.1.1进行传输。

 

        route add 224.0.0.0 netmask 240.0.0.0 dev eth0

            这是一条模糊的命令,把它记录在案就可以让人们知道如何做了.此命令设定所有 D 类地址(用于组播)的路由通过 "eth0" 进行。这是用于带组播的内核正确的配置行。

5.3 traceroute

        traceroute [ -dFIlnrvx ] [ -f first_ttl ] [ -g gateway ]

                       [ -i iface ] [ -m max_ttl ] [ -p port ]

                       [ -q nqueries ] [ -s src_addr ] [ -t tos ]

                       [ -w waittime ] [ -z pausemsecs ]

                       host [ packetlen ]

通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。UNIX系统中,我们称之为 Traceroute,MS Windows中为Tracert。 Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

        -d

        指定不对计算机名解析地址。

        -h maximum_hops

        指定查找目标的跳转的最大数目。

        -jcomputer-list

        指定在 computer-list 中松散源路由。

        -w timeout

        等待由 timeout 对每个应答指定的毫秒数。

        host

        目标计算机的名称。

        # traceroute www.linuxsir.org

        traceroute to www.linuxsir.org (218.61.34.138), 30 hops max, 40 byte packets

6. 配置ADSL上网

首先,你要拥有上网帐号和密码, 并且有一块网卡正确的与ADSL moden正确相连

6.1 安装PPPoE软件包

        $ sudo install pppoe pppoeconf

6.2 然后进行配置

        确认检测到了您的网卡

        输入您的ADSL帐号

        输入您的ADSL帐号密码

        常规选项:是否修改默认路由: yes

                是否获取DNS: yes

        是否在引导时自动连接: yes

        是否马上建立连接: yes

完成这些步骤以后, 连接应该可以正常使用了

6.3 手动控制

        $ sudo pon dsl-provider #手动连接

        $ sudo poff dsl-provider #手动断开连接

6.4 FAQ

Q:拨号成功, 但无法和外网通讯

A:使用route命令检查本地路由, 看默认路由是否正确

Q:无法解析域名

A:检查/etc/resolv.conf文件,看是否正确获取了DNS

 

作者:北南南北
来自:LinuxSir.Org
摘要: 本文是关于网络接口有关配置工具的介绍,其中介绍了各大Linux发行版本的网卡的配置文件及相应的特色配置网络工具; ifconfig netconfig 进行了解说,对ADSL猫的拔号工具rp-pppoe 进行了详细说明,也对普通猫的拔号工具kpppwvdial 进行了简单介绍;希望弟兄们指教,谢谢;


目录

 
1、 关于网络接口及配置工具说明;
2   关于网络硬件设备的驱动;
3、ifconfig 配置网络接口的工具介绍;
 
3.1  ifconfig 查看网络接口状态;
3.2  ifconfig 配置网络接口;
3.3  如何用ifconfig 来配置虚拟网络接口;
3.4  如何用ifconfig 来激活和终止网络接口的连接;
 
4、Debian、Slackware、Redhat/Fedora、SuSE等发行版专用网络接口配置工具;
 
4.1  Debian 网络接口配置文件和专用配置工具;
4.2   Redhat/Fedora 网络接口的配置文件和网络接口专用配置工具;
 
4.21  Redhat/Fedora 或类似这样的系统,网卡的配置文件;
4.22  Redhat/Fedora 或类似系统, 配置网络的工具介绍 ;
4.23 Redhat/Fedora系统中的netconfig 特别介绍;
 
4.3   Slackware网卡配置文件和配置工具;
4.4  SuSE或OpenSuSE网卡配置文件和配置工具;
 
5、关于拔号工具的介绍;
 
5.1  ADSL pppoe 拔号工具rp-pppoe;
 
5.11 各大发行版自带的 rp-pppoe 的安装和使用;
5.12 如果是源码包安装,我们要自己来编译安装;
 
5.2 普通猫的拔号工具介绍;
 
6、无线网卡;
7、DNS客户端配置文件/etc/resolv.conf;
8、关于本文;
9、更新日志;
10、参考文档;
11、相关文档;
 


+++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++


1
关于网络接口及配置工具说明;

网络接口(interface)是网络硬件设备在操作系统中的表示方法,比如网卡在Linux操作系统中用 ethX,是由0开始的正整数,比如eth0eth1...... ethX。而普通猫和ADSL的接口是 pppX,比如ppp0等;

Linux操作系统中配置网络接口,一般是通过网络配置工具实现的,但最终目的还是通过网络配置工具来达到修改与网络相关的配置文件而起作用的。由此说来,我们配置网络可以直接修改配置文件。比如网络网络接口(网卡)的IP地址、子掩码、网关,在Slackware 中只需修改一个配置文件就行了 /etc/rc.d/rc.inet1 ,而在 Redhat/Fedora 等或以Redhat/Fedora 为基础的发行版中,一般要涉及到好几个文件,比如包括 /etc/sysconfig/network-scripts/ifcfg-eth0在内等。

了解Linux网络配置文件是极为重要的,我们通过工具修改了什么,是怎么生效的,只有了解网络配置文件才能搞清楚。做个不恰当的比喻:Linux 系统是一个透明的盒子,至于盒子里装的是什么都是一目了然的。而闭源操作系统,我们没有机会知道这些,更不知道他是怎么实现的。

对于复杂的网络模型,Linux 是有极大的优势,可能在我们看看man help,修改修改配置文件,在几分钟就可以搞定。但闭源图形界面的操作系统就没有这么幸运了,反复的点鼠标,点了几十次上百次也解决不了一个问题,这是极为常见的。

由于Linux存在很多的发行和版本,大多发行版本都有自己的专用配置工具。主要是为了方便用户配置网络;但也有通用的配置工具,比如 ifconfig ifupifdown


2
关于网络硬件设备的驱动;

我在以前的文档中有写过,网络硬件,比如网卡(包括有线、无线),猫包括普通猫和ADSL猫等,都是需要内核支持的,所以我们首先得知道自己的网络设备是不是已经被硬内核支持了。如果不支持,我们得找驱动(或通过内核编译)来支持它;

请参考:


3
ifconfig 配置网络接口的工具介绍;

ifconfig 是一个用来查看、配置、启用或禁用网络接口的工具,这个工具极为常用的。比如我们可以用这个工具来临时性的配置网卡的IP地址、掩码、广播地址、网关等。也可以把它写入一个文件中(比如/etc/rc.d/rc.local),这样系统引导后,会读取这个文件,为网卡设置IP地址;不过这样做目前看来没有太大的必要。主要是各个发行版本都有自己的配置工具,无论如何也能把主机加入到网络中;

下面我们看看ifconfig 用法;


3.1 ifconfig
查看网络接口状态;

ifconfig 如果不接任何参数,就会输出当前网络接口的情况;

[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:C0:9F:94:78:0E
          inet addr:192.168.1.88  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::2c0:9fff:fe94:780e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:850 errors:0 dropped:0 overruns:0 frame:0
          TX packets:628 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:369135 (360.4 KiB)  TX bytes:75945 (74.1 KiB)
          Interrupt:10 Base address:0x3000
 
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:57 errors:0 dropped:0 overruns:0 frame:0
          TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:8121 (7.9 KiB)  TX bytes:8121 (7.9 KiB)

解说:
eth0
表示第一块网卡, 其中 HWaddr 表示网卡的物理地址,我们可以看到目前这个网卡的物理地址(MAC地址)是 00:C0:9F:94:78:0E inet addr 用来表示网卡的IP地址,此网卡的 IP地址是 192.168.1.88 广播地址, Bcast:192.168.1.255,掩码地址Mask:255.255.255.0

lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如我们把HTTPD服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道;

如果我们想知道主机所有网络接口的情况,请用下面的命令;

[root@localhost ~]# ifconfig -a

如果我们想查看某个端口,比如我们想查看eth0 的状态,就可以用下面的方法;

[root@localhost ~]# ifconfig eth0


3.2 ifconfig
配置网络接口;

ifconfig 可以用来配置网络接口的IP地址、掩码、网关、物理地址等;值得一说的是用ifconfig 为网卡指定IP地址,这只是用来调试网络用的,并不会更改系统关于网卡的配置文件。如果您想把网络接口的IP地址固定下来,目前有三个方法:一是通过各个发行和版本专用的工具来修改IP地址;二是直接修改网络接口的配置文件;三是修改特定的文件,加入ifconfig 指令来指定网卡的IP地址,比如在redhatFedora中,把ifconfig 的语名写入/etc/rc.d/rc.local文件中;

ifconfig 配置网络端口的方法:

ifconfig 工具配置网络接口的方法是通过指令的参数来达到目的的,我们只说最常用的参数;

ifconfig 网络端口 IP地址 hw <HW> MAC地址 netmask 掩码地址 broadcast 广播地址 [up/down]

实例一:
比如我们用ifconfig 来调试 eth0网卡的地址

[root@localhost ~]# ifconfig eth0 down
[root@localhost ~]# ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0
[root@localhost ~]# ifconfig eth0 up
[root@localhost ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:11:00:00:11:11
          inet addr:192.168.1.99 Bcast:192.168.1.255 Mask:255.255.255.0
          UP BROADCAST MULTICAST MTU:1500 Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
          Interrupt:11 Base address:0x3400

注解: 上面的例子我们解说一下;

第一行:ifconfig eth0 down 表示如果eth0是激活的,就把它DOWN掉。此命令等同于 ifdown eth0
第二行:用ifconfig 来配置 eth0IP地址、广播地址和网络掩码;
第三行:用ifconfig eth0 up 来激活eth0 此命令等同于 ifup eth0
第四行:用 ifconfig eth0 来查看 eth0的状态;

当然您也可以用直接在指令IP地址、网络掩码、广播地址的同时,激活网卡;要加up参数;比如下面的例子;

[root@localhost ~]# ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 up

实例二:在这个例子中,我们要学会设置网络IP地址的同时,学会设置网卡的物理地址(MAC地址);

比如我们设置网卡eth1IP地址、网络掩码、广播地址,物理地址并且激活它;

[root@localhost ~]# ifconfig eth1 192.168.1.252 hw ether 00:11:00:00:11:11 netmask 255.255.255.0 broadcast 192.168.1.255 up

[root@localhost ~]# ifconfig eth1 hw ether 00:11:00:00:11:22
[root@localhost ~]# ifconfig eth1 192.168.1.252 netmask 255.255.255.0 broadcast 192.168.1.255 up

其中 hw 后面所接的是网络接口类型, ether表示乙太网, 同时也支持 ax25 ARCnetnetrom等,详情请查看 man ifconfig


3.3
如何用ifconfig 来配置虚拟网络接口;

有时我们为了满足不同的需要还需要配置虚拟网络接口,比如我们用不同的IP地址来架运行多个HTTPD服务器,就要用到虚拟地址;这样就省却了同一个IP地址,如果开设两个的HTTPD服务器时,要指定端口号。

虚拟网络接口指的是为一个网络接口指定多个IP地址,虚拟接口是这样的 eth0:0 eth0:1eth0:2 ... .. eth1N。当然您为eth1 指定多个IP地址,也就是 eth1:0eth1:1eth1:2 ... ...以此类推;

其实用ifconfig 为一个网卡配置多个IP地址,就用前面我们所说的ifconfig的用法,这个比较简单;看下面的例子;

[root@localhost ~]# ifconfig eth1:0 192.168.1.251 hw ether 00:11:00:00:11:33 netmask 255.255.255.0 broadcast 192.168.1.255 up

[root@localhost ~]# ifconfig eth1 hw ether 00:11:00:00:11:33
[root@localhost ~]# ifconfig eth1 192.168.1.251 netmask 255.255.255.0 broadcast 192.168.1.255 up

注意:指定时,要为每个虚拟网卡指定不同的物理地址;

Redhat/Fedora 或与Redhat/Fedora类似的系统,您可以把配置网络IP地址、广播地址、掩码地址、物理地址以及激活网络接口同时放在一个句子中,写入/etc/rc.d/rc.local中。比如下面的例子;

ifconfig eth1:0 192.168.1.250 hw ether 00:11:00:00:11:44 netmask 255.255.255.0 broadcast 192.168.1.255 up
ifconfig eth1:1 192.168.1.249 hw ether 00:11:00:00:11:55 netmask 255.255.255.0 broadcast 192.168.1.255 up

解说:上面是为eth1的网络接口,设置了两个虚拟接口;每个接口都有自己的物理地址、IP地址... ...


3.4
如何用ifconfig 来激活和终止网络接口的连接;

激活和终止网络接口的用 ifconfig 命令,后面接网络接口,然后加上 downup参数,就可以禁止或激活相应的网络接口了。当然也可以用专用工具ifupifdown 工具;

[root@localhost ~]# ifconfig eth0 down
[root@localhost ~]# ifconfig eth0 up
[root@localhost ~]# ifup eth0
[root@localhost ~]# ifdown eth0

对于激活其它类型的网络接口也是如此,比如 ppp0wlan0等;不过只是对指定IP的网卡有效。


注意:对DHCP自动分配的IP,还得由各个发行版自带的网络工具来激活;当然得安装dhcp客户端;这个您我们应该明白;

比如Redhat/Fedora

[root@localhost ~]# /etc/init.d/network start

Slackware 发行版;

[root@localhost ~]# /etc/rc.d/rc.inet1


4
DebianSlackwareRedhat/FedoraSuSE等发行版专用网络接口配置工具;

由于 ifconfig 用起来比较麻烦,而且是用来测试网络之用,但这个工具并不能修改网络接口的相应配置文件。虽然也能通过把ifconfig配置网络接口的语句写入类似/etc/rc.d/rc.local 文件中,但相对来说还是写入关于网络接口的配置文件中更为安全和可靠;但对于虚拟网络接口写入类似/etc/rc.d/rc.local 中还是可以的;

下面我们介绍一下各个发行版的网络接口配置工具;


4.1 Debian
网络接口配置文件和专用配置工具;

正在增加中;


4.2 Redhat/Fedora
网络接口的配置文件和网络接口专用配置工具;

Redhat/Fedora 中,与乙太网卡相关的配置文件位于 /etc/sysconfig/network-scripts目录中,比如 ifcfg-eth0ifcfg-eth1 .... ....


4.21 Redhat/Fedora
或类似这样的系统,网卡的配置文件;
</FONT?< p>

比如在Fedora 5.0中,ifcfg-eth0

如果您用DHCP服务器来自动获取IP的,一般情况下ifcfg-eth0的内容是类似下面这样的;

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Ethernet

如果您是指定IP的,一般内容是类似下面的;

DEVICE=eth0 注:网络接口
ONBOOT=yes 注:开机引导时激活
BOOTPROTO=static 注:采用静态IP地址;
IPADDR=192.168.1.238 注:IP地址
NETMASK=255.255.255.0 注:网络掩码;
GATEWAY=192.168.1.1 注:网关;

下面的几个选项也可以利用;

HOSTNAME=linxsir03 注:指定主机名;
DOMAIN=localdomain 注:指定域名;
HWADDR=00:00:11:22:00:aa 注:指定网卡硬件地址 (MAC地址), 也可以省略,不过这在这里来更改MAC地址一般是不能生效的。还是通过前面所说的ifconfig的办法来更改吧;


4.22 Redhat/Fedora
或类似系统, 配置网络的工具介绍

Redhat早期的版本中, linuxconf redhat-config-network netconfig 等工具;

Redhat/Fedora 最新的版本有 system-config-network-tui (文本模式的) system-config-network (图形模式的),netconfig(文本模式的)。

这些工具都会直接修改Linux系统中关于网络接口的配置文件;这是 ifconfig 所不能比的;

其中 redhat-config-network system-config-network工具不仅仅是配置网卡的工具,还有配置ISDN和普通猫、ADSL的工具、网络硬件的添加、主机名字的配置、DNS各客户端的配置等。其实是一个工具组的集成;

这些工具比较简单,以root权限运行命令就能调用,比如:

[root@localhost ~]# /usr/sbin/system-config-network
[root@localhost ~]# system-config-network

如果您设置了可执行命令的环境变量,不用加路径就可以运行,但前提是您得安装这个网络管理工具;

不过值得一说的是netconfig 工具是一个在文本模式比较好的工具,推荐大家使用;理由是这个工具在文本模式下,也有一个简单的图形界面;还有命令模式;功能强着呢;

[root@localhost ~]# netconfig -d eth0 注:配置eth0
[root@localhost ~]# netconfig -d eth1 注:配置eth1


4.23 Redhat/Fedora
系统中的netconfig 特别介绍;

netconfig这个工具,在Redhat/Fedora 或类似于它们的系统中都是存在的,这个工具比较强大。所以特别介绍一下。但在SlackwarenetconfigTEXT模式下有一个图形模式,但不能象ifconfig一样用命令来操作网卡接口;

netconfig 的用法如下:

[root@localhost ~]# netconfig --help 注:帮助;
  --bootproto=(dhcp|bootp|none) Boot protocol to use(
  --gateway=STRING Network gateway(指定网关)
  --ip=STRING IP address(指定IP地址)
  --nameserver=STRING Nameserver(指定DNS客户端)
  --netmask=STRING Netmask(指定网络掩码)
  --hostname=STRING Hostname( 指定主机名)
  --domain=STRING Domain name(指定域名)
  -d, --device=STRING Network device (指定网络设备)
  --nodns No DNS lookups (没有DNS查询)
  --hwaddr=STRING Ethernet hardware address (指定网卡的物理地址)
  --description=STRING Description of the device (描述性文字)
Help options: (帮助选项)
  -?, --help Show this help message
  --usage Display brief usage message

实例一:设置网卡的DHCP模式自动获得IP

[root@localhost ~]# netconfig -d eth0 --bootproto=dhcp

实例一:手动设置网卡的IP

[root@localhost ~]# netconfig -d eth0 --ip=192.168.1.33 --netmask=255.255.255.0 --gateway=192.168.1.1


4.3 Slackware
网卡配置文件和配置工具;

Slackware 有关网卡的配置文件是/etc/rc.d/rc.inet1.conf 这个文件包括乙太网接口的网卡和无线网卡的配置。Slackware 还是比较纯净的,网络配置也较简单;在Slackware中也有netconfig 配置工具,也是text模式运行的,人机交互界面,这个设置比较简单;

Slackware netconfig 配置网卡完成后,其实质是修改了/etc/rc.d/rc.inet1.conf 文件。Slackware是源法原味的Linux系统,他的配置文件比较标准 ,所以我推荐您在生产型的系统,不妨尝试一下Slackware

配置好网卡后,我们还得运行下面的命令,才能激活网卡;

[root@localhost ~]# /etc/rc.d/rc.inet1

下面是一个例子,比如此机器有两个网卡eth0eth1eth0DHCP获得IP地址,eth1指定IP地址;

# Config information for eth0:
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]="yes" 注:在这里写上yes,表示用DHCP获得IP;
DHCP_HOSTNAME[0]="linuxsir01" 注:DNS服务器主机名,也可以用IP来指定DNS服务器;
# Config information for eth1: 注:网卡eth1的配置;
IPADDR[1]="192.168.1.33" 注:指定IP地址;
NETMASK[1]="255.255.255.0" 注:指定掩码;
USE_DHCP[1]="no" 注:不用DHCP获得IP;
DHCP_HOSTNAME[1]=""
# Config information for eth2:
IPADDR[2]=""
NETMASK[2]=""
USE_DHCP[2]=""
DHCP_HOSTNAME[2]=""
# Config information for eth3:
IPADDR[3]=""
NETMASK[3]=""
USE_DHCP[3]=""
DHCP_HOSTNAME[3]=""
# Default gateway IP address:
GATEWAY="192.168.1.1" 注:指定网关;


4.4 SuSE
OpenSuSE网卡配置文件和配置工具;

正在更新之中;


5
、关于拔号工具的介绍;

有的弟兄可能需要ADSL猫和普通猫的拔号工具;现在我们分别介绍一下;


5.1 ADSL pppoe
拔号工具rp-pppoe

如果您的ADSL不是路由的,如果是路由的,在路由路就能设置好自动拔号。只要把机器接上就能用了,这个咱们不说了,路由器大家都会用;但如果您的ADSL不支持路由,或您想用您当前所用的主机来做路由器;这就需要一个拔号软件;

目前国内大多城市都用的是pppoe协议 ,所以我们有必要介绍 pppoe 拔号软件,在Linux中,这个软件的名字是 rp-pppoe

rp-pppoe 主页;

http://www.roaringpenguin.com/penguin/open_source_rp-pppoe.php


5.11
各大发行版自带的 rp-pppoe 的安装和使用;

rp-pppoe 目前在各大发行版本都是存在的,比如Redhat/Fedora、红旗、SlackwareDebianSuSE等系统,都是采用这个拔号软件,所以您大可不必为下载源码编译安装。只需要在各大发行版的安装盘中就可以找得到;请用各大发行版自带的软件包管理工具来安装此软件包;

如果您用的是各大发行版提供的rp-pppoe软件包

比如 RPM包的系统是用 rpm -ivh rp-pppoe*.rpm
Slackware
系统是用 installpkg rp-pppoe*.tgz

Redhat/Fedora 中可以通过图形配置工具来完成,redhat-config-network 命令,调用配置网络,要通过XDSL来添加拔号,比较简单;

所有发行版通用的方法是adsl-setup 命令来配置ADSL

[root@localhost ~]# adsl-setup 注:配置pppoe拔号,请文档下面,都差不多;
[root@localhost ~]# adsl-start 注:启动拔号;
[root@localhost ~]# adsl-stop 注:断开连接;


5.12
如果是源码包安装,我们要自己来编译安装;

[root@localhost ~]# tar zxvf rp-pppoe-3.8.tar.gz
[root@localhost ~]# cd rp-pppoe-3.8
[root@localhost rp-pppoe-3.8]# ./go
Welcome to the Roaring Penguin PPPoE client setup. First, I will run
some checks on your system to make sure the PPPoE client is installed
properly...
Looks good! Now, please enter some information:
USER NAME
>>> Enter your PPPoE user name (default bxxxnxnx@sympatico.ca): 在这里添写你的拔号用户名;就是服务商提供的;
>>> Enter the Ethernet interface connected to the DSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where 'n' is a number.
(default eth0): eth0 如果是乙太接口的ADSL,就要在这里写上接猫的那个网络接口号。此处是eth0;
Do you want the link to come up on demand, or stay up continuously?
If you want it to come up on demand, enter the idle time in seconds
after which the link should be dropped. If you want the link to
stay up permanently, enter 'no' (two letters, lower-case.)
NOTE: Demand-activated links do not interact well with dynamic IP
addresses. You may have some problems with demand-activated links.
>>> Enter the demand value (default no): 注:默认回车
>>> Enter the DNS information here: 202.96.134.133 注:在这里写上DNS服务器地址;可以和提供商要,也可以用我写的这个;
Please enter the IP address of your ISP's secondary DNS server.
If you just press enter, I will assume there is only one DNS server.
>>> Enter the secondary DNS server address here: 202.96.128.143 这是第二个DNS服务器地址;
>>> Please enter your PPPoE password:在这里输入用户的密码;
>>> Please re-enter your PPPoE password: 确认密码;
The firewall choices are:
0 - NONE: This script will not set any firewall rules. You are responsible
          for ensuring the security of your machine. You are STRONGLY
          recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway
                for a LAN
>>> Choose a type of firewall (0-2): 2 注:在这里写上2,可以共享上网的;当然还得加一条防火墙规划 ;
Ethernet Interface: eth0
User name: dxxx
Activate-on-demand: No
Primary DNS: 202.96.134.133
Secondary DNS: 202.96.128.143
Firewalling: MASQUERADE
>>> Accept these settings and adjust configuration files (y/n)? y 注:是不是保存配置;

关于共享上网,请参考:ADSL共享上网的解决办法》


5.2
普通猫的拔号工具介绍;

普通猫分为串口和PCI的,请查看 《关于网络设备概述

普通猫的拔号工具主要有kpppwvdial;在Redhat/Fedora中,用system-config-network redhat-config-network 也能设置ppp拔号;

KDE桌面环境下,大家一般都用kppp拔号工具,点鼠标就可以完成;

wvdial工具是文本的,几乎在各大发行版都有。wvdial的配置文件是/etc/wvdial.conf 。如果您的猫已经驱动好了,运行一下wvdialconf命令就生成了/etc/wvdial.conf 。当然您得查看一下它的内容;

[root@localhost ~]# wvdialconf
[root@localhost ~]# more /etc/wvdial.conf

关于wvdial工具的使用,请查看《普通 56K猫拔号上网工具 wvdial 介绍》


6
、无线网卡;

正在更新之中;由于我没有这样的网卡,是否有弟兄写一篇详尽一点的?在所有涉及无线网卡的文档中,这块都是空白。缺的就是这个。

看来我是得弄一块无线网卡了。。。。。。


7
DNS客户端配置文件/etc/resolv.conf

本来不应该把DNS客户端配置文件放在这里来说,但由于新手弟兄上网时,虽然能拔号,但不能以域名访问。究其原因是由于没有修改 /etc/resolv.conf 文件;
/etc/resolv.conf
里面存放的是各大通信公司DNS服务器列表;下面的三个地址可以用一用;当然您可以打电话问你的服务商;

nameserver 202.96.134.133
nameserver 202.96.128.143
nameserver 202.96.68.38


8
、关于本文;

本文写了常用的乙太网接口的配置,介绍了ifconfig netconfig 等,我感觉最重要的还是配置文件,新手弟兄还是仔细看看配置文件吧。当您用工具配置完成后,不妨查看一下相应配置文件的变化。我认为这样的学习方式,能知其然,然后知所以然;

—— 北南南北 at LinuxSir.Org 2006-07-05


9
、更新日志;

2006-07-05 v0.1b 初稿完成;


10
、参考文档;

man help


11
、相关文档;

Linux 网络基础》
《改变网络接口的速度和协商方式的工具miitool ethtool