第五章 网络设定

几乎所有计算机都必须要有网络才有乐趣,了解网络的使用是让 FreeBSD 迈向世界的第一步。本章将介绍如何在 FreeBSD 使用网络,读完本章后,您将了解下列网络相关的主题:

5.1 网络概念介绍

现在的计算机大部份都需要连上网络,如果您想要使用 FreeBSD 来架站,自然一定要让 FreeBSD 连上网络。在说明如何进行 FreeBSD 网络设定前,我们先来介绍一些网络基本概念及名词解释,这些概念都是我们在架设服务器时常会用到的喔。

5.1.1 IP 地址与子网掩码

IP 地址

IP (Internet Protocol) 地址就好像是计算机的地址一样,在因特网世界中,计算机必须使用 IP 做为通讯识别。当计算机要传送信息给另一台计算机时,必须指定 IP 地址才能正确地将信息送达。IP 地址在系统中是一个 32 位的数字,但我们一般看到的格式大多是以 4 个 8 位 (8-bit, 又称字节) 所组成的数字。为了方便人类读写,这 4 个字节中,每一个字节会被转换成一个十进制的数字,转换之后,它的范围是 0 到 255。下表中即是一个我们常见的 IP 地址转换成 32 位数字的范例:

以十进制加 . 的方式表示 二进制表示
140.115.75.5 10001100  01110011  01001011  00000101

您可以看到,140 这个数字的二进制是 10001100,115 的二进制是 01110011。计算机是 0 与 1 的世界,所以计算机中存放的都是 0 和 1,一个 bit 只能存一个 0 或 1。在表示数字时,计算机其实是将数字存成二进制,而 32 bits 表示计算机使用 32 个 0/1 来存放数字。十进制的数字 2 会被表示成 10、数字 3 是 11、十进制的 4 是 100、5 是 101。我们以 115 这个数字为例,十进制的 115 以二进制来表示是 01110011,二进制转换的方式是:

图 5-1

小提示

以上的 IP 地址是使用 IPv4,因此只有 4 个字节的长度。但由于 IP 渐渐不足,所以目前有新的标准是 IPv6,IPv6 有 16 个字节。虽然大多数的操作系统都已支持 IPv6,但 IPv6 还不普及,目前因特网还是使用 IPv4。

所有的 IP 地址是由 IANA (Internet Assigned Numbers Authority) 组织授权给各地区的单位分派,在台湾则是由 TWNIC (http://www.twnic.net.tw) 所管理。IP 地址可以区分为 A、B、C 三个等级,分别说明如下:

为什么我要说是「理论上」呢?因为有些 IP 地址另有特殊用途。譬如说,A级范围内,127.x.x.x 是用来做 loopback 的(习惯上,大部份系统都指定 127.0.0.1 为 loopback 地址,如果您打指令 ifconfig lo0,您也会看到 127.0.0.1 这个 IP),所以实际上能用的A级地址就减少了。另外,以 Class C 为例,如果有一个 Class C 是 210.202.102.x,则 210.202.102.0 是 Network ID,代表网络本身,而 210.202.102.255 是用来做为网络广播,这些 IP 都不可以用在计算机的 IP 上。

可想而知,如果每世界上每一台计算机都需要一个 IP,IPv4 的 IP 一定不够用。所以除了一般可以在 Internet 上使用的 IP 之外,还有所谓的 Private IP Address (私有 IP),这些 IP 不得出现在公众网络上,但却可以用在私有的 Intranet 中。RFC 1597 所定义的私有 IP 范围如下:

上述这些 IP 就是我们可以在自行拿来在 Intranet 中使用的 IP。如果您没有分配到足够的 IP 地址,您可以在公司或家中使用这些 IP,再透过 NAT (Network Address Transation) 让家中使用私有 IP 的计算机透过一台拥有真实 IP 的计算机连上 Internet。关于 NAT 的设定及说明,我们会在「NAT 及防火墙」一章中说明。

子网掩码

IP 地址可以分为二个部份,一个是由 IANA 或 TWNIC 或 ISP 所分派的固定部份,称之为 Network ID,以及可以自行运用的部份,称之为 Host ID。例如,以 140.115.x.x 为例,140.115 就是 Network ID。然而,为了让计算机可以判断出 IP 地址的 Network ID 及 Host ID,必须靠子网掩码 (Subnet Mask) 的帮忙。

因为每个网络都可以再切割为更小的子网络,例如,中央大学的网络是 140.115.x.x,而中央企管可以使用 140.115.75.x 这个子网络。以整个中央大学而言,它的 Network ID 是 140.115,而中央企管的 Network ID 是 140.115.75。因为中大的前二个字节是 Network ID,所以子网掩码的前二个字节要设成 255,而最后二个字节为 Host ID,则子网掩码设为 0。因此,IP 地址为 140.115.x.x 的子网掩码为 255.255.0.0,而 140.115.75.x 的子网掩码为 255.255.255.0。

简而言之,子网掩码就是将所有和 Network ID 同一个字段的位都设成 1,所有和 Host ID 同字段的位都设成 0。

Class 二进制的子网掩码 子网掩码
Class A 11111111 00000000 00000000 00000000 255.0.0.0
Class B 11111111 11111111 00000000 00000000 255.255.0.0
Class C 11111111 11111111 11111111 00000000 255.255.255.0

当我们在表示一个子网络时,我们可以使用 140.115.0.0/255.255.0.0 来表示。然而,我们也常看到另一种表示方式:140.115.0.0/16。16 的意思是子网掩码中,高位的部份有 16 个 1。以上表中各个子网掩码为例,我们可以表示为:

Class 二进制的子网掩码 子网掩码
Class A 11111111 00000000 00000000 00000000 /8
Class B 11111111 11111111 00000000 00000000 /16
Class C 11111111 11111111 11111111 00000000 /24

那么计算机又是如何从一个 IP 及子网掩码判断出 Network ID 的呢?计算机会将 IP 和 Netmask 做 AND 运算,运算结果就是 Network ID,如下表中所示:

IP (140.115.75.5) 10001100 01110011 01001011 00000101
Netmask (255.255.255.0) 11111111 11111111 00000000 00000000
Network ID (140.115.0.0) 10001100 01110011 00000000 00000000

切割网络

我们可以利用子网掩码将 Class A、B、C 再细切为更小的子网络。例如,台湾的 ISP 会将网络切割成每个子网络 8 个 IP,再分派给客户。以笔者的公司为例,我所得到的 IP 范围是 210.202.102.128 ~ 210.202.102.135,这就是将一个 Class C 切割成 32 个子网络。在这个例子中,Network ID 就是整个网络范围的第一个 IP,也就是 210.202.102.128,由下表得知,因为这个 Network ID 中,前 29 个 bits 都是固定的,所以子网掩码是 255.255.255.248。我们可以使用 210.202.102.128/255.255.255.248 或是 210.202.102.128/29 来表示这个子网络。

Network ID (210.202.102.128) 11010010 11001010 01100110 10000000
Max IP (210.202.102.135) 11010010 11001010 01100110 10000111
Netmask (255.255.255.248) 11111111 11111111 11111111 11111000

虽然笔者被分配到 8 个 IP,但是第一个 IP 210.202.102.128 是用来表示整个网络,而 210.202.102.135 则是用来做此子网络广播使用。因此,实际可用 IP 只有 6 个,也就是 210.202.102.129 ~ 210.202.102.134。不过 210.202.102.134 会被拿来做 ADSL router 使用,所以真正可以用的 IP 只有 5 个。

如果我们来看一个被切割成 8 个子网络的 Class C 192.168.5.x,每个子网络会有 32 个 IP,Netmask 是 255.255.255.224 或 /27:

IP 范围 Network ID Host ID
192.168.5.0 ~ 192.168.5.31 192.168.5.0 0~31
192.168.5.32 ~ 192.168.5.63 192.168.5.32 32~63
192.168.5.64 ~ 192.168.5.95 192.168.5.64 64~95
192.168.5.96 ~ 192.168.5.127 192.168.5.96 96~127
192.168.5.128 ~ 192.168.5.159 192.168.5.128 128~159
192.168.5.160 ~ 192.168.5.191 192.168.5.160 160~191
192.168.5.192 ~ 192.168.5.223 192.168.5.192 192~223
192.168.5.224 ~ 192.168.5.255 192.168.5.224 224~255

私有 IP 范围

一般 ISP 所分配的 IP 都可以让我们在因特网上使用,但如果您没有要在因特网上使用,只是要在公司或家中架设内部局域网络,我们可以使用私有 IP (Private IP)。私有 IP 是 RFC 1981 所定义的私人 IP,这些 IP 不能够直接在因特网中出现,只能在局域网络中使用。如果您想在公司或家中架设内部使用的服务器,您可以区网中的计算机 IP 设为下列范围之一:

Class 范围 子网掩码 网域
Class A 10.0.0.0 ~ 10.255.255.255 255.0.0.0 10/8
Class B 172.16.0.0 ~ 172.31.255.255 255.255.0.0 172.16/12
Class C 192.168.0.0 ~ 192.168.255.255 255.255.255.0 192.168/16

例如,你家中有三台计算机,可以分别设定 IP 为 192.168.0.1、192.168.0.2、192.168.0.3。

私有 IP 不可以在因特网中使用,如果这些设定为私有 IP 的计算机有连上因特网的需求,则必需经由 NAT 服务器的转换,将它们伪装成是由 NAT 服务器连向外部网络。详细 NAT 服务器的设定请参考本书「NAT 及防火墙」一章的说明。

小提示

看得头晕眼花了吗?没关系,本节的重点在于了解 IP 地址和子网络的关系。您只要了解子网掩码 255.255.255.0 也可以使用 /24 表示 (因为一个 255 有 8 个 1,三个 255 就是 24)。其它的细节等您有需要时再来参考即可。

5.1.2 申请 ADSL/Cable  的选择

随着国内固网开放,有越来越多的厂商提供宽频上网服务。然而,各家厂商竞争激烈,纷纷提出各种网络方案,在众多方案中,如何有效益地选择适合自己的方案呢?

如果您要使用 FreeBSD 来架站,第一个要考量的自然是上传频宽必须足够。就算流量不大,上传频宽在 512 K 以上是最基本的要求。如果您主要需要的是以 FreeBSD 做为 NAT 服务器来提供频宽共享,则下传的频宽也要注意。

现在比较少听到有人使用 Cable 宽频,一方面 Cable 的频宽会因同一条线路上的用户多寡而影响连品质,另一方面它的普及度也不是太高,但部份地区的 Cable 还是有不错的联机品质。使用 Cable 大致上可以分为固定 IP 及 DHCP 二种,如果您需要架站,则固定 IP 会比较方便。

目前宽频还是以 ADSL 为主,各家 ISP 提供的方案很多,您可以比较一下价格及速度,来决定要使用何种方案。目前主要方案可以分成二大类:固定式及非固定式。固定式的 ADSL 指的是 ISP 会提供固定 IP 给您,您无须透过 PPPoE 或 DHCP 来取得 IP。而非固定式的 ADSL 通常须以 PPPoE 或 DHCP 来取得 IP,而这个 IP 可能是不变的,也有可能每次取得的 IP 都不一样。我们详细的将各方案分类如下:

固定式 ADSL

非固定式 ADSL

在价格上,固定式的 ADSL 会比非固定式的贵二倍之多,而固定 IP 越多则越贵。以个人或小公司而言,选择有固定 IP 的 ADSL 是比较合乎效益的做法。

另外,在频宽上,目前比较广泛使用的频宽有 1M/64K、2M/256K、2M/512K、8M/640K、12M/1M 等。如果您要架站,建议您使用上传频宽 512K 以上的速率。不过 8M/640K 及 12M/1M 必须由您所在位置和 ISP 机房的距离来决定是否可以申装。笔者的个人网站就是使用 8M/640K 的 ADSL,速度上还算不错,这个速度对于 50 人以下的公司也是绰绰有余。

理论上固定式的联机品质会比非固定式好,不过以笔者实际使用的结果差异并不大。笔者公司使用固定式双向 512K 的 ADSL,由于下载频宽不如 8M/512 非固定式,所以速度上慢很多,而且价格比较贵。目前许多 ISP 的 8M/512K 都比 2M/512K 还便宜,您可以自行评估一下再决定要使用何种速率。

5.1.3 申请网域名称

如果您要架站,一定会需要一个网域名称 (Domain name),例如笔者的网域有 alexwang.com、twbsd.org 等。有了网域名称,可以让人使用更容易记得的方式连到您的服务器。

申请网域名称

申请网域名称十分容易,如果您要申请的网域名称是 .tw 结尾,如 xxx.com.tw、xxx.org.tw、xxx.idv.tw 等,您必须上 TWNIC (http://www.twnic.net.tw) 所授权的网站申请,您可以到 TWNIC 去查询申请方式。如果您要申请的是 .com.tw 或 .org.tw,您必须准 备公司或组织的登记证;而 .idv.tw 是给个人使用,只要准备身份证字号即可,其费用为每年新台币 $450 元。

如果您要申请的是 .com、.net、.org 等,您可以上 YAHOO! (http://domains.yahoo.com) 申请,费用大约为每年美金 $9.95。申请 .com、.org、.net 等十分容易,只要按网页上的说明填入数据,花个五分钟就可以完成,不过您必须要有信用卡喔。

在申请完网域名称后,必须填入二台负责管理您网域的 DNS 服务器 IP,您可以自己架以二台 DNS 服务器,或是交由申请单位代管。为什么要有 DNS 服务器管理您的网域名称呢?因为我们申请到的网域名称可能是 twbsd.org,如果我们希望将 www.twbsd.org 对映到 61.23.21.11 这个 IP,则必须在 DNS 服务器中加入这个信息。同样的,我们可能会有 ftp.twbsd.org、mail.twbsd.org、bbs.twbsd.org 等等设定,都必须由 DNS 服务器代为管理网域名称和 IP 的正解。

TWNIC 可以代为管理 DNS,但数量有限,最多只有三个,而且没有邮件服务器用的 MX (请参考本书 DNS 服务器一章的说明)。如果您在 YAHOO! 申请网域名称,YAHOO 可以帮您管理很多的 DNS 设定,您就不需要自行架设 DNS 服务器了。所以我个人比较偏好由 YAHOO 申请,便宜又方便。

小提示

申请完网域或是您有更动网域及 IP 的对映后,必须经过 24 小时才会有作用。因为 DNS 必须经过一段时间才会在整个网络上生效。

申请完网域并设定好您的 IP 后,隔天您就可以查看看您所设定的网域名称是否有生效,您可以在 FreeBSD 或是 Windows 中使用下列指令:

# nslookup www.twbsd.org
Server:         168.95.192.1
Address:        168.95.192.1#53

www.twbsd.org   canonical name = twbsd.org.
Name:   twbsd.org
Address: 220.132.178.72

您可以看到当我们使用 nslookup 这个指令去查 www.twbsd.org 时,它所对映到的 IP 是 220.132.178.72。如果您的查询失败,表示您的设定有问题或是该设定尚未生效。

申请 IP 反解

在设定完网域对映到 IP 的正解后,如果您有固定 IP,我们还要设定将固定 IP 转换为网域名称的正解。尤其当您要架设邮件服务器时,如果没有 IP 反解,可能会被退信。以笔者的网域为例,我设定了 twbsd.org 对映到 IP 220.132.178.72,接下来要设定让使用者从 220.132.178.72 可以反查到 twbsd.org。

# nslookup 220.132.178.72
Server:         168.95.192.1
Address:        168.95.192.1#53

72.178.132.220.in-addr.arpa     name = twbsd.org.
小提示

我们可以设定多个网域名称对映到同一个 IP,但一个 IP 只能对映到一个网域名称。例如,我设定 www.alexwang.com、alexwang.com、www.twbsd.org、twbsd.org 都对映到 220.132.178.72 这个 IP。但反查时,IP 只能对映到 twbsd.org。

依照规定,未满一个 Class C 的 IP 反解必需由 ISP 设定,如果您使用的是非固定式 ADSL,并有一个固定 IP,可以上您 ISP 的网站免费申请 IP 反解。以 Hinet 为例,您可以到 http://hidomain.hinet.net/reexp.html 进行 IP 反解的申请。当您连到 Hinet 申请的页面时,您会看到下列画面:

图 5-2

您必须在「配发之 IP addrsss」中填入您的 IP,并在「用户之 Domain Name」中填入您的网域名称,如果您要将 IP 反解设为 www.example.com,则在「用户之 Domai Name」中要填 example.com。接着最重要的是「IP 及 Host」,如果您的 IP 是 11.22.33.44,并要对应到 www.example.com,则要填入「44 IN PTR www.example.comf」。

如果您有多个 IP 要设定反解,您可以按最上方的参考范例,如图 5-3 所示:

图 5-3

申请动态 DNS

如果您不想花钱申请网域名称,或者您没有固定 IP,我们可以使用网络上提供的免费 DNS,例如 www.dyndns.org。我们可以申请一个类似 xxx.dyndns.org 的网域名称,只要到该网站注册申请即可。在连到该网站后,请先按「Sign Up Now」:

图 5-4

接下来,请依序填入您的数据并按「Create Account」送出资料,如图 5-5 所示:

图 5-5

接着您就可以到所设定的信箱收信,收到信后,请按下信内容中确认的连结,之后再到 www.dyndns.org 登入:

图 5-6

登入后,请选择「Services」,进入 Service 页面后再选择 「Dynamic DNS」,如图 5-7 所示:

图 5-7

接着请进入「Add Dynamic DNS」:

图 5-8

进入后,您就可以填入您想要名称,例如,我们要申请 twbsd.dyndns.org,则先填入 twbsd 后,再用下接选单选择 dynnas.org,然后请在「IP Address」中输入您的服务器 IP,最后按下「Add Host」即可完成。

图 5-9

申请完 DDNS 后,您就拥有一个免费的网域名称了。由于申请时我们已经设定好主机和 IP 的对映,所以您应该可以使用该名称连到您的服务器了。如果您没有固定 IP,在每次 IP 更动时,我们都必须连到 DynDNS 做设定,这样太麻烦了。还好我们可以在 FreeBSD 中安装一套工具,让它自动帮我们做更新 IP 的动作。

请到 Port 中安装 ddup 这支程序:

# cd /usr/ports/dns/ddup
# make install

安装完后,请执行下列指令产生设定文件:

# /usr/local/sbin/ddup --makeconf
Please enter your user name:
your_account
Please enter your password:
your_password
your_account:your_password
OK..now you need to enter the users who can use ddup:
Seperate the users with a , ie. root,test,this,that
root

最后请执行下列指令,系统即会自动取得您的 IP,并更新网域及 IP 的对映,请将下列 your_domain.dyndns.org 换成您所申请的名称:

# /usr/local/sbin/ddupcron.sh your_domain.dyndns.org

最后,我们将上面这一行指令放在 crontab 中,让系统每 5 分钟检查一次,如果 IP 有更动,即立刻更新。请编辑 /etc/crontab 这个档,并加入下列这一行:

*/5 * * * *  root  /usr/local/sbin/ddupcron.sh your_domain.dyndns.org

5.2 固接网络

如果您的网络连结方式是固接网络,如学校的宿网、固接式 ADSL、固接式 Cable,恭喜你,这种设定最简单,而且你的联机速度应该令人羡慕。值得注意的是,有些 ADSL 业者虽然号称享有固定 IP,但您并不可以使用本节所使用的设定方式,而必须以一般非固接的 ADSL 设定方法。本节所介绍的固接网络指的是只要设定好 IP、通讯闸即可上连上网络,这样的网络设定可以经由下列任一方式达成:

5.2.1 使用 sysinstall

请以 root 身份,执行 sysinstall 进入安装时的画面。

图 5-10

选择 Configure 进入,出现图 5-11:

图 5-11

接着选择 Networking 进入,进入图 5-12:

图 5-12

接着选第一个 Interfaces,出现图 5-13:

图 5-13

上图中的 fxp0 即是您的网络卡,fxp0 可能会因为网络卡的不同而有不同的代号,如 ed0、vr0 等。如果有多张网络卡,还会有 ed1、vr1、fxp1等。通常第一个就是网络卡,而 lp0、sl0 及 ppp0 都不是。选择您想要设定的网络卡后按空格键进入,程序会先问是否要使用IPv6,回答否。接着会问您是否要使用 DHCP,视您的网络决定,如果不是动态取得 IP 的话,拥有固定 IP 就不要使用 DHCP。接着会出现图 5-14:

图 5-14

我们要先知道我们的 Domain Name 及 IP 等,如果没有 Domain Name 的话,就随便输入吧。假设我们的机器 www.mydomain.com ,Host 一栏中就输入 www.mydomain.com,在 Domain 中就输入 mydomain.com。我的机器在中央大学,所以 Gateway 就输入 140.115.1.254,Name server 输入 140.115.1.31,IPv4 Address 就输入我的 IP 也就是 140.115.75.1,Netmask 也就是子网络就输入 255.255.0.0。接着按 OK 离开就完成了,它会问你是否用立即使用新的网络设定,回答是就会立即更新网络设定了,接着就可以离开程序了。

虽然 sysinstall 有问我们是否要立即使用新的网络设定,但它不一定会立即更新设定,所以我们需要重新开机或是使用指令来将网络立刻更新。至于如何不重开机而更换 IP 设定,我们在下面手动设定时将提及。

5.2.2 手动设定

手动设定比用 sysinstall 设定还要快且简单。只要知道我们的网络卡代号、IP 、Netmask等资料就可以开始设定了。 您可以使用指令 dmesg | grep Ethernet 或是 ifconfig 去看网络卡代号为何。首先,为了在一开机即设定,必须在 /etc/rc.conf 中依你的数据加入下列几行:

# 预设的通讯网关 (Gateway)
defaultrouter="140.115.1.254"
#Host,机器的Domain Name
hostname="www.mydomain.com"
#网络卡代号是 fxp0,设定 IP为 140.115.75.2,
#子网掩码为 255.255.0.0
ifconfig_fxp0="inet 140.115.75.1 netmask 255.255.0.0"

接着编辑 /etc/resolv.conf,依您的数据加入下列几行:

#网域(domain)
domain mydomain.com
#DNS服务器地址
nameserver 140.115.1.31

以上资料都设定好了之后就可以重新开机使用新的设定了。或者你也可以使用下列指令来更新 IP。下面的指令中,网络卡代号为 fxp0,IP 是 140.115.75.1,子网掩码是 255.255.255.0。

# ifconfig fxp0 down
# ifconfig fxp0 140.115.75.1 netmask 255.255.255.0
# ifconfig fxp0 up

上述指令将立即更新网络卡信息,接着我们必须加入 gateway 的设定:

# route add default 140.115.1.254

现在您可以使用 ping 这个指令来查看网络是否正常运作:

# ping 168.95.1.1

如果您使用固定 IP,并想让家中网络的其它计算机透过本服务器上网,请参考「NAT 及防火墙」一章。

5.3 DHCP 动态取得 IP

如果您所处的网络环境中有 DHCP 服务器,那么您可以使用 DHCP 动态取得 IP 的方式连上网络。一般的 Cable Modem 通当是经由 DHCP 动态取得 IP,如果您的 Cable 是以 DHCP 联机的话也可以适用于本小节的设定说明。

首先,将网络卡和 Cable Modem 连接好,假设网络卡代号是 fxp0。我们先执行下列指令来试试看 DHCP 是否可以正常联机:

# dhclient fxp0

接着打 ifconfig fxp0,你应该可以看到下列画面:

fxp0: flags=8843 mtu 1500
inet6 fe80::250:baff:fe00:dcdd%vr0 prefixlen 64 scopeid 0x1
inet 61.58.76.14 netmask 0xffffff00 broadcast 61.58.76.255

上面画面中的 61.58.76.14 是我们动态取得的 IP,如果有出现 IP 就表示正常了。然后试一下可不可以 ping 到外面的网络:

# ping 216.136.204.21

都没问题后就可以开始编辑 /etc/rc.conf 了,请在 rc.conf 中加入下列设定:

ifconfig_fxp0="DHCP"

上面这一行表示要在开机时自动将网络卡 fxp0 设定使用 DHCP 联机。

5.4 ADSL

如果家里有多台计算机要上网,使用 FreeBSD 来做联机分享是一件很棒的事。ADSL 的拨号是使用 PPPoE (PPP over Ethernet) 的方式,由于拨接式 ADSL 只有一个 IP,因此家中其它的计算机必须使用保留 IP 再经由 FreeBSD 的 NAT (Network Address Translation) 功能来将保留 IP 转成可以在因特网上出现的 IP。关于 NAT 的设定,请参考「NAT 及防火墙」一章。

5.4.1 编译核心

如果您使用的是 FreeBSD 4.4-Release 以后的版本,您不需要修改核心设定就可以支持 PPPoE 了,因为当系统要求使用 PPPoE 时,会以动态的方式加载。如果使用的是 4.4 以前的版本,还是要加上关于 PPPoE 的设定。首先我们要先确定在核心中已经有加上网络卡的设定,也就是开机时已经有抓到网络卡了。接着请先在 kernel 设定档中加入下列几行:

# PPPoE 方面(FreeBSD 4.4-RELEASE 以后的版本不需加入下列三行)
options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET

接着请参考「编译核心」一章的说明来重新编译核心。

5.4.2 修改 /etc/ppp/ppp.conf

这里我们以 Hinet 的 ADSL 为范例说明,其它家的 ADSL 设定大都差不多。首先,将 /etc/ppp/ppp.conf 更名为 /etc/ppp/ppp.conf.old,更名的目的是只为了备份原本的设定档,您也可以直接删除它:

# mv /etc/ppp/ppp.conf /etc/ppp/ppp.conf.old

再来,使用文书编辑软件来新增并编辑 /etc/ppp/ppp.conf,加入下列的设定,请记得要修改下列设定中的 "set device PPPoE:---" 那一行,在那一行设定连接到 ADSL 的网络卡代号,范例中是使用 vr0 。接着要修改 authname 及 authkey 成为你的账号及密码。

# /etc/ppp/ppp.conf
default:
   set log Phase Chat LCP IPCP CCP tun command
   nat enable yes
   nat same_ports yes
   nat use_sockets yes
   set redial 15 28800
   set reconnect 15 28800

pppoe:
   set device PPPoE:fxp0:
   set mru 1492
   set mtu 1492
   set speed sync
   enable lqr
   set lqrperiod 5
   set cd 5
   set dial
   set login
   set timeout 0
   set authname b1xxxxxx@hinet.net
   set authkey yourpassword
   set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
   add default HISADDR
   enable dns
# end of ppp configuration

完成后即可存档离开。

5.4.3 修改 /etc/rc.conf

再来是修改 /etc/rc.conf,在这里我们一样是以 fxp0 为连接到 ADSL 的网络卡代号,请记得要修改成你的网络卡代号。 然后请在 /etc/rc.conf 中加入下列几行:

# /etc/rc.conf
#设定自动选择联机装置
network_interfaces="auto"
ifconfig_fxp0="inet 10.0.0.1 netmask 255.0.0.0 -arp up"
#一开机就执行 PPPoE(建议)
ppp_enable="YES"

#ddial 表示只要断线便自动联机(建议),或设 auto 表示有数据要
#出去则自动联机,也可以设为 background 只连一次后放到背景
ppp_mode="ddial"
ppp_profile="pppoe"

#end of  /etc/rc.conf

完成了上述步骤之后,就可以重新开机以启动 PPPoE了。如果您在 /etc/rc.conf 中并未设定一开机就自动联机的话,可以在重开机之后使用以下的指令来连上 internet:

# ppp -background pppoe

请注意,我们在 ifconfig_fxp0 的项目中,有设定「-arp」,该项目的意思是不要使用 Ethernet 的网络卡地址方式。由于 PPPoE 的网络适配卡只会用来连接 Internet,我们可以将它的 ARP 功能取消,以提升效能。但是如果您只有一个网络卡,同时连接 Internet 及 Ethernet,则不可以加上该项目,否则在联机内部网络时会有问题。

5.5 Modem 拨接

如果你是使用 modem 拨接上网的话,你同样可以在 FreeBSD 中设定。只要是用需要拨接的联机方式,都是使用 PPP 来连接。而且就算使用 modem 拨接一样可以分享给局域网络中其它计算机使用。

5.5.1 编辑 /etc/ppp/ppp.conf

这里我们以 Hinet 为例加以说明。首先,先将原本的 ppp.conf 更名为 ppp.conf.old, 再编辑 /etc/ppp/ppp.conf,如下:

default:
   set log phase chat connect LCP IPCP CCP tun command

   #设定使用哪一个 com,com1 是 cuaa0、com2 是 cuaa1
   set device /dev/cuaa1
   set speed 115200
   deny lqr
   set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" \
   AT OK-AT-OK ATE1Q0 OK\\dATDT\\T TIMEOUT 40 CONNECT"

hinet:
   set openmode active

   #设定拨接的号码
   set phone 4125678

   # 设定共拨3次,每次隔5秒
   set redial 5 3

   #设定闲置几秒就自动断线,0表示不会自动断线
   set timeout 1200

   #设定可以使用 ppp 的系统使用者账号
   allow users xxx
   deny chap
   disable chap
   accept pap

   #Hinet 的拨接账号 xxxx
   set authname xxxx

   #Hinet 的拨接密码 xxxx
   set authkey xxxx
   set ifaddr 10.1.1.1/0 10.2.2.2/0

设定完后存档离开进入下一个步骤。

5.5.2 编辑 /etc/ppp.linkup

接着编辑 /etc/ppp.linkup 如下:

hinet:
      delete ALL
      add 0 0 HISADDR

存盘离开,现在可以使用下列指令来拨接:

# ppp -backgroud hinet

如果您希望让 modem 联机分享给其它区网中的计算机使用,您可以使用下列指令来拨号:

# ppp -nat -backgroud hinet

5.6 网络相关指令

这里我们将介绍一些常用到的网络相关指令,如果你想知道更多、更详细的指令,请参考指令应用篇,或使用指令 man 来查询相关使用方法。在这里我们的目的只是告诉你有这些工具可以使用,并未针对每一个指令作详细的使用方法说明,你应该使用 man 来查询该指令更完整的参数。我只列出较常用的几个方法。

5.6.1 telnet

大家都知道这个指令吧!如果你要联机到别台 UNIX 主机或是连到 BBS,就使用 telnet 这个指令。例如,要telnet 到 sparc20.cc.ncu.edu.tw 这台机器:

$ telnet sparc20.cc.ncu.edu.tw

如果你在登入时想离开,可以按 CTRL+] 回到自己的主机,再打 quit 离开 telnet。

如果你在 telnet 时想输入中文的话,必须加入参数 -8:

$ telnet -8 bbs.ba.mgt.ncu.edu.tw

5.6.2 ftp

FreeBSD 中也有提供命令列的 ftp client 工具,如果你要连到 freebsd.csie.nctu.edu.tw 这台机器的话:

$ ftp freebsd.csie.ncu.edu.tw

允许昵登入的 ftp 主机,账号只要输入 anonymous 或 ftp 即可,密码可以随便输入,或者在 ftp 指令之后加上参数 -a 即可自动以昵名登入。进入 ftp 站台后,你可以使用下列指令:

? 列出所有指令。
ls 查看所在目录的档案,使用方法和在 FreeBSD 机器中一样。
cd 进入某一个目录,如 cd pub
get <filename> 取回某一个档案,如 get ve-1.0.tgz
reget <filename> 续传某一档案。
put <filename> 上传档案,如 put homework01.zip
send <filename> 上传档案,和 put 一样。
size <filename> 查看档案大小。
less <filename> 观看文字文件内容

5.6.3 ping

送出 ICMP 封包,用以查看网络上主机的联机状况。

$ ping 216.136.204.21

你也可以加入以下的参数:

-c count 只计算 count 次。
-s size 不使用预设的 64 bytes 当作封包大小,而改用新的 size。

$ ping -c 10 -s 108 216.136.204.21

5.6.4 nslookup

查询网络主机信息。此指令可以用来查询网络主机的 Domain name,或以 Domain name 反查 IP 地址。

$ nslookup 216.136.204.21
$ nslookup www.freebsd.org

5.6.5 netstat

显示网络状况。可以用来看网络的组态及各项服务的情形。

参数:

-a 显示所有信息
-n 以 number 方式显示 IP 地址
-i 显示网络接口

$ netstat -a
$ netstat -ni

5.6.6 traceroute

追踪网络路径,用这个指令,你可以知道从你的主机到某一台主机的过程中经过了哪些机器。

使用方法:

$ traceroute www.freebsd.org

5.6.7 sockstat

查看主机 internet 或 domain socket。你可以用来查询有谁连到你的机器中,由哪一个网络服务接收,该网络服务的 PID 是多少等。还可以查询本机开放了哪些 port、提供了哪些服务。

5.6.8 ifconfig

设定或检查网络接口,ifconfig 可以用来设定你的网络卡,显示网络接口的信息。

参数:

-a 详细显示所有接口
-u 显示目前使用中的装置
interface 显示该interface 的信息,此 interface 为你的网络卡代号或其它代号。
down 停用某一装置
up 启用某一装置

$ ifconfig -a		显示所有接口的信息
$ ifconfig vr0		显示网络卡 vr0 的信息
$ ifconfig vr0 down	停用网络卡 vr0
$ ifconfig vr0 192.168.0.1netmask 255.255.255.0	设定网络卡 vr0 的 ip
$ ifconfig vr0 up		启用网络卡 vr0

5.6.9 tcpdump

列出所有到达本机的 tcp 封包。

5.6.10 lynx

文字浏览器。这并不是 FreeBSD 内定的指令,所以必须先使用 port 安装:

# cd /usr/ports/www/lynx
# make install clean

安装完就可以使用 lynx 来上网浏览网页:

$ lynx www.freebsd.org

我们也可以使用 lynx 来下载网页上的档案。例如,我们要档案位置是 http://www.apache.org/dist/httpd/apache_1.3.33.zip,可以使用下列指令来下载它,并存成 apache.zip 这个档名:

$ lynx -dump http://www.apache.org/dist/httpd/apache_1.3.33.zip > apache.zip