since2012/04/23

     
 
连上 Internet
本文已不再维护,更新文章请参考此处
最近更新日期:2003/09/19
呼呼!终于要来到修改 Linux 网络参数的章节了!在前面的 网络基础 章节内我们知道了主机要连上 Internet 需要一些正确的网络参数设定,这些设定在 Windows 系统上面的修改则在 局域网络的架构 里面进行了说明。在这一章当中,我们则主要以固定 IP 的设定方式来修改 Linux 的网络参数,同时,也会介绍如何使用 ADSL 的拨接方式来上网,此外,因为 Cable modem 使用者也不在少数,所以我们也说明一下 Cable modem 在 Linux 下的设定方式喔!

大标题的图示Linux网络相关配置文件案
    要开始玩 Linux 网络之前,请新手务必了解 Linux 网络相关配置文件案放置的目录与文件名!这真的很重要!因为在 Linux 底下修改 IP 只要动到一个档案即可,修改主机名也只要一个档案,所以只要将这些文件名记起来,呵呵!未来在进行网络的测试与修订时,真的会事半功倍~完全不需要什么 linuxconf, webmin 等工具的帮助,真的很简单啦!底下赶紧来说一说与 Linux 网络最相关的几个档案档名与他的用途!
     
    • /etc/sysconfig/network:

    • 这个档案主要的功能在于『主机名( HOSTNAME )的修改,启动 Network 与否』!在某些版本的 Linux 上面,只要修改过这个档案,可能需要重新启动 Linux ( reboot ) 才能让设定生效。
       
    • /etc/sysconfig/network-scrips/ifcfg-ethn:

    • 这个档案的内容即是设定网络卡的参数档案啦!里面可以设定『network, IP, netmask, broadcast, gateway, 开机时的 IP 取得方式( DHCP, static ), 是否在开机的时候启动』等等。至于 ifcfg-ethn 那个 n 是数字啦!如果是第一块网络卡,则文件名为 ifcfg-eth0 ,第二块网络卡为 ifcfg-eth1 以此类推。
       
    • /etc/modules.conf:

    • 如果硬件要能动作,当然要核心有支持才行!同时,我们也可以利用外挂的核心模块(可以将他想成是驱动程序)来驱动硬件,而开机时用来设定加载核心模块的档案就是 modules.conf 啦。所以说,这个档案只在核心找不到网络卡的芯片组时才会动用到!
       
    • /etc/resolv.conf:

    • 我们在 网络基础 里面稍微提到的 DNS 功能是什么?对啦!进行主机名与 IP 的对应!而 resolv.conf 就是设定 DNS ( 名称解析服务器 ) 的档案,常常有人提到『咦!我已经可以 ping 到外部计算机的公共 IP 了,为何输入网址却无法联机?』通常发生的错误就是这个档案里面的设定不正确啦!请注意!通常这个档案可以输入中华电信的 DNS ( 168.95.1.1 )!
       
    • /etc/hosts:

    • 这个档案可以记录计算机的 IP 对应主机的名称或者主机的别名!特别留意的是,在局域网络内有些服务需要反查 Client 的身份,此时就会动用到主机名对应 IP 的数据。但是因为局域网络内使用私有保留 IP ,当然无法进行 Hostname 对应 IP 的行为,这个时候该服务就会呆呆的等待 30~60 秒~如果可以避过这个反查,或者是直接告诉主机 Hostname 与 IP 的对应,那么就可以节省这个反查的时间了!所以,如此一来省去反查的时间,就可以改善 LAN 内的连接速度了!这个 hosts 就是用来设定 Hostname 对应 IP 的啦!更多的信息请查阅后续服务器章节 DNS 主机的介绍。
       
    与 Linux 的网络设定有关的大概就是这几个档案啦!只要知道这些档案的放置地点,那么差不多网络的设定就不会有太大的问题了!

大标题的图示安装网络卡:
    网络卡是个硬件啊,所以要驱动他的话,核心就需要有支持该网络卡的芯片组才行。一般来说,目前新版的 Linux 默认可以支持的网络卡芯片组数量已经很完备了,包括大厂的 3COM, Intel 以及初阶的 RealTek, D-Link 等网络卡芯片都已经被支持,所以使用者可以很轻易的设定好他们的网络卡。不过,如果万一不幸核心没有支持该网络卡的话,那么您可以透过 (1)重新编译核心或者是 (2)编译网络卡驱动模块 ( Modules ),并且加载该模块,好让核心可以支持网络卡这块硬件啦!但是,重编核心或编译网络卡核心模块都不是简单的工作,所以万一您的网络卡真的不被默认的 Linux 网络芯片所支持,那么鸟哥真的建议直接换一块被 Linux 支持的网络卡吧,例如很便宜的螃蟹卡!免得花了太多时间在硬件确认上面,划不来的! ^_^ 如果您是照鸟哥推荐的,使用 RLT 8139 芯片 ( RealTek 8139 ) 的网络卡 ( 就是螃蟹卡 ) ,那您应该在安装 Linux 的时候就已经捉到网络卡了,那真是恭喜您啦!因为您的网络卡应该已经可以正常的工作啰!那如果在安装的时候并没有捉到网络卡呢?该如何是好?那也不用担心,因为您也可以事后才安装网络卡的驱动程序呀!不过,因为 Linux 并不像 Windows 是那样的即插即用,所以需要动一些手术的!
     
    如果很不幸的,您使用的是比较罕见的一些网络卡,或者是 Linux 核心支持度不太够的网卡,以致于在安装 Linux 时,并无法捉到这张卡,那也不用担心,我们可以使用较为简单的核心模块编译来支持这张网卡。底下我们以 D-Link 530 这一张曾被称为 Linux 恶魔卡的网络卡来进行模块的编译,如果您使用的是其他厂牌的网络卡,其实编译过程与底下的流程是类似的喔!
     

    手动安装网卡驱动程序
     
    如前面所说的,我们的 Linux 预设核心里面,已经建立了很多的网卡驱动程序模块了!所以啰!编译网络卡模块之前的首要工作就是先确认一下您的网络卡的芯片组是否有被支持呢?如果有支持的话『那么自然不需要编译模块了咯』! D-Link 530 这块网络卡的芯片组就是有名的 via-rhine ( 有的时候也写成是 viarhine ),先来找一找有没有这块网卡的模块吧。核心默认的网络卡模块路径在底下可以发现:
     
    1. 先察看一下核心版本,因为不同的版本模块放置的路径不同。
    [root@test /root]# uname -r
    2.4.20-18.9
    上面是以 Red Hat 9 为范例, 他的核心是 2.4 版喔。
     
    2. 核心模块的路径:
    [root@test /root]# cd /lib/modules/`uname -r`/kernel/drivers/net
    上面是 2.4 版的路径
    [root@test /root]# cd /lib/modules/`uname -r`/net
    上面是 2.2 版的路径,请依照您的实际核心来查询。
     
    [root@test net]# ls -l via*
    -rw-r--r--    1 root     root        17892 Sep  7  2001 via-rhine.o
    太好了!被支援到呢!
     
    如果幸运的话,那么您的网络卡就已经被支持,可以跳过编译的过程,直接进行模块的加载吧!万一您连自己的网络卡到底有没有被 Linux 捉到都不知道,那么可以使用底下的方法来测试:
     
    [root@test /root]# dmesg | grep eth
    divert: allocating divert_blk for eth0
    eth0: RealTek RTL8139 Fast Ethernet at 0xc4844000, 00:50:fc:20:f1:4c, IRQ 10
    eth0:  Identified 8139 chip type 'RTL-8139C'
    eth0: Setting 100mbps full-duplex based on auto-negotiated partner ability 45e1.
    divert: allocating divert_blk for eth1
    eth1: Digital DC21041 Tulip rev 33 at 0xc4852000, 21041 mode, 00:80:C8:5A:87:10, IRQ 9.
     
    看到上面的信息了吗?因为我有两张网络卡,一张是螃蟹卡 ( eth0 ) 另一张则是很旧很旧的 10 Mbps 的网络卡,Linux 默认就捉到了!所以我也就不需要重新编译核心模块!不过,万一捉不到呢?亦即上面没有显示出 eth0 或者 eth1 等信息,那就表示 Linux 无法找到该硬件,呵呵!底下就得来编译啰!
     
    1. 下载网卡驱动程序模块:

    2. 万一不幸的,您的网络卡的驱动模块恰好不在 Linux 的预设支持当中,例如买到了杂牌的卡或是特别想要的卡 ( 例如 D-Link 530 TX ) ,那您就必须要注意这些卡的包装上面是否有提及『支持 Linux 』字样!如果有支持的话就可以买了,因为一定会有驱动程序附在上面的磁盘中的,以鸟哥的 FNW-9702-T 为例,他就有附上一块驱动程序片,里头有一个 linux 目录,里面就是安装驱动程序的原始码啦!如果找不到驱动程序的话,您可以到下面的网站去找找看有没有您需要的驱动程序源文件,当然啰!最好还是到您买的 那张网络卡的公司去下载完整的驱动程序码!例如上面提到的 D-Link 530TX的驱动程序原始码,在底下的友讯网站就有提供下载!  
    3. 确定所需套件存在:

    4. 在开始编译核心模块之前,因为驱动程序需要配合核心来编译,所以会使用到 kernel source 或者是 kernel header 的数据,此外,也需要编译程序 ( compiler ) 的帮助,因此,先确定您的 Linux 系统当中已经有底下的套件存在 ( 注:每一个版本的 Linux 套件名称都不相同,我这里是以 Red Hat 9 来做说明,如果您的 Linux 不是 Red Hat 9 ,不要紧,只要看到 kernel 字样有出现,应该就没有问题! )
      • kernel-source-2.4.20-18.9
      • kernel-2.4.20-18.9
      • gcc-3.2.2-5
      • make-3.79.1-17
      而由于很多的核心模块默认都是由 /usr/src/linux 这个 kernel source 的目录来取得所需要的信息,偏偏目前很多的 Linux 版本都是使用 /usr/src/linux-2.4 这个目录来链接,所以很多时候您会发现找不到档案的错误讯息,因此,可以使用这样的方式来进行链接目录的制作:
      假设核心的 Open source 目录为 /usr/src/linux-2.4.20-18.9
      [root@test root]# cd /usr/src
      [root@test src]# ln -s linux-2.4.20-18.9 linux
      另外,如果没有安装上述的某些套件时,请拿出您的原版光盘,然后以 rpm 将他安装上您的 linux 系统吧! ^_^
       
    5. 编译下载的模块

    6. 上述的工作确认过后,并且由友讯网站下载了驱动程序后 ( 注:我下载的是完整的驱动程序片,也就是 DEF-530TX Shipping Driver 那个驱动程序,不过该档案 530tx.zip 是给 windows 用的,所以还需要在 Windows 底下解压缩后,才会得到 dlkfet-4.24.tar.gz 这个档案吶! ) 就可以准备来进行模块的编译了。
      1. 将刚刚取得的 dlkfet-4.24.tar.gz 放置到 /tmp 底下
      [root@test root]# cp dlkfet-4.24.tar.gz /tmp
      [root@test root]# cd /tmp
      [root@test tmp]# tar -zxvf dlkfet-4.24.tar.gz
      [root@test tmp]# cd dlkfet-4.24
       
      2. 开始编译:
      [root@test dlkfet-4.24]# make
      到此为止,会产生一个档案模块,称为: rhinefet.o
      [root@test dlkfet-4.24]# cp rhinefet.o  \
      > /lib/modules/`uname -r`/kernel/drivers/net
      [root@test dlkfet-4.24]# depmod -a
      特别留意,上面的路径为 2.4.xx 版本的核心!并且将该模块写入属性相依档案。
      当然啰,如果您是使用其他的网络卡,那么所得到的网卡驱动程序自然就会成为 filename.o 啦!同样将他移动到模块放置的目录后,执行 depmod -a 即可。(注:如果您的模块原始码文件名为 driver.c ,并且没有 Makefile 的辅助,那么使用『gcc -DMODULE -D__KERNEL__ -O6 -c driver.c』来编译出 driver.o 也是可以的作法!)
       
    7. 模块测试:

    8. 核心模块编译完成之后,当然就得需要测试看看能不能正常的运作了。测试的方法很简单,因为我们已经进行了 depmod -a 了,所以可以直接以 modprobe 来进行模块的加载:
      1. 加载模块的测试:
      [root@test root]# modprobe rhinefet
      请注意,不要写完整的档名, .o 不需要写,那个 rhinefet 就是
      刚刚编译出来的 rhinefet.o 咯!
      [root@test root]# lsmod
      Module                  Size  Used by    Tainted: P
      rhinefet                14208   2
      ....(略)....
       
      2. 设定开机时加载模块
      [root@test root]# vi /etc/modules.conf
      # 加入底下这一行
      alias eth0 rhinefet
       
      3. 也可以重新启动是看看能否正常的启动模块:
      [root@test root]# sync; sync; reboot
      如果可以出现上述的画面,那么表示模块可以被正确的加载,同时,如果模块已经正确的加载了,那么就可以直接写入开机配置文件 /etc/modules.conf 了。注意一下,在上面的例子当中,我们使用的是 rhinefet 这个模块,如果您的模块名称并非这个名称,请依照您的实际状态来修改,不要在 /etc/modules.conf 照抄我的设定啊!不然.....不要怪我~
       
    基本上,这样就已经编译成功,并且也将该模块挂上系统了,接下来就是需要测试一下这个网络卡是否能够正确的来运作啦!
     

    使用 Private IP 测试网络卡之运作:手动设定, 档案设定
     
    要测试网络卡是否能够工作,就是给网络卡一个私有 IP 来测试即可!而测试的方法又很简单,可以直接以手动下达指令的方式来启动网络卡,也可以使用配置文件来设定好网络参数。底下我们以 192.168.1.2 这个私有 IP ,加上 255.255.255.0 这个 C Class 的 netmask 来测试看看,此外,也以 eth0 为默认的 Gatewaydev ( 通讯闸装置 ):
     

      手动设定
       
      ifconfig 的详细说明我们在下一章再来详谈,这里先谈一谈他的简易用法啰:
       
      [root@test root]# ifconfig eth0 192.168.1.2
      [root@test root]# ifconfig
      eth0      Link encap:Ethernet  HWaddr 00:10:DC:F1:D8:C5
                inet addr:192.168.1.2  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:100
                RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
                Interrupt:17 Base address:0xd400 Memory:fb060000-fb060038
       
      lo        Link encap:Local Loopback
                inet addr:127.0.0.1  Mask:255.0.0.0
                UP LOOPBACK RUNNING  MTU:16436  Metric:1
                RX packets:41739 errors:0 dropped:0 overruns:0 frame:0
                TX packets:41739 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0
                RX bytes:4252360 (4.0 Mb)  TX bytes:4252360 (4.0 Mb)
       
      [root@test root]# ping 192.168.1.2 -c 3
      PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
      64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.106 ms
      64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.016 ms
      64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.013 ms

      --- 192.168.1.2 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 1998ms
      rtt min/avg/max/mdev = 0.013/0.045/0.106/0.043 ms
       
      [root@test root]# ifconfig eth0 down

       
      使用 ifconfig 后面加上网络卡代号,并且加上 IP ,就可以设定好网络卡的相关网络参数了!不过,要注意的是那个网络接口有个 lo 的咚咚存在是吧!没错啦!在网络基础里面谈到的 loopback 就是这个接口啰!他的预设 IP 就是 127.0.0.1 咯。再来使用 ping 来测试该网络卡是否能够正常的响应,呵呵!这样就算测试成功了。再来先将网络卡关掉,然后底下再以档案模式的方法来测试一下网络卡啰!另外, ifconfig 也可以直接修改 IP ,例如上面的案例中,如果在网络卡启动的状态下,想要将 IP 改为 192.168.1.200 ,则下达『ifconfig eth0 192.168.1.200 』即可!
       

      档案设定
       
      在档案的设定里面,我们会动用到的档案其实只有 /etc/sysconfig/network-scripts/ifcfg-eth0 ,不过,底下我们连同通讯闸(Gateway)也一同设定妥当,同时更改主机名,所以还会动用到 /etc/sysconfig/network 这个档案哩!修改一下先:
       
      1. 设定 /etc/sysconfig/network 档案:

      2. 这个档案可以设定主机名与默认的通讯闸,不过,在某些版本当中,这个档案无法设定 Gateway 呢,所以,不建议在这个档案里面设定 Gateway。主机名的修改就是在这个档案咯:
        [root@test root]# vi /etc/sysconfig/network
        NETWORKING=yes       <==是否启动网络,当然是啦!
        HOSTNAME=test.domain.name  <==主机名,要确定呦!可以随时修改啦!
         
      3. 设定网络卡参数 /etc/sysconfig/network-scripts/ifcfg-eth0 档案:

      4. 这个档案的设定也可以设定的很简单的啦!马上设定看看:
        [root@test root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
        DEVICE=eth0        <==设定装置的名称,这个要跟文件名对应
        ONBOOT=yes         <==是否在开机的的时候启动网络卡
        BOOTPROTO=static      <==启动的时候的 IP 取得的协定,这里是固定的,
                       如果是 Cable 的话,要改成 dhcp 才行。
        IPADDR=192.168.1.2     <==这个就是 IP 啰!
        NETMASK=255.255.255.0   <==这个就是子屏蔽网络啰!
        NETWORK=192.168.1.0    <==这个就是该网段的第一个 IP 咯
        BROADCAST=192.168.1.255  <==这个就是最后一个同网段的广播地址啰!
        GATEWAY=192.168.1.2    <==这个就是这块网络卡的通讯闸啰!
        #GATEWAYDEV=eth0      <==也可以这么写!
        这个档案就是在设定这个网络卡的主要网络参数啦!包括他的网域、IP、子屏蔽网络、软件广播地址及通讯闸等等。要特别留意的是, GATEWAY 设定的是整个 Linux 系统的 Default Gateway 而不是这块网络卡的 Gateway 喔!这个概念得先厘清。因此,如果您有多张网络卡在 linux 系统上面时,也就是您有 ifcfg-eth0, ifcfg-eth1.... 等多个档案,只要在其中一个档案设定 GATEWAY 即可!不要每个档案都设定啊!如果每个档案都设定 gateway 时,在某些版本的 Linux 上面可能会发生问题。但是如果您不是使用固定的 IP 作为 Gateway ,而是使用网络装置作为 Gateway (通常 Router 最常有这样的设定),那也可以使用 GATEWAYDEV 来设定通讯闸装置呢!相关的网络参数说明请参考 网络基础
         
      5. 启动与关闭网络卡:

      6. 启用网络卡配置文件案的指令是 ifup 与 ifdown:
        [root@test root]# /etc/rc.d/init.d/network restart <==重新启动网络接口
        [root@test root]# ifup  eth0  <==启动 eth0 网络卡 
        [root@test root]# ifdown eth0  <==关闭 eth0 网络卡
        ifup 是启动而 ifdown 是关闭的意思!后面接的是网络卡的代号。
         
      7. 检查是否启动了:

      8. 检查网络卡是否启动了!就使用 ifconfig 即可:
        [root@test root]# ifconfig eth0
        eth0      Link encap:Ethernet  HWaddr 00:50:FC:22:9C:57
                  inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                  RX packets:5692910 errors:0 dropped:0 overruns:0 frame:0
                  TX packets:5914804 errors:0 dropped:0 overruns:0 carrier:0
                  collisions:848 txqueuelen:100
                  RX bytes:522002571 (497.8 Mb)  TX bytes:2498073183 (2382.3 Mb)
                  Interrupt:10 Base address:0x6100
         
        [root@test root]# ping -c 3 192.168.1.2
        PING 192.168.1.2 (192.168.1.2) from 192.168.1.2 : 56(84) bytes of data.
        64 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=318 usec
        64 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=213 usec
        64 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=217 usec

        --- 192.168.1.2 ping statistics ---
        3 packets transmitted, 3 packets received, 0% packet loss
        round-trip min/avg/max/mdev = 0.213/0.249/0.318/0.050 ms

         
    上述的两种方法中,请特别留意的是,手动以 ifconfig 这个指令来修改 IP 或者是网络卡参数是可行的,您可以在任何时刻手动的修改。不过,如果原先以 ifup eth0 的方式来启动网络卡之后,再以 ifconfig 来进行 IP 的修改,那么网络的的启动与关闭就得使用 ifconfig 了,不能够使用 ifdown eth0 来关闭了!否则会显示找不到该网络卡的错误讯息喔!反正大原则就是:先以档案的型态 ifcfg-eth0 来设定好您的网络参数,而如果想要暂时更动网络参数的话,那么就使用 ifconfig 来进行修改,如此一来,未来重新启动之后,还是会以 ifcfg-eth0 的设定为准

大标题的图示连上Internet 的方法:
    局域网络的简易设定里面,我们知道了连上 Internet 的方法有好多种,不过在现今的台湾,主要的联机方法其实是以学术网络、ADSL 固接与拨接、Cable modem 等方式为主,所以底下我们仅针对这三种方式来加以介绍,至于传统的 56 Kbps 拨接则因为速度较慢且使用度越来越低,所以在这里就不多做介绍了。
     

    固定 IP 上网方式: 非拨接上网之方式
     
    以固定 IP 来上网的情况大致可以分为两种:
     
    • 一种是类似学术网络或者是固定制的 ADSL 这些情况,您有『公共 IP』,并且也取得了『公共 IP 的 GATEWAY』了!而您的其他的所有的网络参数也都取得的情况!
     
    • 另一种则是保留 IP 的情况,例如在 局域网络架构 那个章节的 图三 当中,我们的 PC3 是 Linux ,而这个 Linux 的 IP 就是 保留 IP ,并且透过 Linux server 的 NAT 作为 GATEWAY 的情况!( 不知道 NAT 吗?!没关系,以后就知道啦! )
     
    这样清楚了吗?反正就是要上网的时候,需要取得网络的所有参数就对了!底下我们来介绍一下使用固定私有 IP ,并且透过 NAT 主机的私有 IP 接口连上 Internet 的情况:
     
    • 网络参数的取得:

    • 在确定所有的网络参数之前,请先确定您的 网络卡 没有问题之后,再来则是网络联机的问题了!请先确认您的 网络硬件联机 没有问题喔 ( 这是大前提! )。这里先说说如果以固定制( 或者是校园网络系统 )的情况之下,您已经知道了您的 IP 与 gateway 的 address 的话,该如何设定以连接 Internet 呢?『请特别注意,这是给已经知道您的 IP 与 Gateway 的情况下使用的方法,若是使用 ADSL 拨接系统上网的话,这个方法并不适用!』,也就是说,如果您的网络联机是类似 GIGA 之类的拨接后才给予一个固定 IP 的话,那么就不能使用这个方法!我们假设我们的网络参数为底下的模样:
       
      • IP 为:        192.168.1.13
      • Netmask 为:   255.255.255.0
      • Network 为:   192.168.1.0
      • Broadcast 为: 192.168.1.255
      • Gateway 为:   192.168.1.2
      • 主机名为:   redhat9.vbird.net
      • DNS 设定为:   168.95.1.1
       
      而连上 Internet 的方法只有几个步骤:
       
      (1)设定主机名与默认通讯闸;
      (2)设定网络参数( IP, netmask, broadcast, Network 等等 );
      (3)设定 DNS 服务器的 IP ( 的 ISP 给的 );
      (4)重新启动网络设备。
       
      这样就够了!您当然可以使用手动指令设定上面的参数,不过需要 ifconfig, route 等等指令的下达,有点讨厌就是了!所以这里我们以档案设定的方式来设定网络参数喔!
       
      1. /etc/sysconfig/network ( 设定主机名与 default gateway )
      2. [root@test root]# vi /etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=redhat9.vbird.net
         
      3. /etc/sysconfig/network-scripts/ifcfg-eth0 ( 设定网络卡参数 )
      4. [root@test root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
        DEVICE=eth0
        ONBOOT=yes
        BOOTPROTO=static
        IPADDR=192.168.1.13
        NETMASK=255.255.255.0
        NETWORK=192.168.1.0
        BROADCAST=192.168.1.255
        GATEWAY=192.168.1.2
         
      5. /etc/resolv.conf ( 设定 DNS 主机的 IP )
      6. [root@test root]# vi /etc/resolv.conf
        nameserver 168.95.1.1
        nameserver 139.175.10.20
        我们以中华电信与 SeedNet 在南部的 DNS 主机之 IP 作为设定的方式!请注意一下,如果您不知道的最接近的 DNS 主机的 IP ,那么直接输入 nameserver 168.95.1.1 这个中华电信的 DNS 主机即可!
         
      7. 重新启动网络设定:

      8. 因为我们更动过 /etc/sysconfig/network 这个档案,所以最好以『network restart』来启动较好,有时候甚至需要 reboot 才能让主机名生效呢!不过,如果仅是要测试网络卡的话,使用 ifup 即可!
        [root@test root]# /etc/rc.d/init.d/network restart
        [root@test root]# ifdown eth0
        [root@test root]# ifup   eth0
        到这一步骤就算成功啦!使用 ping 试看看能否成功喔!
         
    使用固定 IP 的上网方式设定其实较为简便,这些步骤要记熟啊!因为未来会常常做这方面的操作喔!
     

    Cable Modem 上网方式
     
    在 Linux 上设定以 Cable 魔电( Modem )来上网是最简单的事了!因为他是透过所谓的 DHCP 协议来直接分配 IP 与相关的网络参数给 Linux 的,所以,我们几乎所有的网络参数都不需要设定呢!只要设定启动网络卡时候,选择的启动协议为 dhcp 就可以了!不过,如果主机端没有给我们 DNS 的 IP 与主机名的时候,还是需要设定的啦! ^_^
     
    1. /etc/sysconfig/network ( 设定主机名与 default gateway )
    2. [root@test root]# vi /etc/sysconfig/network
      NETWORKING=yes
      HOSTNAME=redhat9.vbird.net
       
    3. /etc/sysconfig/network-scripts/ifcfg-eth0 ( 设定网络卡参数 )
    4. [root@test root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
      DEVICE=eth0
      ONBOOT=yes
      BOOTPROTO=dhcp  <==这一行设定正确即可!下面的四个网络参数没有用!
                 需要留意的是,在 Openlinux 里面,这里的设定
                 为 DYNAMIC=dhcp 喔!
      IPADDR=192.168.1.13
      NETMASK=255.255.255.0
      NETWORK=192.168.1.0
      BROADCAST=192.168.1.255
       
    5. /etc/resolv.conf ( 设定 DNS 主机的 IP )
    6. [root@test root]# vi /etc/resolv.conf
      nameserver 168.95.1.1
      nameserver 139.175.10.20
      这个设定有时候会被主动的改变,这是因为来自于 dhcp 主机的设定所致!所以,如果被改变时,请不要讶异!详细的 DHCP 说明请参考后面章节的 DHCP 服务器设定喔!
       
    7. 重新启动网络设定:
    8. [root@test root]# /etc/rc.d/init.d/network restart
      [root@test root]# ifdown eth0
      [root@test root]# ifup   eth0
      当然,直接 reboot 也是可以啦!
     
    设定 Cable modem 就是这么简单喔!
     

    ADSL 拨接上网方式
     
    好了,终于提到最热门的 ADSL 拨接制的上网方式啰!嗯!来谈一谈怎么在 Linux 上拨接上网吧!在 Linux 系统中,要以 ADSL 连上 Internet 是一件很简单的事情,使用 rp-pppoe ( http://www.roaringpenguin.com/pppoe/ ) 软件就可以进行拨接了!安装也很方便喔!再来要注意的是,在目前的 Linux 版本当中,由于强调桌面计算机的便利性,所以很多版本的 Linux 都取消了文字接口下的 ADSL 拨接指令,例如 Red Hat 新版的 Linux 。所以在预设的状态下,我们仅能以图形接口启动 ADSL ,这真的很讨厌,因为我们的主机就是不想要启用 X Window 的啊!怎么办?没关系,我们可以透过重新安装 rp-pppoe 就行啦!我们提过在 Linux 的安装方式主要有 RPM 与 Tarball 两种方式,目前鸟哥已经成功的在 Red Hat 7.2 上面安装 rp-pppoe-2.6-5.src.rpm 这个版本的 rp-pppoe 啰!然而由于很多时候 RPM 有相依属性的问题,因此我们也尝试以 Tarball 来安装一下 rp-pppoe 吧!( 注:如果依旧无法以 RPM 安装 rp-pppoe 时,请直接以 Tarball 来安装吧! )
     
    此外,需要特别留意的是,原本 Linux 主机上面就会有 eth0 这个网络卡接口,不过在使用 rp-pppoe 拨接之后,会多产生了一个对外的接口,称为 ppp0 的这个网络联机接口,因此,您将具有三个网络接口喔!分别是:
     
    1. 内部循环测试用的lo接口;
    2. 网络卡 eth0 这个接口;
    3. 拨接之后产生的经由 ISP 对外连接的 ppp0 接口。
     
    而由于这三个接口的 IP 网段都不相同,因此,请『特别留意通讯闸的设定!』一般而言,在 ADSL 拨接的状态下,前面提到的几个档案的设定内容中,『都不要设定GATEWAY及GATEWAYDEV这两个参数』,因为 rp-pppoe 会自动由 ISP 取得这方面的数据,如果您设定了GATEWAY,反而会造成系统无法联机出去的状态喔!
     
    因为拨接之后会产生两个实体接口,分别为 eth0 与 ppp0 ,所以底下我们将针对两个接口进行设定。在 eth0 的设定中,我们选择 192.168.1.0/255.255.255.0 并且 IP 为 192.168.1.2 ,至于 ppp0 则完全由 rp-pppoe 所产生。
     
    设定与安装的步骤简单说明如下:
     
    1. 重新设定网络参数档案;
    2. 查看是否安装了 rp-pppoe,移除 rp-pppoe;
    3. 安装 rp-pppoe :
      • 用 rpm 安装;
      • 用 Tarball 安装;
    4. 设定 rp-pppoe :
    5. ADSL 拨接连线
     
    好了!开始一步一步来进行安装与设定及联机的步骤吧!
     
    1. 重新设定网络参数档案:

    2. 由于我们是使用拨接的方式来连上 Internet 的,所以 default gateway 是由 rp-pppoe 拨接之后 ISP 直接传送数据到我们 Linux 主机上的,因此,在您的 Linux 系统当中,千万不要设定 GATEWAY 或者是 GATEWAYDEV 喔!( 这个情况我们会在 Linux Router 的设定当中说明 )!
      1. 取消默认通讯闸
      [root@test root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
      DEVICE=eth0
      ONBOOT=yes    <==若您需要 eth0 帮您建立内部私有网域时,这里可以写成 yes
                 但若不需要内部网络时,这一行请直接写成 no ,反正拨接
                 之后网络卡会自动被启动!
      BOOTPROTO=static
      IPADDR=192.168.1.2
      NETMASK=255.255.255.0
      NETWORK=192.168.1.0
      BROADCAST=192.168.1.255
       
      [root@test root]# /etc/rc.d/init.d/network restart
       
    3. 移除原本的 rp-pppoe 套件:

    4. 如同前面说的,新版的 rp-pppoe 很多都仅支持图形接口的拨接程序,所以我们这里直接将 rp-pppoe 移除 (或者根本不要使用预设的 rp-pppoe 套件),然后再重新安装官方网站的 rp-pppoe 套件说:
      [root@test root]# rpm -qa | grep rp-pppoe
      rp-pppoe-3.5-2    <==看来是已经安装了!只好移除啰!
      [root@test root]# rpm -e rp-pppoe
       
    5. 安装 rp-pppoe :

    6. 安装 rp-pppoe 的方式有两种,可以使用 rpm 与 tarball 的方式来分别安装,不过,只要选择一种来安装就可以啦!
       
      • RPM 安装 rp-pppoe:

      • 如果您下载的是 SRPM 的档案的话,那么就需要先经过编译才行。详细的编译及安装步骤如下表所示:( 请注意,编译的过程也需要 gcc 之类的 compiler ,如果没有在 Install 的时候选择时,在编译个过程中可能会有出现错误,请自行由 Linux 原版光盘安装吧! )
         
        1. 下载 rp-pppoe :

        2. rp-pppoe 的下载网站在:『http://www.roaringpenguin.com/pppoe/#download』,底下我是以rp-pppoe-3.5-1.src.rpm 这个档案进行介绍的。如果的主机尚未开放任何的服务时,可以使用软盘来下载 rp-pppoe ,因为 rp-pppoe 的档案很小啦!还不到 200 KB 呢!所以软盘就可以啰!如何使用软盘呢?
          • 先使用软盘将下载下来的 rp-pppoe copy 到软盘上;
          • 将软盘放置于 Linux 主机的软盘槽中;
          • 在 Linux 底下使用 df 这个指令,看看有没有类似底下的这一行:

          • /dev/fd0     1423   0  1423 0% /mnt/floppy
            如果有的话,请使用『 umount /mnt/floppy 』,如果无,则跳到下一步;
          • 使用『 ls -l /mnt 』看看有没有 floppy 这个目录:

          • 如果有则下一步,若无则『 mkdir /mnt/floppy 』;
          • 使用『 mount -t vfat /dev/fd0 /mnt/floppy 』将软盘挂上去!
          • 使用『 cp /mnt/floppy/rp* /root 』将档案 copy 到 /root 这个目录下;
          • 使用『 cd /root 』将目录转到 root 底下。
           
        3. 编译及安装 rp-pppoe :
        4. 1. 编译 SRPM: 
          [root@test root]# rpm --rebuild rp-pppoe-3.5-1.src.rpm
          [root@test root]# rpmbuild --rebuild rp-pppoe-3.5-1.src.rpm
          # 注:在 Red Hat 7.3 以前, rpm 的指令使用 rpm ,但是在 Red Hat 8 
          # 以后, SRPM 的重制指令已经独立至 rpmbuild 啰!所以请选择
          # 适合您的 Linux 版本喔!
          .........
          Wrote: /usr/src/redhat/RPMS/i386/rp-pppoe-3.5-1.i386.rpm
          .........
          在编译时,最后的结果(如果没有错误)会显示上面那个样子!
          也就是说,您的编译完成的档案就放在上面啰!
           
          2. 安装 rp-pppoe :
          [root@test root]# cd /usr/src/redhat/RPMS/i386 
          [root@test i386]# rpm -ivh rp-pppoe-3.5-1.i386.rpm 
          Preparing...                ########################################### [100%]
             1:rp-pppoe               ########################################### [100%]
          [root@test i386]# rpm -q rp-pppoe
          rp-pppoe-3.5-1
          这样就安装完毕了!简单吧!如果不相信,可以查询看看! 
          安装完毕之后,会在 /usr/sbin 当中多了 adsl-start, adsl-stop, adsl-setup, adsl-status 等档案,至于配置文件则在 /etc/ppp 当中!如果要详细的看每一个指令的用法,可以使用 man adsl-setup ....等指令名称来观察!我们这里仅提供设定的方法及执行的方法!
           
      • Tarball 安装 rp-pppoe :

      • 嗯!由于 RPM 可能会有相依属性的问题!因此,如果的系统上面无法安装 rp-pppoe 的话,那么就直接以 Tarball 的方式来安装 rp-pppoe 吧!目前 (2003/08/18) 最新的 rp-pppoe 套件为 rp-pppoe-3.5.tar.gz 这个档案:
        1. 解压缩!
        [root@test root]# mv rp-pppoe-3.5.tar.gz /usr/local/src
        [root@test root]# cd /usr/local/src
        [root@test src]# tar -zxvf rp-pppoe-3.5.tar.gz
         
        2. 侦测系统与编译执行文件:
        [root@test src]# cd rp-pppoe-3.5/src
        [root@test src]# ./configure --prefix=/usr/local
        [root@test src]# make; make install
        安装方面很简易吧!这样就妥当啰!准备来给他设定一下吧!
         
    7. 设定 rp-pppoe :

    8. rp-pppoe 的设定非常简单,只要透过 /usr/sbin/adsl-setup ( 若为 Tarball 安装的话,那么就在 /usr/local/sbin /adsl-setup 啰 ) 这个程序来设定就 OK 了!
      [root@test root]# /usr/sbin/adsl-setup 
      >>> Enter your PPPoE user name (default bxxxnxnx@sympatico.ca): T0123456
      这个时候请输入您在 ADSL 的账号,不同的 ISP 有不同的设定方式呦!请特别注意!
      a. 如果是 seednet 的话,应该有点像这样==> T0123456 
      b. 如果是 Hinet 的话,应该有点像这样====> yourname@hinet.com.tw(连同 host 也要写)
       
      >>> Enter the Ethernet interface connected to the ADSL 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
      因为我们使用 eth0 联机的呀!
       
      >>> Enter the demand value (default no): <=按下 Enter 即可
      这里按 enter 不用设定就好了! 

      >>> Enter the DNS information here: 168.95.1.1
      >>> Enter the secondary DNS server address here: 139.175.10.20
      这里要您输入惯用的 DNS 主机:
      若使用 hinet 的话,可以打入 168.95.1.1
      若使用 seednet 的时候,可以打入 139.175.10.20 
       
      >>> Please enter your PPPoE password:  <==输入您的密码
      >>> Please re-enter your PPPoE password:  <==再输入一次
      这里就输入您的 ADSL 密码啦,要输入两次喔! 
       
      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):
      这里要您选择防火墙 的形式,通常我是不设火墙的, 
      所以直接选 0 就对了! 注意:选了防火墙有的时候反而会造成无法联机成功!
      反正未来我们会手动设定防火墙,所以这里不设定没有关系!
       
      Start this connection at boot time
      Do you want to start this connection at boot time?
      Please enter no or yes.
      yes
      如果想要一开机就自动启动 ADSL 联机的话,这里可以填入 yes啦!
       
      Ethernet Interface: eth0 
      User name:          T0123456 
      Activate-on-demand: No 
      Primary DNS:        168.95.1.1
      Secondary DNS:      139.175.10.20 
      Firewalling:        NONE 
       
      >>> Accept these settings and adjust configuration files (y/n)?
      接下来将您的设定作一个整合结果输出,如果没有问题的话,
      输入 y 之后就完成设定啦! 
      基本上,设定完成之后以下的档案会被自动改变,
      有影响的是 resolv.conf 这个档案,您可以手动改变这个档案喔!
       
      Adjusting /etc/ppp/pppoe.conf 
      Adjusting /etc/resolv.conf 
        (But first backing it up to /etc/resolv.conf-bak) 
      Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets 
        (But first backing it up to /etc/ppp/pap-secrets-bak) 
        (But first backing it up to /etc/ppp/chap-secrets-bak)

      哈哈!这样设定就成功啦!很简单吧!唯一需要注意的是在上面的 username 那个地方,千万注意,因为 hinet 与 seednet 的设定是不一样的!千万小心呢!否则会无法连上线呦!此外,由于我们在未来还会有 firewall 的建置,所以这里不太需要使用到防火墙啦!就先关闭他吧 ( 选 0 ) !否则也可能无法连上 Internet 呦!(注:上面那个 T0123567 以及密码都是向 ISP 申请的,不是自己随便设定的喔!不要搞错了!)另外,注意一下,我们上面使用 adsl-setup 的设定,其实最主要是修改两个档案,分别是 /etc/ppp/pppoe.conf 这个主要配置文件,以及 /etc/ppp/chap-secrets 这个密码储存文件!仔细去察看一下 chap-secrets 这个档案的内容,您就可以知道您的密码是否输入错误了! ^_^
       
    9. 连上 Internet 啦!

    10. 怎么拨接呢?简单的很,直接下达 adsl-start 即可!
      [root@test root]# adsl-start
      ....Connect!
      这样就是显示连上 Internet 啦!通常比较容易出问题的地方在于硬件的联机情况,请先确认所有的硬件联机没有问题喔!通常,如果使用小乌龟 ( ATU-R ) 时,请使用跳线连接网络卡与 ATU-R。另外一个容易出错的地方在于输入的账号与密码,账号与密码都是的 ISP 给的,并且注意大小写(可以到 /etc/ppp/chap-secrets 察看一下是否设定错误?)。
       
    11. 查看的 IP 啦!

    12. 那如何知道的 IP 呢?呵呵!就使用 ifconfig 呀!
      [root@test root]# ifconfig ppp0
      ppp0      Link encap:Point-to-Point Protocol 
                inet addr:211.74.249.38  P-t-P:172.16.11.8  Mask:255.255.255.255 
                UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1 
                RX packets:8356088 errors:0 dropped:0 overruns:0 frame:0 
                TX packets:8532063 errors:0 dropped:0 overruns:0 carrier:0 
                collisions:0 txqueuelen:10
      在上表中显示,ppp0 ( 就是 ADSL 的 ISP 给的公共 IP ) 的网址是 211.74.249.38。
       
    13. 自动侦测 ppp0 的拨接状态:

    14. 基本上,目前的 rp-pppoe 已经都设定好了断线后会自动拨接的模式了,因此我们大可不用太担心,不过,如果还是很担心会断线后无法自动拨接出去,那么可以在 /etc/crontab 加入这一行:
      [root@test root]# vi /etc/crontab
      .......
      01-59/3 * * * * root /usr/sbin/adsl-start  > /dev/null 2>&1
      在上面的式子当中,如果看不懂的话,那就表示『需要再将 BASH Shell 学一学了』! ^_^
       

    拨接程序 rp-pppoe 讯息错误处理
     
    或许您会发现使用 rp-pppoe 拨接之后,您的 /var/log/messages 老是出现这样的讯息:
     
    [root@test root]# more /var/log/messages
    May 10 18:02:22 testing pppoe[8527]: Bogus PPPoE length field (50)
     
    这是什么问题啊?在 RP-PPPOE 的官方讨论区上面提过,这个问题是由于 ISP 提供的讯息长度超过 rp-pppoe 默认的检查长度才会发生的一个警告讯息,事实上这个讯息并不重要,不用理会他也没有关系,不会影响到 Internet 的运作。但是,这样的讯息在 /var/log/messages 里面每一分钟就出现一次,实在很讨厌!怎么办,可以将他拿掉吗?!当然可以!您可以下载新的 Tarball 来重新编译过!步骤是这样的:
     
    1. 到下面的网站去下载新的 Tarball (我这里以 3.5 为例!)

    2. http://www.roaringpenguin.com/pppoe/#download
    3. 在 /usr/local/src底下解开该档案,则会造成 /usr/local/src/rp-pppoe-3.5 这个目录
    4. 到 /usr/local/src/rp-pppoe-3.5/src 底下去,修改这四个档案:
      • discovery.c
      • pppoe.c
      • pppoe-server.c
      • relay.c
      找到这四个档案的内容如下代码:
        /* Check length */
          if (ntohs(packet.length) + HDR_SIZE > len) {
              syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
                     (unsigned int) ntohs(packet.length));
              return;
          }
      将他修改成为:
          /* Check length */
          if (ntohs(packet.length) + HDR_SIZE > len) {
              /* syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
                     (unsigned int) ntohs(packet.length)); */
              return;
          }
      请注意,上面每个档案都有多个同样的字符串,请依序一个一个都修改掉才行!还没完喔!再到 pppoe.c 找到底下的字眼:
          if (plen + HDR_SIZE > len) {
              syslog(LOG_ERR, "Bogus length field in session packet %d (%d)",
                     (int) plen, (int) len);
              return;
          }
      请将他改成:
          if (plen + HDR_SIZE > len) {
              /* syslog(LOG_ERR, "Bogus length field in session packet %d (%d)",
                     (int) plen, (int) len); */
              return;
          }
    5. 然后就可以开始这样做啰:
    6. cd /usr/local/src/rp-pppoe-3.5/src
      ./configure
      make
      make install
    7. 如果一切都可以成功的进行,那么就可以:
    8. adsl-stop
      adsl-start
       
    这个简单的步骤应该可以将您的问题讯息克服了吧! ^_^

大标题的图示设定内部保留IP 与 DNS IP: /etc/hosts, /etc/resolv.conf,
    在新闻组或者是BBS上面最常听到的就是这个问题啦:
     
    • 咦!我的ADSL已经拨接上了,使用telnet IP也可以正确的连上BBS,但是为什么就是无法使用『telnet 网址』的方式连上Internet呢?
     
    • 我在我的虚拟网域内有几部计算机,这几部计算机明明都是在同一个网域之内,而且系统通通没有问题,为什么我使用pop3或者是ftp连上我的Linux主机会停顿好久才连上?
     
    这两个问题其实有点相关性啦,第一个问题比较好解决,那个绝对是DNS的IP设定错误,修改一下/etc/resolv.conf即可!第二个问 题则是因为网络联机时,有的时候会去检查联机IP的主机名(我们称为领域名反解),但是我们的内部网域计算机都是私有IP,自然无法被反查到他的名称 啦!这个时候我们就必需要藉由/etc/hosts这个档案来帮我们的内部计算机设定名称啦(名字可以随便取没有关系啰!)
     

    /etc/hosts
     
    还有几个档案对于内部真的是挺重要的,首先就是 /etc/hosts 这个档案啦!请注意!由于计算机与计算机在交互沟通的时候,都会『想要确认对方的身份』,因此会利用 /etc/hosts 与 /etc/resolv.conf 这两个档案去『查询对方的 domain name 』,亦即是对方的身份啦!这个时候,如果您的计算机在连上对方的计算机时,对方无法查询到您的身份,那就有可能会发生『等待逾时』的情况!最常见的发生状况就 在于『使用您的局域网络内的私有 IP ( 或者被称为虚拟 IP )连上具有实体 IP 的 NAT 主机』时,最容易发生这个问题了!您应该会觉得奇怪,『咦!不都是我的局域网络的计算机吗( 指 NAT 主机跟的 Client ) 怎么 pop3 跟 FTP 联机这么慢?!还要等个 60 秒!』嘿嘿!没错!这个时候就是您的 NAT 主机在追查您的 PC1 的身份啦!
     
    那么通常 Linux 主机是如何查询对方的身份的呢?在预设的情况中( 因为这个顺序可以改变,所以才会说是『预设情况』,这个顺序我们会在 DNS 的架设当中再提及! )首先,就会去检查 /etc/hosts 这个档案的设定,所以他是第一优先,再来则是 /etc/resolv.conf 的 DNS 主机啦!而,由于您 LAN 里面的 Client 是以『私有 IP 』进行架设的,然而您并没有将您的 私有 IP 写入 /etc/hosts 当中,这个时候您的 Linux 主机就会到 /etc/resolv.conf 里面设定的 DNS IP 去查询您的 client 的身份,偏偏您的 client 根本就没有在因特网上( 因为私有路由不可直接与 Internet 连接 ),哈哈!那么当然 Linux 就会找不到,也就会 delay 了几乎 60 秒钟了!
     
    了解了吗?所以说,您就要将您的 私有 IP 的计算机与计算机名称写入您的 /etc/hosts 当中了!好了!那么这个咚咚的内容如何呢?我们来看一看原本的 Red Hat 7.2 的设定吧!
     
    [root@test root]# vi /etc/hosts
    # Do not remove the following line, or various programs
    # that require network functionality will fail.
    127.0.0.1   localhost.localdomain   localhost
    计算机 IP    主机名          主机别名( alias )
     
    在上面的情况中很容易就发现了设定的方法了吧!很简单吧!没错!那就是 IP 对应主机名啦!那么现在知道为什么我们给他 ping localhost 的时候,地址会写出 127.0.0.1 了吧!那就是写在这个档案中的啦!而且那一行不能拿掉呦!否则系统的某些服务就会无法被启动!好了!那么将我局域网络内的所有的计算机 IP 都给他写进去!并且,每一部给他取一个喜欢的名字,即使与 client 的计算机名称设定不同也没关系啦!以我为例,如果我还额外加设了 DHCP 的时候,那么我就干脆将所有的 C Class 的所有网段 ( 什么是 C Class ? 如果看不懂我在写什么,请千万回到 网络基础 去看一看内容呦!很重要的! )全部给他写入 /etc/hosts 当中,有点像底下这样:
     
    [root@test root]# vi /etc/hosts
    # Do not remove the following line, or various programs
    # that require network functionality will fail.
    127.0.0.1   localhost.localdomain   localhost
    192.168.1.1  linux001
    192.168.1.2  linux002
    192.168.1.3  linux003
    .........
    .........
    192.168.1.255 linux255
     
    如此一来,不论我哪一部计算机连上来,不论是在同一个网段的哪一个 IP ,我都可以很快速的追查到!嘿嘿!那么区内网络互连的时候,就不会多等个好几时秒钟啰!
     

    /etc/resolv.conf
     
    很多朋友常问的一个问题『咦!我可以拨接上网了,也可以 ping 到奇摩雅虎的 IP ,但为何就是无法直接以网址连上 Internet 呢!』嘿!被气死!前面不是一直强调那个 DNS 解析的问题吗?对啦!就是名称解析不对啦!赶快改一下 /etc/resolv.conf 这个档案吧!改成上层 ISP 给您的 DNS 主机的 IP 就可以啦!例如 Hinet 的 168.95.1.1 及 Seednet 的 139.175.10.20 啰!例如底下的范例(这个范例就可以照抄了! ^_^):
     
    [root@test root]# vi /etc/resolv.conf
    nameserver 168.95.1.1
    nameserver 139.175.10.20
     

大标题的图示无法联机的自我检查几大问题详解
  • DNS 设定错误:

  • 最容易造成无法以网址联机的情况就是 DNS 主机的 IP 设定错误了!大家都习惯将 /etc/resolv.conf 设定成自己 NAT 的主机 IP!这是『错误的情况』!请注意!将『局域网络内的每一部计算机,不只是 NAT 主机,全部的( 不论是 Linux 还是 Windows ) DNS 主机 IP 都写成合法的 IP!例如使用 Hinet 的 168.95.1.1 !
  • GATEWAY 设定错误:

  • 常常有朋友问到:『为何我的 adsl-start 拨接上了,但是就是无法连接出去 Internet 呢?』有的朋友则是问:『为何我连出去 Internet 的时候,都是以私有 IP 那个接口( eth0 )在联机,而不会以公共 IP ( ppp0 那个接口 )来联机?』这个都是同样的问题,就是系统无法建立实际的 gateway 来沟通与 Internet 的联机!因为封包送错了方向啦!举个最简单的例子,我们都知道私有 IP 与公共 IP 不能直接相互沟通,所以我们需要在主机上面设定两个 IP ( 通常是以两块网络卡搞定!),一个是公共 IP 另一个则是私有 IP ,然而在设定的初期,很多人都会使用一个预设的 gateway ( 在 /etc/sysconfig/network 或者是 ifcfg-eth0 ),这个gateway 是在告诉系统:『嘿!要上 Internet 只能由这里出去!』的意思,因此,所有的封包将会直接给他送到这个 gateway 来!不过,抱歉的是,由于在后来新增了一个 ppp0 ( 拨接之后产生的 ) 界面,这个界面所使用的是公共 IP ,而该 IP 是写在 ppp0 的界面里头的,他可以自行提供合理的 gateway 。然而偏偏已经设定了一个 default gateway 了,因此不论 pppoe 如何振作,嘿嘿!都没有办法改变的啦!因此,这个时候就必须要来改一下default gateway 了!
    1. 修改 /etc/sysconfig/network 或者是 ifcfg-eth0 这个档案,将里头的:

    2. GATEWAY=xxxx.xxxx.xxx
      GATEWAYDEV=eth0
      里面的 xxxx.xxx.xxx.x 都删掉,然后,那个如果对外卡是eth0,则设定为 eth0 ,否则亦可设定为 ppp0 ( 拨接! )当然,最好是可以不要设定啦,所以变成了:
      GATEWAY=
      GATEWAYDEV=
    3. 这样就可以啦!如果没有办法立刻达成,可以下达:

    4. /etc/rc.d/init.d/network restart
     
    更多的网络除错请参考后续章节 Linux 网络侦错 的说明。

大标题的图示课后练习
  • 我要如何确定我在 Linux 系统上面的网络卡已经被 Linux 捉到并且驱动了?
  • 假设我的网络参数为:IP 192.168.100.100, Netmask 255.255.255.0, 请问我要如何在 Linux 上面设定好这些网络参数 (未提及的网络参数请自行定义!)?请使用手动与档案设定方法分别说明。
  • 我要将我的 Linux 主机名改名字,步骤应该如何(更改那个档案?如何启用?)?
  • /etc/resolv.conf 与 /etc/hosts 的功能为何?
  • 我使用 ADSL 拨接连上 Internet ,请问拨接成功之后,我的 Linux 上面会有几个网络接口 (假设我只有一个网络卡)?
  • 在 Linux 上面进行 ADSL 拨接应该使用什么软件?
  • 一般来说,如果我拨接成功,也取得了 ppp0 这个接口,但是却无法对外联机成功,您认为应该是哪里出了问题?该如何解决?

  • 前往参考用解答

大标题的图示参考数据:
连上 Internet

2002/07/24:首次释出日期
2003/08/18:重新校正,并且修正部分书写方式
2003/08/20:新增课后练习部分
2003/09/19:加入前往参考用解答
 
     
http://linux.vbird.org is designed by VBird during 2001-2011. ksu.edu 

本网页主要以Firefox配合解析度 1024x768 作为设计依据     鸟哥自由软件整合应用研究室