如何讓FreeBSD成為PPP撥接服務器? |
|
本文舉例如何以kernel mode PPP, 即pppd(8), 提供PPP 撥接伺服器的功能。
請注意所用MODEM必須是可以
1. auto answer incoming call, and
2. can auto reset when DTR signal drops.
ZZ.
AA.讓kernel 支援ppp device
BB.設定MODEM
CC.設定/etc/ttys
DD.決定PPP 兩端的IP
EE.設定pppd的options
FF.怎麼用?
AA.
請確定您所用的kernel 支援ppp device. 如果沒有的話您必須修改它。
(FreeBSD handbook, 5.3.8. Networking, pseudo-device ppp number)
如果有支援,那麼打ifconfig -a 大概會有如下這樣的訊息:
ppp0: flags=8010 mtu 1500
ppp1: flags=8010 mtu 1500
顯示有兩個ppp device。
BB.
接下來請參照modem的說明書將他設定為前述的:
1. auto answer.
2. Reset when DTR signal drops, 以及
3. 關掉command line echo.
4. 不要display result code.
當然您必須要先有適當的cable連接modem 和主機的RS-232 port。
連接好了之後可以用cu 指令來跟modem講話(通常只有root才可以用cu):
# cu -l /dev/cuaa1 -s 115200
connected
當cu 打開/dev/cuaa1 時,連接cuaa1 的modem 的DTR燈會亮。
在cu 下,可打~. 跳出。
CC.
您必須知道如何接序列埠的terminal,(FreeBSD handbook, 11. Serial Communications,
11.2.3. Configuration)
例如/etc/ttys中:
# Serial terminals
ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.115200" vt100 on insecure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off secure
設定ttyd1使能 上相連的terminal,連線速度(transmittion speed between modem and
the interface)固定115200bps,當作vt100 terminal 對待,不允許root login。
如果您的modem 已經 上com2 (ttyd1),這時kill -1 1 就會見到modem 上的DTR燈亮起
表示主機已經待命。如果modem DTR燈沒有亮起來,那就。。。。
至此您可以用普通terminal 模擬程式撥進那台modem 看看,撥通之後應該可以看到
FreeBSD的login畫面。 login 進去後,再logout, 則modem 掛斷。
DD.
每一個dialup連上後要用掉兩個IP,local端與remote端各一,也就是
server端與client端各一。除非您擁有正式核發的IPs,不然請千萬從
Private IP裡挑選您喜歡的來用。
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
比如設server端為 172.16.0.10
client端為 172.16.0.20
這樣為 一對,一個client撥上來要用掉 一對 IP。
假如您提供兩個或三個MODEM讓人撥接,那麼就需要兩對或三對IP。
EE.
設定/etc/ppp/options 檔。
/etc/ppp/options 內容設定了pppd(8)啟動後的動作,options 可以在
命令行裡指定,不過/etc/ppp/options這個檔必須是存在的。它可用來當作
對各個ttyd?的default設定,ttyd?的個別設定可以放在/etc/ppp/options.ttyd?
之中。
/etc/ppp/options
crtscts # Hardware flow control
netmask 255.255.255.0 # netmask ( not required 因為好像改了也沒用...呵)
domain abc.efg.net # your domain
passive # wait for LCP
modem # modem line
/etc/ppp/options.ttyd1
172.16.0.10:172.16.0.20 # local:remote IP
# i.e. server-side will get IP 172.16.0.10
# client-side will get IP 172.16.0.20
FF.
撥通後,login,打pppd就開始ppp pocket-mode.
=====================================================================
From: eddie@eddie.seed.net.tw (Eddie Wang)
Newsgroups: tw.bbs.comp.386bsd
Subject: 另一個架ppp server的方式
Date: Sun, 10 Aug 1997 14:08:00 GMT
在這提供一種簡單架設ppp server的方法,主要是利用
danny@freebsd.org 所提供的pppkit.tgz來使FreeBSD
成為一個使用系統密碼檔及pap方式認証的terminal server。
大家可以在下列地方取得pppkit.tgz
除此之外我還參考了handbook第11、12章以及FAQ第十章,
有興趣的人可順便看一下。
我的系統是 2.2 stable (0803)
cuaa0==>GVC 寶時捷33.6k
cuaa1==>創巨 modem blaster 28.8k
以下的說明皆以我的系統為范例,請自行依需要修改。
解開pppkit.tgz後的檔案如下:
pppkit/etc/ppp/ppp.ports
指定由ttyxx撥入後將得到的ip
pppkit/etc/ppp/ppp.disabled
設定哪些人不可用pap ppp的方式撥入
pppkit/etc/ppp/options
設定給撥入端的DNS server
pppkit/etc/ppp/ppp.users
設定給某些特定的user固定ip,前提是這些user用一般的
Login:/Password:提示符號login的而不是用pap(設定方法請
參考README)
pppkit/etc/gettytab
參考用的
pppkit/bin/ppplogin.sh
提供給ppp user的login shell並且也讓getty去啟動pppd
pppkit/bin/fancyppplogin.sh
同上
pppkit/usr/sbin/pppd-22
提供給2.2+使用者的pppd
pppkit/usr/sbin/pppd-215
給2.1.5+的pppd
pppkit/usr/libexec/getty
2.1.5的user需要將原來的getty換成這個
pppkit/README
說明文件,我這篇post 80%+都在裡面有說明
開始吧
* 先確定kernel中有ppp interface,並把modem接好,power on。
* cp pppkit/usr/sbin/pppd-22 /usr/sbin/pppd
(這是README說的,我沒做:p )
chown root.bin /usr/sbin/pppd ; chmod 4555 /usr/sbin/pppd
* cp pppkit/etc/ppp/* /etc/ppp
* 修改/etc/ppp/options 將給撥入端的的dns server ip填入
假如你預備將ppp0的ip設定成和你網卡的ip相同的話,請加上
proxyarp這個keyword
* 修改/etc/ppp/ppp.ports 我只預備將ttyd1提供撥入,因此只要
設定一行"d1 xxx.xxx.xxx.xxx"
* cp pppkit/bin/ppplogin.sh /usr/local/bin
並修改其中 LOCAL=xxx.xxx.xxx.xxx 將xxx....換成你預備指定
給local端的ip(如上所說,可設定成和網卡相同)
* 編輯一個/etc/ppp/ppp.shells 格式如同/etc/shells
至少要加上/usr/local/bin/ppplogin.sh以及你預備提供撥接服務
的user所用的shell
* 看看/etc/ppp/ppp.disabled中少列了哪些你不想讓他撥入的,加上去。
* 將/etc/ttys中關於ttyd1那行改成:
ttyd1 "/usr/libexec/getty std.57600" dialup on insecure
* 將/etc/gettytab中開頭是std.57600那項設定改成:
std.57600|57600-baud:\
: np:sp#57600:pp=/usr/local/bin/ppplogin.sh
大致設定完成了,現在請 kill -HUP 1;ps -ax應該會看到這行
13143 ?? I 0:00.01 /usr/libexec/getty std.57600 ttyd1
現在要設定數據機了,handbook上說要上數據機能夠正常提供dialin
的話必須:
1.CD asserted when connected (&C1)
2.DTR asserted for operation; dropping DTR hangs up line &
resets modem (&D2)
3.CTS transmitted data flow control (&K3)
4.Disable XON/XOFF flow control (找不到:p,不過這項在rc.serial
應該已經是預設的了)
5.RTS received data flow control (&K3)
6.Quiet mode (no result codes) (Q1)
7.No command echo (E0)
另外我想要把這些設定儲存起來 (&W0)
以及要modem在響一聲後自動接電話 (S0=1)
翻翻modem的手冊,我的modem blaster應設定如下:
AT&C1&D2&K3E0Q1S0=1&W0
要設定modem請先在/etc/remote中加上一行:
cuaa1:dv=/dev/cuaa1:br#57600:pa=none
然後就可以用tip cuaa1來設定了,設定完用"~."結束。
現在可以試撥看看了。在撥入端的設定和一般撥SEEDNet(非廣告)
一樣,不論是95,nt,or FreeBSD都很順利。當初我在測試的時候
用cuaa0撥到ttyd1,然後用ifconfig -a去看..真是精採:) | |
Bluelove1968 發表在 痞客邦 留言(0) 人氣()