◇ [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)