如何在Redhat 6.1条件下设置PPP拨入服务器
如何在Redhat 6.1条件下设置PPP拨入服务器
如何实现Redhat 6.1向windows PC回拨上网
作者:吴阿亭 [Linux应用版版主]
前言:
在前面的文章中,也许是写得不够详细,不少网友在设置PPP拨入服务器和向Windows PC回拨时都遇到不同程序的问题,要说明的是,设置PPP功能是一个很敏感的操作,如果某个地方稍有不慎,就会失败,这次以最新的Redhat 6.1版本为例,尽量详细地写出设置过程,供大家参考,希望能对更多的人有所帮助。
目的:
在公司局域网中,有一台Linux服务器通过专线连到ISP(也许你是通过拨号或ISDN),作为PPP拨号服务器让整个局域网中的用户共享上网(作为Squid代理服务器或者直接利用IP伪装方式),假设其IP地址为192.168.11.5 , 局域网上有另一台PC,装上双系统Windows 98/Linux (192.168.11.12),白天工作时用Windows 98,下班后启动到Linux,用家中的PC拨该Linux服务器然后让它回拨家中PC上网,这台双系统机器的默认网关设为192.168.11.5 。
实现方法:
一:设置双系统机器为Linux PPP拨入服务器。
1. 安装系统时选择‘dialup workstation'选项,则PPP 包则默认安装。
2. 设置/etc/inittab文件,假设连一USR黑猫到com2口,则加下下面的行到/etc/inittab后面
[root@jephe /etc]# more inittab | grep mgetty
s1:2345:respawn:/sbin/mgetty -D -x 3 /dev/ttyS1
然后运行#/sbin/init q重读该文件以初始化modem。
3. 更改/etc/mgetty+sendfax目录下的login.config文件中/AutoPPP/这一行,象下面这样:
[root@jephe mgetty+sendfax]# pwd
/etc/mgetty+sendfax
[root@jephe mgetty+sendfax]# ls
dialin.config login.config mgetty.config
[root@jephe mgetty+sendfax]# more login.config | grep Auto
/AutoPPP/ - - /usr/sbin/pppd file /etc/ppp/options.auto
4. 以root身份创建并设置/etc/ppp/options.auto文件,象下面这样:
[root@jephe mgetty+sendfax]# cd /etc/ppp
[root@jephe ppp]# ls
chap-secrets ip-down nohup.out options.bak pap-secrets.bak ppp-on-dialer
connect-errors ip-up options.auto peers
root@jephe ppp]# more options.auto
-detach
modem
noauth
lock
login
proxyarp
crtscts
asyncmap 0
192.168.11.12:192.168.11.242
ms-dns 192.168.11.1
注:192.168.11.1为LAN上一台DNS服务器,若你的DNS服务器也是上面的那台192.168.11.5,就设为192.168.11.5 ,这里我设了noauth,就是不希望windows pc拨号上来后需要做任何口令验证工作,任何用户名及口令均可,login选项就是用/etc/passwd文件中的用户名和密码进行PPP登录验证,若你需要验证,就用auth,且用useradd命令创建一普通用户帐号即可,Shell就用默认的/bin/bash,不需要改。
5. 删除/etc/ppp目录下的options文件和pap-secrets文件或者把它们换名为options.bak和pap-secrets.bak。因为在回拨时有冲突,特别是options和options.auto不能同时存在。
至此,PPP拨入服务器设置完毕,现在你能从家中的PC拨号上来上网了,得到的IP地址为192.168.11.242, 因此若你在192.168.11.5上用Squid,则在/etc/squid.conf中必须让192.168.11.242可通过代理上网,若用 IP伪装方式,则也同样要enable IP 地址192.168.11.242可以伪装上网。还有一点要注意,这里用的 proxyarp(代理ARP)意思是192.168.11.12代理了所有局域网上的其它机器到192.168.11.242的TCP/IP请求。在下面介绍的回拨之后,这种功能丢失,因此你必须在192.168.11.5机器上手动增加一条到主机 192.168.11.242的路由: #/sbin/route add -host 192.168.11.242/32 gw 192.168.11.12
二 设置双系统机器可以向家中的Windows PC回拨。
1. 复制ppp相关文件到指定目录中且设置它们的执行权限。
[root@jephe scripts]# pwd
/usr/doc/ppp-2.3.10/scripts
[root@jephe scripts]# ls
README chat-callback ip-down.local.add ppp-off ppp-on-dialer secure-card
callback chatchat ip-up.local.add ppp-on redialer
[root@jephe scripts]# cp ppp-off ppp-on /usr/bin
[root@jephe scripts]# cp ppp-on-dialer /etc/ppp
[root@jephe scripts]# chmod +x /usr/bin/ppp-off /usr/bin/ppp-on /etc/ppp/ppp-on-dialer
2. 更改/usr/bin/ppp-on 和 /etc/ppp/ppp-on-dialer如下:
[root@jephe ppp]# pwd
/etc/ppp
[root@jephe ppp]# more ppp-on-dialer
#!/bin/sh
exec /usr/sbin/chat -v \
TIMEOUT 3 \
ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' \rAT \
'OK-+++\c-OK' ATH0 \
TIMEOUT 30 \
OK ATDT$TELEPHONE \
CONNECT ''
注:更改chat路径为全路径,仅留 CONNECT '', 后面的行全删除,因为我们Linux向
Windows PC拨号时勿需任何口令验证。
[root@jephe ppp]# more /usr/bin/ppp-on
#!/bin/sh
TELEPHONE=12345678
LOCAL_IP=192.168.11.12
REMOTE_IP=192.168.11.242
NETMASK=255.255.255.0
export TELEPHONE
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
exec /usr/sbin/pppd noauth debug lock modem crtscts /dev/ttyS1 115200 \
$LOCAL_IP:$REMOTE_IP \
netmask $NETMASK connect $DIALER_SCRIPT
注: 仅使用上面的几行即可,exec行没有noipdefault,否则会出错,且要用noauth选项,
因为Redhat 6.1默认是需要验证身份,Linux向windows拨号时,windows不要求身份验证,
故必须加上。
3.创建文件/usr/bin/call98并给予执行权限。
[root@jephe ppp]# more /usr/bin/call98
#!/bin/sh
kill `cat /var/run/ppp0.pid`
nohup sleep 5; /usr/bin/ppp-on
设置完毕,从Windows PC向它拨号,成功后登录为root后执行call98即可。
三. 设置windows PC.
1. 在拨号网络中为拨号连接的modem附加设置指定参数 &C0S0=001 (windows收到拨号请求,
响铃一次就应答)
2. 在网上邻居的拨号网络适配器中为TCP/IP连接指定DNS,因为回拨后DNS会丢失。
3. 回拨后windows PC默认网关丢失,你可以用netstat -nr检查,因此需要在回拨成功后在
DOS窗口运行 route add 0.0.0.0 mask 0.0.0.0 192.168.11.242
可做成批处理文件运行。
4. Windows 向Linux服务器拨号时不用设置弹出终端窗口选项,因为在Linux服务器端用的是
PAP方式认证。