第六章 网络设定

6.1 固接网络

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

6.1.1 使用 /stand/sysinstall

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

图 6-1

选择 Configure 进入,出现图 6-2:

图 6-2

接着选择 Networking 进入,进入图 6-3:

图 6-3

接着选第一个 Interfaces,出现图 6-4:

图 6-4

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

图 6-5

我们要先知道我们的 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.2,Netmask 也就是子网络就输入 255.255.0.0。接着按 OK 离开就完成了,它会问你是否用立即使用新的网络设定,回答是就会立即更新网络设定了,接着就可以离开程序了。

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

6.1.2 手动设定

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

# 预设的通讯网关 (Gateway)
defaultrouter="140.115.1.254"
#Host,机器的Domain Name
hostname="www.ba.ncu.edu.tw"
#网络卡代号是 vr0,设定 IP为 140.115.75.2,
#子网掩码为 255.255.0.0
ifconfig_vr0="inet 140.115.75.2 netmask 255.255.0.0"

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

#网域(domain)
domain ba.ncu.edu.tw
#DNS服务器地址
nameserver 140.115.1.31

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

# ifconfig vr0 down
# ifconfig vr0 140.115.75.2 netmask 255.255.255.0
# ifconfig vr0 up

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

# route add default 140.115.1.254

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

# ping 168.95.1.1

6.2 ADSL

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

在这一部份我们将说明如何将 FreeBSD 使用 ADSL 连上网络,并拥有 NAT 功能。如果您只有 FreeBSD 要上网,你只需要使用一张网络卡,再加上下列关于 PPPoE 的设定即可。如果你有多台计算机要经由 FreeBSD 上网,除了 ADSL 的设定外,还要再加上 NAT 的设定。你必须准备二张网络卡,一张连接到 ADSL Modem,另一张连接到局域网络的 Hub。

6.2.1 编译核心

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

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

#NAT 方面(如果不使用NAT可以不加)
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT

接着请参考第四章来重新编译核心。

6.2.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:vr0:
   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

完成后即可存档离开。

6.2.3 修改 /etc/rc.conf

再来是修改 /etc/rc.conf,在这里我们一样是以 vr0 为连接到 ADSL 的网络卡代号,以 vr1 为连接到局域网络的网络卡代号(如果没有要使用 NAT 则可以不必设定),请记得要修改成你的网络卡代号。 然后请在 /etc/rc.conf 中加入下列几行:

# /etc/rc.conf
#设定自动选择联机装置
network_interfaces="auto"
ifconfig_vr0="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"
defaultrouter="10.0.0.1"
gateway_enable="YES"

#以下的设定如果不使用 NAT 则可省略
ifconfig_vr1="inet 192.168.0.1  netmask 255.255.255.0"
firewall_enable="YES"
firewall_type="OPEN"
natd_interface="vr0"
natd_enable="YES"

#end of  /etc/rc.conf

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

# ppp -background pppoe

6.2.4 分享网络联机

如果我们要将 FreeBSD 的网络联机分享给家中其它计算机使用,除了上述的 NAT 设定外,在其它计算机还要再做一些设定。首先,我们的网络架构应该如图 6-6 所示:

图 6-6

在客户端其它的计算机设定方面,我们必须将其它计算机的 IP 设定为 192.168.0.X、子网掩码是 255.255.255.0,gateway 设定为 FreeBSD 连到局域网络的网络卡 IP,在此范例中是 192.168.0.1。然后再设定 DNS 为您 ISP 的 DNS,以 Hinet 而言是 168.95.1.1。

完成上述的设定后,我们就能享受以 FreeBSD 为联机分享器快速上网了。

6.3 Cable Modem

如果你是使用 Cable Modem 来连上网络,你只需经由 DHCP 动态取得 IP 即可。同样的,你也可以和 ADSL 一样将 Cable Modem 的网络联机分享给家中其它计算机使用。分享的方式也是经由 NAT。在这里我们将以 vr0 为连向 Cable Modem 的网络卡代号,而以 vr1 为连接局域网络的网卡代号。

6.3.1 核心设定

首先,你应该确定开机时已经有抓到网络卡了,如果没有请重新编译核心。而且为了使用 DHCP,原本核心设定中的 "device bpf" (不可以删除喔,在 FreeBSD 4.x 是 pseudo-device bpf)。如果您要将网络分享给家中其它计算机使用,必须在核心中加入下列设定:

#NAT 方面(如果不使用NAT可以不加)
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT

如果您修改了核心设定,同样的请参考第四章重新编译核心。

如果您使用的是 FreeBSD 4.x,请先检查一下 /dev 中是否有 bpf* 的档案,如果没有,请执行下列指令以建立:

# cd /dev
# ./MAKEDEV bpf0 bpf1 bpf2 bpf3

6.3.2 设定/etc/rc.conf

首先,将网络卡和 Cable Modem 连接好,假设网络卡代号是 vr0。我们先执行下列指令来连接到 internet:

# dhclient vr0

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

vr0: 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 中加入下列设定:

# Cable Modem的设定
ifconfig_vr0="DHCP"

#以下的设定如果不使用 NAT 则可省略
ifconfig_vr1="inet 192.168.0.1  netmask 255.255.255.0"
gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_interface="vr0"
natd_enable="YES"

完成上面的步骤就可以重新开机使用 Cable Modem 上网了。

6.3.3 联机分享

如果你要将 FreeBSD 的网络联机分享给家中其它计算机使用,除了上述的 NAT 设定外,在其它计算机还要再做一些设定。首先,你的网络架构应该如图 6-7 所示:

图 6-7

接着,在其它的计算机经由 FreeBSD 上网的计算机设定方面,我们必须将其它计算机的 IP 设定为 192.168.0.X、子网掩码是 255.255.255.0,gateway 设定为 FreeBSD 连到局域网络的网络卡 IP,在此范例中是 192.168.0.1。然后再设定 DNS 为您 ISP 的 DNS。

完成上述的设定后,就能享受以 FreeBSD 为联机分享器使用 Cable modem 快速上网了。

6.4 Modem 拨接

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

6.4.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

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

6.4.2 编辑 /etc/ppp.linkup

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

hinet:
      delete ALL
      add 0 0 HISADDR

存盘离开,现在可以使用指令 ppp hinet 来拨接了。

6.4.3 网络分享

如果你希望将 modem 的联机分享给其它区网中的计算机使用,您必须要有一张网络卡连到局域网络中。并设定其 IP 为 192.168.0.1、子网掩码为 255.255.255.0。在区网中的其它计算机要将 gateway 设定为 192.168.0.1,IP就设定为 192.168.0.2,子网掩码为 255.255.255.0。接着在 FreeBSD 中使用下列指令来拨号,就可以了:

# ppp -nat hinet

6.5 网络相关指令

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

6.5.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

6.5.2 ftp

FreeBSD 中也有提供命令列的 ftp 工具,如果你要连到 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> 观看文字文件内容

6.5.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

6.5.4 nslookup

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

$ nslookup 216.136.204.21
$ nslookup www.freebsd.org

6.5.5 netstat

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

参数:

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

$ netstat -a
$ netstat -ni

6.5.6 traceroute

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

使用方法:

$ traceroute www.freebsd.org

6.5.7 sockstat

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

6.5.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

6.5.9 tcpdump

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

6.5.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.22.zip,可以使用下列指令来下载它,并存成 apache.zip 这个档名:

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