第六章 網路設定

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