精華區beta FreeBSD 關於我們 聯絡資訊
◇ [HOW-TO] 架設 PPP/PAP Server --------------------------------------------------------------------------------發信人: [email protected] (張清芳.花雨夜), 看板: BSD 標 題: [HOW-TO] 架設 PPP/PAP Server 發信站: 小魚的紫色花園 (Wed Sep 30 01:07:37 1998) fpg.m4.ntu.edu.tw 轉信站: Maxwell!bbs.ee.ntu!news.ntu!fpg [HOW-TO] 架設 PPP/PAP Server -- 使用 /usr/sbin/ppp Version 1.0 98/09/30 ◎前言 本月初開始想玩玩 PPP Server 的設定,不過發現中文的資料並不是很多,手邊一 些資料都是蠻早期的,現在可用更快的方法來做同樣的事兒。看了一大堆的Man Page, 也遇到過許多問題,靠著網友們和自已的毅力大致上都解決了,所以決定寫一篇簡短 的 Install Note,讓想架 PPP Server 的 FreeBSD 愛用者能夠在最短的時間內找到頭 緒,而遇到挫折時,至少有個頭緒...... 這篇文章所用到的應用軟體都是 FreeBSD 的內部指令而已,並不需要另行安裝什麼 Package。不過這些相關指令用法我也不是全然都懂,只是略知一二,能讓 PPP Server 動起來而已,詳細的機制由於小弟的才疏學淺可能並未詳細說明,還請見諒。 您應該已經注意到我的標題是利用 /usr/sbin/ppp 這個程式來做 PPP/PAP Server ,不過/usr/sbin/pppd 也可以做喲,只是小弟第一個看的文件就是 ppp(8),而非 pppd(8),加上現在已開學,功課甚重,暫時是抽不出時間研究 pppd 的用法,不過我想 是大同小異喔!!也歡迎利用 pppd 的網友們貼出您的設定吧 :) 這篇文章難免有錯誤和疏漏的地方,如果您對本文章有任何的建議或是指正及補充 可以直接在板上討論,也非常歡迎您直接寄信給我 [email protected]。 本文件的版權基本上是由 [email protected] 所有,不過您可以轉貼於 任何 Internet 媒體,還請記得留下小弟的大名啦:) 我也希望本文件不要出現在營利的 傳播媒體之中,如果真有必要還請知會本人,謝謝囉!! 本文件引用這兩位先進的文章內容甚多,在此感謝!!! [email protected] (快快樂樂學架 PPP Server) [email protected] (另一個架 PPP Server 的方式) 我的許多問題是由在地球的另一端(真的是另一端)的 FreeBSD 同好解答 沒有他幫忙,我根本不可能完成,實在是太感謝他了 !!! Mike Jenkins <[email protected]> 我的測試平臺為 FreeBSD 3.0-19980804-SNAP,咱們開始囉!! ◎安裝步驟 -- 請以 root 的身份執行 1. 設定 Kernel 及初始化 請確定您的 Kernel 有以下資料 device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr pseudo-device tun 2 sio0 和 sio 1 即是 COM1 和 COM2,沒有他們是不行的 pseudo-device tun 2 代表著可供兩個 PPP 的線路可供撥入 這是 /usr/sbin/ppp 需要的設定 如果您使用 Multi-Port Card 的話,應該要把這個數值加大 以配合您的 Ports 數,就此就可以做個 8 線、16 線等等的 ISP 了。 詳細方法可以參閱 sio(4) 接著請確定您的 /dev 目錄下有足夠的 tun 數目 您可以利用 ./MAKEDEV tunX 來增加 tun 的數目 如此一來,就有 X+1 個 tun 可用了。 您也可以在 /etc/syslog.conf 中加入下面這一行,使 PPP 有紀錄可查 !ppp *.* /var/log/ppp.log ^^^^^^^^^ 此處是 TAB 而非空白 Reboot 吧,我們改了很多東西 sync;sync;sync;reboot 2. 設定 /etc/rc.conf 在 Network routing options 有個 gateway_enable 請將之設成 YES 而 routed 請不要設成 YES,根據筆者試驗的結果若打開 routed 而沒做適當設 定,則 PPP 正常工作時, FreeBSD 的對外網路將會中斷,您的 Client 將只能 和FreeBSD 交談...由於筆者對於 routed / gateway 的工作原理不熟,無法提 出改進的方案... 3. 設定 /etc/remote 請加入如下的字樣,如此一來我們才可以利用 tip 操控 Modem cuaa0:dv/dev/cuaa0:br#115200:pa=none br: baud rate 一般而言設115200就很夠了啦 pa: parity check 根據前輩的經驗是把他關閉,我們也照做囉 如果您有其他 COM 的話,請記得再加入 cuaa1,cuaa2..... 我們利用 tip 指令來和數據機交談 tip cuaa0 可下 AT&V 來看看現在數據機的設定 如果看不見自已打的字,可以按 ATE1 來啟動回應 請下這個指令 AT&C1&D2&K3E0Q1S0=1&W 並再下這兩個指令 AT&W0 及 AT&W1 將此時的設定存入數據機的兩個暫存器中 &C1 遠端載波出現時將 CD 打開 &D2 數據機掛斷並回到指令模式 ( Dropping DTR hang up line & reset modem) &K3 啟動 RTS/CTS 硬體流量控制 E0 關閉回應,您將看不見您輸入的字 (No command echo) Q1 關閉狀態碼 (No result Code) S0=1 鈴響一聲時接起電話。別設成零,否則數據機就陪周公下棋,不理你了 &W 存入目前數據機設定 &W0 存入數據機暫存器0 (基本上 &W 應該會存到這兒,再存一次只是保險) &W1 存入數據機暫存器1 這些指令未必合您的數據機,像我就有遇到 Smart Link 2834A 是不理會 &K3 的 所以您也可以一次只下一個指令如先下 AT&C1 即按 Enter,再下 AT&D2 等... 若看不見 OK 的回應字樣就代表這項指令並未被接受。 最後一切設定完之後,按下 ~. 即可退出與數據機交談的模式 4. 設定 /etc/ttys 請加入以下的字樣 ttyd0 "/usr/libexec/getty ppp" dialup on insecure ttyd0 代表著是撥入端的 COM1 (cuaa0 是撥出端的 COM1) 一旦 COM1 有撥入的訊息,將會啟動 /usr/libexec/getty ppp 來做啟始的動作 dialup 是代表供撥接使用 on 代表著是 Active,我們有啟始 ttyd0 insecure 是 root 不允許登入 5. 設定 /etc/gettytab 請加入以下的字樣 ppp|PPP Server:\ np:sp:#115200:pp:/etc/ppp/ppp-pap-dialup ppp算是一個 Title,供 getty呼叫之 PPP Server 是別名,您可自已取 :) 第二行的意思大致上是決定連線速度,以及當系統偵測到 PPP 封包時 呼叫 /etc/ppp/ppp-pap-dialup 來處理後續的動作。 6. 編寫 /etc/ppp/ppp-pap-dialup #!/bin/sh TTY=`tty` IDENT=`basename $TTY` exec /usr/sbin/ppp -direct pap$IDENT 如此一來,一旦從 COM 1 (ttyd0) 撥入 就會執行 /usr/sbin/ppp -direct papttyd0 最後請記得要將此檔設為可執行 (chmod 755 /etc/ppp/ppp-pap-dialup) 7. 設定 /etc/ppp/ppp.conf 這是 /usr/sbin/ppp 的主要設定檔之一,上面傳給 ppp 的 -direct papttyd0 就是會到這個檔找他要的資訊 請加入以下的段落 papttyd0: enable pap enable passwdauth set ifaddr [SERVER IP] [CLIENT IP] 255.255.255.255 enable proxy accept dns 你應該大概猜得出來是什麼意思吧... enable pap 就是可採用 PAP 認證 enable passwdauth 就是使用 /etc/passwd (或許我該說是/etc/master.passwd) 來做驗證身份的工作,也就是您工作站上的帳號都可從數據機簽入系統 set ifaddr [Server 端的 IP] [Client 端的 IP] [netmask] 255.255.255.255 的意思是 Netmask 只為了兩臺電腦互連而已 欲送到其他電腦的封包都必須經過 Gateway (即你的 FreeBSD) 才能連上 Internet。 enable proxy 和 accept dns 應該就不用我解釋了,基本上,照著抄應該就可以 :) 8. 重開機一下吧,我們快要成功啦 !! sync;sync;sync;reboot 9. 利用 Windows 95 來撥接試試 我想 Windows 95 的設定我就不多談囉 :) 我們使用如同一般坊間的 PAP 認證,也就是不用「撥號後打開終端機視窗」,你可以 直接在「連線到」的對話方塊中輸入你在 FreeBSD 的帳號和密碼,這樣很方便吧 !! 你可以連上線了嗎? 開個 MS-DOS 視窗,執行個 winipcfg 看看連線情況怎麼樣 ping 的到遠端的機器嗎? 祝你好運囉 !! 10. 故障排除 ※ 數據機根本不接電話 請利用 tip 及 AT&V 指令檢查S0值不要等於0喔!! ※ 數據機會接電話,不過 PAP 認證並未啟動 請注意 /etc/ppp/ppp-pap-dialup 這個 Script 是可以被執行的 若還是不成功,試試「撥號後打開終端機視窗」,看看有什麼奇怪的東西出現 如果您看見了 FreeBSD/i386 (myname.my.domain) 和 login : 的字樣 很可能代表您的 /etc/gettytab 沒設好 我還有遇過「yyyyyy」的哩,原來是 Server 端的數據機燒壞了!@#$ ※ 寄信給我?? 唉,我不是什麼高手,不一定能解決您的問題,但是還是歡迎 您的來信。也建議您到板上發問,真的不行的話到 Mailing-list 瞄一下 會更容易找到解答喔。 ◎參考資料--文章 快快樂樂學架 PPP Server by [email protected] 另一個架 PPP Server 的方式 by eddie.seed.net.tw FreeBSD Handbook 15.1.5 PPP Configuration (handbook205.html) ◎參考資料--Manual Page sio(4), ppp(8), tip(1), gettytab(5) ◎結語 自從97年3月27日買了黑皮書之後,終於能在板上貼個像樣一點的文章 希望這篇文章對您架設 PPP/PAP Server 能有所助益,畢竟我試了快一個月 加上玩壞兩臺數據機才弄好的喔(害我以為設定錯誤,拖了好久!#@$) 謹以這篇文章送給小瑜當作生日禮物囉!! ----------------------------------------------------------------------------------------------------------------------------------------------------------- Name : 林子堯 Organization : 臺灣大學牙醫學系84級 ICQ UIN :2943576 --------------------------------------------------------------------------- Learning : FreeBSD TCP/IP Theory Networking Implement Perl & C & UN*X Shell Script Programming --------------------------------------------------------------------------- -------------------------------------------------------------------------------- ★ Origin: ︿︱︿ 小魚的紫色花園 ﹀ fpg.m4.ntu.edu.tw (140.112.214.200)