如果家裡有多台電腦要上網,使用 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