公司为了跟建设银行建立专线,首先用电话线拨号进行测试。 买回来一个外置的Modem,接在服务器的com1口上,先用电话测试一下,OK没问题,那就继续配modem拨号

Linux下配置Modem拨号有两种方式,传统的pppd方式和简单的wvdial方式。

一、wvdial配置

wvdial的配置方法超级简单, 执行命令:wvdialconf /etc/wvdial.conf 它会自动测出系统的Modem,稍微修改一下,加几个参数:

vi /etc/wvdial.conf 

[Dialer Defaults]
Modem = /dev/ttyS0  
Baud = 115200  
Init1 = ATZ  
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0  
ISDN = 0  
Auto Reconnect = on  
Modem Type = Analog Modem  
Phone =0,28929191  
Username = ttt  
Password = qqq  

这就弄好了,执行wvdail &就可以拨号了,结束也很简单,kill -9 杀掉wvdial和ppd进程即可。

注意:wvdial 拨通后系统多了一块网卡ppp0,路由信息都未修改,为了能到达建行的服务器,需要编辑/etc/ppp/ip-up文件,加一句:

route add -host 12.0.98.150 gw 12.0.98.236 

然后重拨ping一下,ping 12.0.98.150,能ping通就说明ok了。

二、pppd配置

wvdial隐藏了很多信息,我们下面用pppd来看看真实的拨号过程吧:

其实modem拨号认证的方式有两种,一种是显示明文的login:(username:)方式,另一种是显示乱码的pap(chap)方式。

①首先:

vi /etc/ppp/options  
lock  
crtscts  
defaultroute  
noauth  

②清理一下老的连接:

killall pppd  
rm /var/lock/LCK..ttyS0  

③找出认证的方式:

/usr/sbin/pppd /dev/ttyS0 115200 debug connect
 "/usr/sbin/chat -v   ''   'AT&F0'   OK
ATD0,28929191   CONNECT   'dc' "  

less /var/log/messages

如果看见什么login username之流的那就是明文认证,如果类似下面的,看见了,那就是pap(chap)方式。

pppd 2.4.2 started by root, uid 0  
Removed stale lock on ttyS0 (pid 3561)  
send (AT^M)  
expect (OK)  
AT^M^M  
OK  
-- got it
send (ATD0,28929191^M)  
expect (CONNECT)  
^M
ATD0,28929191^M^M  
CONNECT  
-- got it
send (d)  
Serial connection established.  
using channel 2  
Using interface ppp0  
Connect: ppp0 <--> /dev/ttyS0  
sent [LCP ConfReq id=0x1 <mru 552> <asyncmap 0x0> <magic 0x3947d7a8> <pcomp> <accomp>]  
rcvd [LCP ConfReq id=0x1 <mru 1500> <asyncmap 0x0> <auth chap MD5> <magic 0xebe7666>]  
sent [LCP ConfAck id=0x1 <mru 1500> <asyncmap 0x0> <auth chap MD5> <magic 0xebe7666>]  
sent [LCP ConfReq id=0x1 <mru 552> <asyncmap 0x0> <magic 0x3947d7a8> <pcomp> <accomp>]  
sent [LCP ConfReq id=0x1 <mru 552> <asyncmap 0x0> <magic 0x3947d7a8> <pcomp> <accomp>]  
rcvd [LCP ConfReq id=0x2 <mru 1500> <asyncmap 0x0> <auth chap MD5> <magic 0x125e3a73>]  
sent [LCP ConfAck id=0x2 <mru 1500> <asyncmap 0x0> <auth chap MD5> <magic 0x125e3a73>]  

如果是明文认证:

/usr/sbin/pppd /dev/ttyS0 115200 debug connect
"/usr/sbin/chat -v   ''  ATDT0,28929191  CONNECT
''  ogin:  ttt  assword:  qqq"  

如果是pap(chap)认证:

/usr/sbin/pppd /dev/ttyS0 115200 debug
user ttt connect "/usr/sbin/chat -v '' ATDT0,28929191 CONNECT 'dc' "  

看出区别了吧,pap(chap)跟明文的区别就在于多了一个 user ttt 的参数。 这就是pppd拨号的详细过程了,断掉拨号连接就用killall pppd即可。 大家可以把这么长的一行命令写到sh里,就好看了。