本文介绍一种利用
Linux服务器的两个串口构建拨号服务器的方法,远程用户可以通过拨号连接到局域网,方便地进行
信息传递和资源
共享。
6 U* a. c3 A k$ X. H笔者的配置
环境是RedHat8.0Linux操作
系统,所需的
硬件包括两个外置Modem(分别连接到COM1和COM2
端口)和两条
电话线。实现步骤如下:
B9 i/ M- Y( e( r0 ]* Q7 ^
1.初始化串口设备
8 m' e. M) s S9 O- Z- g在/etc/inittab文件中加入如下两行,用来初始化ttyS0和ttyS1两个串口设备:
: P1 {8 y: r- q$ K) |S0:345:respawn:/sbin/mgetty-D-X3ttyS0
. z3 N( S/ n& p; e1 X$ M9 rS1:345:respawn:/sbin/mgetty-D-X3ttyS1
$ C2 z4 g3 h. I6 w% B然后,运行“/sbin/initq”命令使改动生效。
% p. a$ _: T5 c; y; S: m- ~6 H2 w6 J
[color=#FFFFFF']
3 r8 Y) K; `4 |2 j2 y4 I
- O2 n, p: V. F% g# D
2.指定认证方式
+ A# M7 }; A& X, m, M- L在/etc/PPP目录下创建文件ppplogin,内容如下:
5 Y* @- }" A' ]$ N
[color=#FFFFFF']
4 W8 t. `+ \& S4 V
. w/ z! P( A9 H( b#!/bin/sh
+ a, _; k2 f7 i) Y
/usr/sbin/pppdauth-chappaplogin
/ H" Q) a- F+ v9 w该文件指定用户登录时采用PAP认证。PAP和CHAP是PPP服务的两种身份验证协议。
: o9 D; t4 s/ ~! k0 J保存文件后,给文件设置执行的权限:
8 o0 Z8 |+ _8 C/ A' A6 h#chmodax/etc/ppp/ppplogin
( y! Q1 z6 p- _5 h+ Z. z
然后,更改/etc/mgettysendfax/login.config文件,去掉“/AutoPPP/”一行前面的注释,并改为如下内容:
: T& V. A( v1 {* o- t8 g' A1 K/AutoPPP/--/etc/PPP/ppplogin
+ x1 x% X" C) L
3.修改options文件
/ u# e' P6 b' E5 W修改/etc/PPP/Options文件为如下内容;
- Y9 x6 a, U# Q% U$ a6 o& u* Rdetach
" ^0 n1 r! ]# z0 ^$ E" I+ \3 i1 g; [
Modem
- m S* r+ F- g) O) y9 H6 gLock
" M1 M( G; _, y* V: K3 Z$ N6 i* d
crtscts
5 M, r7 R4 h9 u* m& F' h6 iasyncmap0
& l- [* B4 ?* p! I6 |0 x! F0 g
netmask255.255.255.0
& z' P5 x1 S* I$ u. w( cproxyarp
9 n5 ?2 e( G% f1 @: t) rms-dns192.168.11.1
, F; M, B$ N) s8 L
“detach”选项非常重要。如果不指定这个选项,拨号
程序就会进入后台,使得Shell脚本退出,随之而来的是串行线路被挂断,导致连接中止。“detach”防止了tty设备脱离PPPD的控制。
! G) ~9 S+ U" C, a: H$ ?2 X
“Modem”选项使得PPPD监视DTR引线,可以观察到对等点是否已掉线。
+ Z. M0 }7 G* j- ~3 I, u+ C; [“Lock”选项指定在串行设备上使用UUCP风格的锁定。
! B5 `) o% L( i" M. ?/ y; W( s
“crtscts”选项用以打开硬件握手信号。
- x3 P! G9 I& ^/ J
“asyncmap0”设置了异步字符映射,这个映射指定控制字符不能直接通过连接发送,需要先进行转义。
. K' i5 |7 v& d2 W& |2 O“netmask255.255.255.0”设定PPP
网络接口的网络掩码。
* s6 ^, r1 ]$ d4 E! {1 h* ]“proxyarp”选项打开了ARP代理
功能。
2 [7 ]$ O- p5 i' D0 D5 A
“ms-dns”2.168.11.1”指定了局域网内的DNS服务器地址,如没有可以不设。
) G7 b# r v& p) o
4.给拨入用户分配IP2 p: m6 a c3 \- L n$ F R4 A+ u7 W
[color=#FFFFFF']
* U( D- n4 e: _, h, G2 a. z/ a1 S. L# b$ H
创建/etc/ppp/Options.ttyS0和/etc/ppp/
" q- C, G9 o5 ?# ^7 D[color=#FFFFFF']
, f5 P( [0 V! [0 b& S3 g( s
; k7 [% J# I; ~) T" P6 g0 E$ }6 R2 M! T
options.ttyS1两个文件,内容如下:
2 n e. I3 G. Q2 J#Vioptions.ttyS0
, u6 o6 x9 _, l. ?9 b) |[color=#FFFFFF']
( J- \2 ?6 H$ S8 Q" v0 ~- r% @$ j
' W. N3 {1 m6 K* x192.168.11.3:192.168.11.242
$ c9 w3 C: ~' C# d5 ^+ f2 f#Vioptions.ttys1
- u/ u( i5 D/ @+ B, J2 v8 N% J192.168.11.3:192.168.11.243
, q9 U6 R8 |4 ?' u- `5 o5 S/ R7 j& G
其中,“192.168.11.3”是用作拨号服务器的那台Linux
机器的IP地址,“192.168.
5 s* y' Z4 k" T( f' V6 k+ `[color=#FFFFFF']
2 _! o i" p3 _& ~: g/ V
* [1 ]) C8 W. n, u11.242”和“192.168.11.243”是分别指定给COM1口和COM2口拨入用户的IP地址。
# ?3 r% u* {) V5 x, T, t* g- B
5.口令验证
1 X2 t* ]+ u9 Y, x编辑文件/etc/PPP/pap-secrets,内容如下:
/ R" [ [0 {1 h: ?$ l: C[color=#FFFFFF']
% ]/ e4 ~4 ]/ Y x7 V( a2 U5 ]+ t) Q7 `0 x0 {& j5 W
**"secret"192.168.11.242
+ X: {* @8 l" p
**"password"192.168.11.243
+ O+ l4 z8 a& ^- |
如上所示,每行代码包含四列,分别代表用户名、服务器地址、口令值和IP地址列表。“*”表示可以与任何内容进行匹配。
. y9 ?- U! i: z2 a- h' ^用户拨入后,如果需要访问局域网内的其它服务器,就必须打开IP转发功能:
# S4 _, Z8 S2 J
[color=#FFFFFF']
2 }% s6 r; d, _
0 b1 ]! {& R, Zecho1%26gt;/proc/sys/net/ipv4/ip_forward
! @4 | G* Q4 T2 Y$ J
要想在空闲一段
时间后自动解除连接,需要在/etc/ppp/options中加入如下一行:
4 u9 u' f7 X/ F$ bidle600
. ?2 Z+ u1 P/ ]- M- x7 C
上述代码中,“600”表示600秒,即10分钟。
, V$ `8 r9 I- T5 W8 B3 W& L
如果在相应目录下找不到/sbin/mgetty文件和/etc/mgettysendfax/login.config文件,则需要安装mgetty
软件包。