3

Linux下配置Modem拨号

 4 months ago
source link: https://bajie.dev/posts/20240108-modem_dial/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

公司为了跟建设银行建立专线,首先用电话线拨号进行测试。 买回来一个外置的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里,就好看了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK