本文介紹一種利用Linux服務器的兩個串口構建撥號服務器的方法,遠程用戶可以通過撥號連接到局域網,方便地進行信息傳遞和資源共享。
筆者的配置環境是Red Hat 8.0 Linux操作系統,所需的硬件包括兩個外置Modem(分別連接到COM1和COM2端口)和兩條電話線。
實現步驟如下:
1. 初始化串口設備
在/etc/inittab文件中加入如下兩行,用來初始化ttyS0和ttyS1兩個串口設備:
S0:345:respawn:/sbin/mgetty -D -X 3 ttyS0
S1:345:respawn:/sbin/mgetty -D -X 3 ttyS1
然後,運行“/sbin/init q”命令使改動生效。
2. 指定認證方式
在/etc/PPP目錄下創建文件ppplogin,內容如下:
#!/bin/sh
/usr/sbin/pppd auth -chap +pap login
該文件指定用戶登錄時采用PAP認證。PAP和CHAP是PPP服務的兩種身份驗證協議。
保存文件後,給文件設置執行的權限:
#chmod a+x /etc/ppp/ppplogin
然後,更改/etc/mgetty+sendfax/login.config文件,去掉“/AutoPPP/”一行前面的注釋,並改為如下內容:
/AutoPPP/ - - /etc/PPP/ppplogin
3. 修改options文件
修改/etc/PPP/Options文件為如下內容;
detach
Modem
Lock
crtscts
asyncmap 0
netmask 255.255.255.0
proxyarp
ms-dns 192.168.11.1
“detach”選項非常重要。如果不指定這個選項,撥號程序就會進入後台,使得Shell腳本退出,隨之而來的是串行線路被掛斷,導致連接中止。“detach”防止了tty設備脫離PPPD的控制。
“Modem”選項使得PPPD監視DTR引線,可以觀察到對等點是否已掉線。
“Lock”選項指定在串行設備上使用UUCP風格的鎖定。
“crtscts”選項用以打開硬件握手信號。
“asyncmap 0”設置了異步字符映射,這個映射指定控制字符不能直接通過連接發送,需要先進行轉義。
“netmask 255.255.255.0”設定PPP網絡接口的網絡掩碼。
“proxyarp”選項打開了ARP代理功能。
“ms-dns”2.168.11.1”指定了局域網內的DNS服務器地址,如沒有可以不設。