第五章 網路設定
幾乎所有電腦都必須要有網路才有樂趣,了解網路的使用是讓 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 位址是由 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 及防火牆」一章的說明。
|
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 後,隔天您就可以查看看您所設定的網域名稱是否有生效,您可以在 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.
|
依照規定,未滿一個 Class C 的 IP 反解必需由 ISP 設定,如果您使用的是非固定式 ADSL,並有一個固定 IP,可以上您 ISP 的網站免費申請 IP 反解。以 Hinet 為例,您可以到 http://hidomain.hinet.net/rever.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