手册:X86/安装/配置网络

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:X86/Installation/Networking and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎polski • ‎português do Brasil • ‎русский • ‎Türkçe • ‎українська • ‎中文(中国大陆)‎
X86 Handbook
安装
关于安装
选择安装媒介
配置网络
准备磁盘
安装stage3
安装基本系统
配置Linux内核
配置系统
安装系统工具
配置系统引导程序Bootloader
收尾安装工作
使用Gentoo
Portage介绍
USE标记
Portage功能特性
初始化脚本(Initscript)系统
环境变量
使用Portage
文件和目录
变量
混合使用不同的软件分支
额外的工具
定制Portage树
高级特性
网络配置
入门
高级配置
模块化网络
无线
添加功能
动态管理


自动网络检测

它能够自动检测到么?

如果系统接入到一个有DHCP服务器的以太网络,网络配置非常可能会自动设置。这样的话,安装CD所包含的很多网络命令,比如sshscppingirssiwgetlinks,以及其他的一些, 都可以立即工作。

识别接口名称

ifconfig命令

如果网络已配置,ifconfig命令应该会列出一个或多个网络接口(围绕着lo)。在下面的示例中显示为eth0

root #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 

作为预测的网络接口名称控制的结果, 系统的接口名称可以和旧的eth0命名规则很不一样。近期的安装媒介可能显示常规网络接口名字像是eno0ens1enp5s0。查看ifconfig输出中找到有你本地网络相关的IP地址的接口。

Tip
如果使用标准的ifconfig命令没有显示出接口,尝试使用带有-a选项的相同的命令。这个选项强制这个工具去显示系统检测到的所有的网络接口,不管他们是up或down状态。如果ifconfig -a没有提供结果,则硬件有错误或者接口驱动没有加载到内核中。这些情况都超过本手册的范围。联系#gentoo需求支持。

ip命令

作为ifconfig的一个备选,ip命令可以用来识别接口名称。下面的示例展示了ip addr(由于是另外一个系统,所以显示的信息不同于前一个示例)的输出:

root #ip addr
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether e8:40:f2:ac:25:7a brd ff:ff:ff:ff:ff:ff
    inet 10.0.20.77/22 brd 10.0.23.255 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::ea40:f2ff:feac:257a/64 scope link 
       valid_lft forever preferred_lft forever

上面的输出读起来可能比另外的更乱一点。在上面的示例中,接口名称直接跟在数字后面;它是eno1

在本文档的其余部分,手册中假设要操作的网络接口叫作eth0

可选:配置代理

如果要通过代理访问互联网,则在安装过程中需要设置代理信息。定义一个代理十分容易:只需要定义一个包含代理服务器信息的变量即可。

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

设置一个HTTP代理(用于HTTP或HTTPS流量):

root #export http_proxy="http://proxy.gentoo.org:8080"

设置一个FTP代理:

root #export ftp_proxy="ftp://proxy.gentoo.org:8080"

设置一个RSYNC代理:

root #export RSYNC_PROXY="proxy.gentoo.org:8080"

如果代理要求用户名和密码,针对变量使用下面语言:

CODE 添加用户名/密码到代理变量
http://username:password@proxy.gentoo.org:8080

测试网络

尝试ping你的ISP的DNS服务器(可在/etc/resolv.conf中找到)和选择一个网站。这可确信网络正常工作并且网络包可以到达网络,DNS名称解析能正常工作等等。

root #ping -c 3 www.gentoo.org

如果这些都工作,则本章节中其余的部分可跳过,直接跳到安装介绍的下一步骤(准备磁盘)。

自动网络配置

如果网络没有立即工作,一些安装媒介允许用户使用net-setup(针对常规或无线网络),pppoe-setup(针对ADSL用户)或pptp(针对PPTP用户)。

如果安装媒介没有包含这些工具,继续手动配置网络

默认:使用net-setup

如果网络没有自动配置,最简单的方式是运行net-setup脚本来设置:

root #net-setup eth0

net-setup将会询问关于网络环境的一些问题。当所有这些完成后,网络连接就应该工作。以前面的方式测试网络连接。如果测试通过,恭喜!跳过本章节剩余部分并继续准备磁盘

如果网络还是不能工作,继续手动配置网络

可选:使用PPP

假设需要使用PPPoE连接到互联网,安装CD(任何版本)包含ppp来使这件事变得容易。使用提供的pppoe-setup脚本来配置连接。设置过程中将询问已连接到你的ADSL调制解调器的以太网设备、用户名和密码、DNS服务器的IP地址,以及是否需要一个简单的防火墙。

root #pppoe-setup
root #pppoe-start

如果还是有什么错误,再次在etc/ppp/pap-secrets/etc/ppp/chap-secrets中检查用户名和密码都是正确的,并且确保使用了正确的以太网设备。如果以太网设备不存在,则需要加载合适的网络模块。如果是那样,继续手动网络配置将解释如何加载合适的网络模块。

如果所有事都还,继续准备磁盘

可选:使用PPTP

如果需要PPTP支持,使用安装CD提供的pptpclient。但是首先确保配置是正确的。编辑/etc/ppp/pap-secrets/etc/ppp/chap-secrets让它包含正确的用户名/密码组合:

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

如果需要,继续调整/etc/ppp/options.pptp

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

当所有事都已完成,运行pptp(带着一些options.pptp无法设定的选项)来连接到服务器:

root #pptp <server ip>

现在继续准备磁盘

手动配置网络

加载适当的网络模块

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

如果net-setuppppoe-setup都失败,则可能是网络没有立即被找到。也就是说用户可能需要手动加载合适的内核模块。

要找出什么内核模块提供网络,使用ls命令:

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

如果找到一个针对网络设备的驱动,使用modprobe来加载内核模块。比如,要加载pcnet32模块:

root #modprobe pcnet32

要检查网卡现在是否检测到,使用ifconfig。一个检测到的网卡应该在结果中像这样(再一次,这里的eth0只是一个示例):

root #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)

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

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

系统中可用网络接口命名可以通过/sys文件系统列出。

root #ls /sys/class/net
dummy0  eth0  lo  sit0  tap0  wlan0

在上面的示例中,找到了6个接口。eth0是最像(有线)以太网络适配器,而wlan0 是无线的。

假设现在网络已经检测到了,重新尝试net-setuppppoe-setup(现在应该工作了),但是对于铁杆的人,我们还是要解释如何手动配置网络。

基于你的网络从下面的章节中选择一个进行设置:

使用DHCP

DHCP(动态主机配置协议)使自动接受网络信息(IP地址、掩码、广播地址、网关、名称服务器等)变得容易。这只在网络中有DHCP服务器(或者如果ISP提供商提供一个DHCP服务)时有用。要使一个网络接口自动接受信息,使用dhcpcd

root #dhcpcd eth0

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

root #dhcpcd -HD eth0

如果这个工作的话(试着ping一些Internet服务器,像Google),则所有事情都设置好了并可以继续。跳过剩下的章节并继续到准备磁盘

准备无线网络链接

附注
可能只有特定的架构支持iw命令。如果这个命令不可用,检查net-wireless/iw包是否可用于当前架构。除非安装net-wireless/iw包,否则iw命令将一直不可用。

当使用一块无线(802.11)网卡,在继续之前需要先配置无线设置。要查看当前无线网卡的设置,你可以使用iw。运行iw可能会显示如下:

root #iw dev wlp9s0 info
Interface wlp9s0
	ifindex 3
	wdev 0x1
	addr 00:00:00:00:00:00
	type managed
	wiphy 0
	channel 11 (2462 MHz), width: 20 MHz (no HT), center1: 2462 MHz
	txpower 30.00 dBm

检查当前连接:

root #iw dev wlp9s0 link
Not connected.

root #iw dev wlp9s0 link
Connected to 00:00:00:00:00:00 (on wlp9s0)
	SSID: GentooNode
	freq: 2462
	RX: 3279 bytes (25 packets)
	TX: 1049 bytes (7 packets)
	signal: -23 dBm
	tx bitrate: 1.0 MBit/s
附注
一些无线网卡的设备名可能是wlan0ra0而不是wlp9s0。运行ip link 来识别正确的设备名称。

对于大多数用户,只需要两个设置来连接,即ESSID(也称无线网络名称)和可选的WEP密钥。

  • 首先,确保接口处于活动状态:
root #ip link set dev wlp9s0 up
  • 连接到名为“GentooNode”的开放网络:
root #iw dev wlp9s0 connect -w GentooNode
  • 设置一个WEP密钥:使用d:前缀:
root #iw dev wlp9s0 connect -w GentooNode key 0:d:1234123412341234abcd
  • 使用ASCII WEP密钥连接:
root #iw dev wlp9s0 connect -w GentooNode key 0:some-password
附注
如果无线网络配置为WPA或WPA2,则需要使用wpa_supplicant。关于为Gentoo Linux配置无线网络的更多信息,请阅读Gentoo手册中的无线网络章节

使用iw dev wlp9s0 link确认无线设置。如果无线已经工作,继续按下一章节(了解网络术语)配置IP级别的网络选项或者使用前面描述的net-setup工具。

网络术语解读

附注
如果IP地址、广播地址、掩码和名称服务器这些全都了解,则可以跳过这个子章节,进入到使用ifconfigroute

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

在网络中,主机通过它们的IP地址(互联网协议地址)来标识。这个地址被看为是由四个0到255的数字来组成。很好,至少在使用IPv4(IP版本4)时。实事上,这样的一个IPv4地址包括32个位(1和0)。让我们来看一个示例:

CODE 一个IPv4地址示例
IP地址(数字):   192.168.0.2
IP地址(位):     11000000 10101000 00000000 00000010
                   -------- -------- -------- --------
                      192      168       0        2
附注
比IPv4更成功的IPv6使用128位(1和0)。在这章节中,我们只关注IPv4地址。

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

由一堆1后面跟着一堆0的掩码写出了网络的分离。IP映射到1的部分是网络部分,剩下的是主机部分。通常,掩码可以写成IP地址。

CODE 网络/主机分离示例
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不是。

广播地址是一个拥有相同网络部分,但是主机部分全是1的IP地址。网络上的每一个主机都监听这个IP地址。它的真正用途是用来广播包。

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

为了能在互联网上冲浪,网络中的每个主机必须知道哪个主机共享着互联网连接。这个主机叫作网关。它同样是一台常规主机,它有一个常规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

设置网络由三步组成:

  1. 使用ifconfig指派一个IP地址
  2. 使用route设置到网关的路由
  3. 通过/etc/resolv.conf设置名称服务器的IP完成

要指派一个IP地址,需要IP地址、广播地址和掩码。运行下面的命令,替换${IP_ADDR}为正确的IP地址、${BROADCAST}为正确的广播地址以及${NETMASK}为正确的掩码:

root #ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up

使用route设置路由。替换${GATEWAY}为正确的网络IP地址:

root #route add default gw ${GATEWAY}

现在打开/etc/resolv.conf

root #nano -w /etc/resolv.conf

使用下面的模板填入名称服务器。确保替换${NAMESERVER1}${NAMESERVER2}为合适的名称服务器地址:

CODE 用于/etc/resolv.conf的默认模板
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

就是这样。现在通过ping一些互联网服务器(像Google)来测试网络。如果这个工作的话,再次恭喜。继续到准备磁盘