3. 配置网络

内容:

3.a. 自动网络检测

能够自动检测到么?

如果你的系统接入一个拥有DHCP服务器的以太网,那么很可能网络配置已经自动设置好了。如果是这样,你就可以利用到安装盘中的许多网络命令,如sshscppingirssiwgetlinks

如果网络已经为你配置好了,/sbin/ifconfig命令就能列出lo以外的一些网卡的信息,如eth0:

代码 1.1: 一个正常工作的网络配置的/sbin/ifconfig命令输出

# /sbin/ifconfig
(……)
eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
          collisions:1984 txqueuelen:100
          RX bytes:485691215 (463.1 Mb)  TX bytes:123951388 (118.2 Mb)
          Interrupt:11 Base address:0xe800 

可选:配置网络代理

如果你是通过代理访问网络,就要在安装过程中设置代理信息。设置代理很容易:只要定义一个包含代理服务器信息的变量即可。

通常情况下只要将这个变量定义为代理服务器主机名。作为例子,我们假定代理名叫proxy.gentoo.org,端口为8080

代码 1.2: 定义代理服务器

(如果代理传输HTTP数据)
# export http_proxy="http://proxy.gentoo.org:8080"
(如果代理传输FTP数据)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(如果代理传输RSYNC数据)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

如果代理要求用户名和密码,请使用以下格式的变量:

代码 1.3: 添加用户名/密码到代理变量

http://用户名:密码@proxy.gentoo.org:8080

测试网络

ping一下你的ISP提供的DNS服务器(可于/etc/resolv.conf中找到)和一个任选的网站,以确定数据包传到了网上、DNS域名解析正常,等等。

代码 1.4: 进一步测试网络

# ping -c 3 www.gentoo.org

如果现在你的网络可用了,就可以略过本章的余下部分,进入下一章预备磁盘。如果没有,请接下去阅读。

3.b. 自动网络配置

如果网络没有马上配置好,一些安装介质允许你使用net-setup(普通或无线网络),pppoe-setup(ADSL用户)或pptp(PPTP用户——x86、amd64、alpha、ppc和ppc64平台可用)来继续配置。

如果你的安装介质没有提供这些工具或者你的网络还是不能运行,请阅读手动配置网络

默认:使用net-setup

如果网络没有自动配置好,最简单的配置方法是执行net-setup脚本:

代码 2.1: 执行net-setup脚本

# net-setup eth0

net-setup会问你一些关于你的网络环境的问题。全部回答完之后,你就能拥有一个正常工作的网络连接。按照前面叙述的方法测试一下网络连接。如果测试结果正常,恭喜!现在你已准备好开始安装Gentoo了。略过本章的余下部分并进入预备磁盘

如果网络还不能配置好,请继续阅读手动配置网络

备选:使用PPP

假如你通过PPPoE连接internet,安装盘(所有版本)中包含的ppp工具会让事情变得简单。使用所提供的pppoe-setup脚本来配置网络。它会提示你输入一些信息,包括连接到你的adsl调制解调器的网络设备、用户名和密码、DNS服务器的IP以及是否需要一个基本的防火墙。

代码 2.2: 使用ppp

# pppoe-setup
# pppoe-start

如果配置出错了,请仔细检查/etc/ppp/pap-secrets/etc/ppp/chap-secrets,确保你在其中输入的用户名和密码无误,并确定使用了正确的以太网设备。如果网络设备不存在,必须加载适当的网络模块。这种情况下你应该继续阅读手动配置网络,我们在其中解释了如何加载适当的网络模块。

如果一切正常,请继续阅读预备磁盘

备选:使用PPTP

如果你需要支持PPTP连接,可以使用我们的安装光盘中所提供的pptpclient。不过你必须首先确定配置没有问题。编辑/etc/ppp/pap-secrets/etc/ppp/chap-secrets使其中包含正确的用户名/密码对:

代码 2.3: 编辑/etc/ppp/chap-secrets

# nano -w /etc/ppp/chap-secrets

然后如果有必要,调整一下/etc/ppp/options.pptp

代码 2.4: 编辑/etc/ppp/options.pptp

# nano -w /etc/ppp/options.pptp

当做好了所有的配置,就请执行pptp(跟随一些不能在options.pptp中设置的选项)来连接服务器:

代码 2.5: 连接到一个“拨入”服务器

# pptp <服务器ip>

现在请继续阅读预备磁盘

3.c. 手动配置网络

加载适当的网络模块

安装光盘在启动时,会尝试检测所有硬件设备并加载适当的内核模块(驱动程序)以支持你的硬件。绝大多数情况下,它都做得非常好。尽管如此,某些情况下它还是可能无法自动载入你需要的内核模块。

如果net-setuppppoe-setup执行失败,那么很可能是没有一下子找到你的网卡。这意味着你将不得不手动加载适当的内核模块。

要找出我们为网络提供了哪些内核模块,请使用ls

代码 3.1: 搜索所提供的模块

# ls /lib/modules/`uname -r`/kernel/drivers/net

如果找到了你的网卡的驱动程序,请使用modprobe来加载这个内核模块:

代码 3.2: 使用modprobe加载一个内核模块

(作为一个例子,我们载入pcnet32模块)
# modprobe pcnet32

现在用ifconfig检查一下是否检测到你的网卡了。成功检测到的网卡会输出类似下面这样的信息:

代码 3.3: 测试网卡是否可用,成功

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr FE:FD:00:00:00:00  
          BROADCAST NOARP 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:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

不过如果你得到如下错误信息,说明没有检测到网卡。

代码 3.4: 测试网卡是否可用,失败

# ifconfig eth0
eth0: error fetching interface information: Device not found

如果你的系统中存在多块网卡,分别名为eth0eth1等等。确保你想要使用的那张网卡没有问题,并在阅读本文整篇文章时都记得使用它正确的名字。我们假定使用的是eth0这张网卡。

假如你现在拥有一张成功检测到的网卡,可以再试一试net-setuppppoe-setup(现在应该能正常使用了)。不过对于用户中的喜欢刨根究底的人,我们会为你解释如何通过手动配置网络。

基于你的网络设置,请从以下列表中选择相应的章节继续:

使用DHCP

DHCP(动态主机配置协议)可以让你自动获得网络信息(IP地址、子网掩码、广播地址、网关以及域名服务器等)。只有在你的网络中拥有一台DHCP服务器时才能获得(或者你的网络服务提供商提供DHCP服务)。执行dhcpcd使网络接口自动获得这些信息:

代码 3.5: 使用dhcpcd

# dhcpcd eth0
一些网络管理员要求你使用DHCP服务器所提供的主机名和域名。
这种情况下请用
# dhcpcd -HD eth0

如果工作正常(尝试ping一些互联网上的服务器,比如Google),那么你就完全准备好继续下一步了。略过本章的余下部分并继续阅读预备磁盘

预备无线网络接入

注意: iwconfig命令仅在x86、amd64和ppc安装光盘中提供。不过在其他情况下,你仍可以按照linux-wlan-ng项目的介绍,来使无线扩展运作起来。

如果你正在使用一张无线(802.11)网卡,那么在继续任何一步之前你需要先配好无线设置。要查看当前的无线网卡设置,可以使用iwconfig。执行iwconfig会显示以下类似信息:

代码 3.6: 显示当前无线设置

# iwconfig eth0
eth0      IEEE 802.11-DS  ESSID:"GentooNode"                                   
          Mode:Managed  Frequency:2.442GHz  Access Point: 00:09:5B:11:CC:F2    
          Bit Rate:11Mb/s   Tx-Power=20 dBm   Sensitivity=0/65535               
          Retry limit:16   RTS thr:off   Fragment thr:off                       
          Power Management:off                                                  
          Link Quality:25/10  Signal level:-51 dBm  Noise level:-102 dBm        
          Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx          
          excessive retries:237 Invalid misc:350282 Missed beacon:84            

注意: 一些无线网卡的设备名可能为wlan0ra0,而不是eth0。执行不带任何命令行参数的iwconfig以确定正确的设备名。

对大多数用户来说,可能只有两处设置需要重点修改,即ESSID(亦称无线网络名)或WEP密钥。如果前面列出的ESSID和AP地址正是你的无线AP的ESSID和地址,并且你不使用WEP,那么你的无线网络已工作正常。如果你需要修改你的ESSID或添加一个WEP密钥,可以参照下列命令:

注意: 如果你的无线网络使用的是WPA或者WPA2,你将需要使用wpa_supplicant。欲获取更多有关在Gentoo Linux里配置无线网络的信息,请阅读Gentoo手册中的无线网络一章。

代码 3.7: 修改ESSID和/或添加WEP密钥

(这里设置网络名为“GentooNode”)
# iwconfig eth0 essid GentooNode

(这里设置一个十六进制WEP密钥)
# iwconfig eth0 key 1234123412341234abcd

(这里设置一个ASCII密钥——以"s:"作为前缀)
# iwconfig eth0 key s:某密钥

然后可以使用iwconfig再次确认你的无线设置。一旦你配好无线设置,就可以继续配置下一节(理解网络术语)所述的IP级别的网络选项,或者可以使用前面所述的net-setup工具。

理解网络术语

注意: 如果你知道IP地址、广播地址、子网掩码和域名服务器,那你就可以略过本节并继续阅读使用ifconfig和route

如果以上所做的全部失败,你将不得不手动配置你的网络。这其实一点也不难。不过,你需要熟悉一些网络术语,才能配置好网络令自己满意。读完本节之后,你将了解到什么是网关子网掩码是作什么用的,广播地址是如何形成的,以及为什么需要域名服务器

在一个网络中,所有主机都通过IP地址(互联网协议地址)来识别。一个这种地址是由四个0到255之间的整数组合成的。嗯,至少我们是这样认识它的。实际上,一个IP地址由32个比特(0和1)组成。让我们看一个例子:

代码 3.8: IP地址的一个例子

IP地址(整数):   192.168.0.2
IP地址(位):     11000000 10101000 00000000 00000010
                   -------- -------- -------- --------
                      192      168       0        2

在所有可访问到的网络里,这样的IP地址跟主机是一一对应的(比如你能够连接到的每台主机必须拥有一个唯一的IP地址)。为了区别一个网络内部和外部的主机,IP地址被分为两个部分:网络部分和主机部分。

子网掩码用来描述这种区分,它由一系列的1跟随着一系列的0组成。IP中映射在1上的部分为网络部分,另一部分为主机部分。照例,子网掩码可以描述为IP地址的形式。

代码 3.9: 区分网络/主机的例子

IP地址:        192      168      0         2
              11000000 10101000 00000000 00000010
子网掩码:    11111111 11111111 11111111 00000000
                 255      255     255        0
             +--------------------------+--------+
                      网络                 主机

也就是说,192.168.0.14仍是我们的例子网络中的成员,而192.168.1.2就不是了。

广播地址是一个跟你的网络在同一个网段的IP地址,只是它的主机部分全部为1。你的网络中所有的主机都监听这个IP地址。它真正的用途是用来广播数据包。

代码 3.10: 广播地址

IP地址:      192      168      0         2
            11000000 10101000 00000000 00000010
广播:      11000000 10101000 00000000 11111111
               192      168      0        255
           +--------------------------+--------+
                     网络                主机

为了能在互联网上冲浪,你必须知道是哪台主机在共享Internet连接。这台主机称为网关。由于它是一台普通主机,所以它有一个普通的IP地址(比如192.168.0.1)。

前面我们陈述了每台主机拥有它自己的IP地址。为了能够通过域名(而不是IP地址)连到这台主机,你需要一种服务,以将一个域名(如dev.gentoo.org)翻译成一个IP地址(如64.5.62.82)。这种服务称为域名服务。你必须在/etc/resolv.conf中定义必要的域名服务器以享用这种服务。

某些情况下,你的网关也作为域名服务器提供服务。否则就必须加入ISP提供的域名服务器。

总结一下,继续下一步之前你需要了解下列知识:

网络名词 范例
你的IP地址 192.168.0.2
子网掩码 255.255.255.0
广播 192.168.0.255
网关 192.168.0.1
域名服务器 195.130.130.5, 195.130.130.133

使用ifconfig和route

设置网络包括三个步骤。首先我们使用ifconfig为自己设置一个IP地址。然后使用route设置到网关的路由。最后我们通过将域名服务器的IP写入/etc/resolv.conf来结束整个过程。

为了设置一个IP地址,你需要先获得你的IP地址、广播地址和子网掩码。然后执行以下命令,用你的IP地址、广播地址和子网掩码分别替代${IP地址}${广播}${子网掩码}

代码 3.11: 使用ifconfig

# ifconfig eth0 ${IP地址} broadcast ${广播} netmask ${子网掩码} up

现在使用route设置路由。用你的网关IP地址代替${网关}

代码 3.12: 使用route

# route add default gw ${网关}

现在用你喜欢的编辑器(我们的例子中使用nano)打开/etc/resolv.conf

代码 3.13: 创建/etc/resolv.conf

# nano -w /etc/resolv.conf

现在使用下面的模板填写你的域名服务器。注意用适当的域名服务器地址替换${域名服务器1}${域名服务器2}

代码 3.14: /etc/resolv.conf模板

nameserver ${域名服务器1}
nameserver ${域名服务器2}

这就是全部了。现在通过ping一些互联网上的服务器(比如Google)来测试一下你的网络。如果一切正常,那就恭喜了。你现在已准备好开始安装Gentoo了。接下来请继续阅读预备磁盘