发信人: coobear(有一天我飞) 
整理人: qiaoqian(2002-05-13 06:53:32), 站内信件
 | 
 
 
如何让Linux回拨Windows PC上网
 
 
 概述: 在公司局域网上有两台Linux server,一台服务器用ISDN上网(2B) 
 
 让整个局域网上用户共享。(已在另一篇中介绍过),另一台通过 
 
 它上网,并在这一台上连一个modem到ttyS0,向家里的windows 
 
 PC回拨,以便让家中的windows PC上网。 
 
 
 
 服务器取名:一台用ISDN拨号上网的服务器取名为 isdn,局域网上另一台 
 
 Linux server取名为sh3. 
 
 
 
 所用软硬件:Redhat Linux 5.2( kernel:2.0.36-3 )(isdn) 
 
 Redhat Linux 6.0/5.2 (sh3) 
 
 两个USR external 56K modem(sh3 and windows PC) 
 
 (通常所说的黑猫) 
 
 
 
 实现步骤: 首先从家里的windows PC向公司sh3服务器拨号建立连接,然后 
 
 telnet to sh3 ,su as root, 
 
 运行call98断线,然后让它向windows PC回拨即可。 
 
 
 
 实现方法: 
 
 A. 如何设置sh3(192.168.13.3)? 
 
 1.将默认网关指向isdn(192.168.13.5),且打开IP Forwarding功能。 
 
 你需要加下面的行到/etc/rc.d/rc.local 
 
 
 
 /sbin/route del default 
 
 /sbin/route add -net 0.0.0.0 gw 192.168.13.5 
 
 /sbin/modprobe bsd_comp 
 
 /sbin/modprobe ppp 
 
 echo 1 > /proc/sys/net/ipv4/ip_forward 
 
 
 
 注:请先确保能从sh3上能成功地ping外面的网站,如你的ISP的DNS服务器。 
 
 
 
 2.设置sh3做为PAP方式认证的PPP server. 
 
 
 
 加下面的行到/etc/inittab,然后运行 /sbin/init q 使它生效。 
 
 
 
 s0:2345:respawn:/sbin/mgetty -D -x 3 ttyS0 
 
 
 
 更改 /etc/mgetty+sendfax/login.config,改/AutoPPP/那一行象下面的 
 
 
 
 /AutoPPP/ - - /usr/sbin/pppd file /etc/ppp/options.auto 
 
 
 
 设置pppd权限位: 
 
 chmod u+s /usr/sbin/pppd 
 
 
 
 /etc/ppp/options.auto应该象这样: 
 
 -detach 
 
 auth 
 
 modem 
 
 lock 
 
 login 
 
 proxyarp 
 
 crtscts 
 
 asyncmap 0 
 
 192.168.13.3:192.168.13.242 
 
 ms-dns 192.168.13.1 (# 192.168.13.1为我局域网上的一台DNS服务器, 
 
 你也可设成你的ISP的DNS服务器) 
 
 3.新建一PPP 用户, useradd jephe; passwd jephe 
 
 4.设置sh3,让它能向Windows PC拨号。 
 
 cp /usr/doc/ppp*/ppp-on /usr/bin/ 
 
 cp /usr/doc/ppp*/ppp-off /usr/bin/ 
 
 cp /usr/doc/ppp*/ppp-on-dialer /etc/ppp 
 
 chmod +x /usr/bin/ppp-on /usr/bin/ppp-off /etc/ppp/ppp-on-dialer 
 
 
 
 改/etc/ppp/ppp-on-dialer中的chat为 /usr/sbin/chat并注释掉最后两行。 
 
 
 
 #!/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 '' 
 
 
 
 改/usr/bin/ppp-on象下面(回拨时windows不要求用户名和口令) 
 
 
 
 TELEPHONE=12345678 # 你家中的电话号码 
 
 LOCAL_IP=192.168.13.3 
 
 REMOTE_IP=192.168.13.242 
 
 NETMASK=255.255.255.0 
 
 export TELEPHONE 
 
 DIALER_SCRIPT=/etc/ppp/ppp-on-dialer 
 
 exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS0 38400 \ 
 
 $LOCAL_IP:$REMOTE_IP \ 
 
 noipdefault netmask $NETMASK connect $DIALER_SCRIPT 
 
 
 
 5.创建一个script,取名call98。 
 
 #!/bin/sh 
 
 kill `cat /var/run/ppp0.pid` 
 
 nohup sleep 5; /usr/bin/ppp-on 
 
 
 
 B. Windows PC 设置。 
 
 你必须在modem附加设置栏填上 &C0S0=001 。(001表示在响铃一次后应答) 
 
 
 
 C. 服务器 isdn 设置。 
 
 
 
 你需要在服务器 isdn 里添加一条路由。加下面的行到 /etc/rc.d/rc.local 
 
 
 
 /sbin/route add 192.168.13.242 gw 192.168.13.3 
 
 
 
 注意:1. 在/etc/ppp目录下,请删掉或换名options文件,因为options.auto 与 
 
 options不能同时存在,否则回拨后立刻断掉,很奇怪 
 
 2. 在使用过程中,发现回拨后DNS不能自动获得,你可能要到网上邻居/拨号 
 
 网络适配器中手动设置DNS值。 
 
 3. 在回拨成功后,windows PC中默认网关丢失,你必须还要在DOS窗口运行 
 
 下面的命令大约回拨10秒之后做,如有错误信息,说明回拨后PPP还未完 
 
 全建立,可再等几秒按F3再试可以把它设成批处理文件如98call.bat) 
 
 route add 0.0.0.0 mask 0.0.0.0 192.168.13.242 
 
 
 
 4. 当然,你必须telnet到sh3 as root后运行call98,不能在98中断线,否则 
 
 sh3怎么知道要回拨? 
 
 5. 请接modem到ttyS0,不要接到ttyS1,在我使用过程中,ttyS1好象不能成功地回拨。 
 
 
  ---- 喔,你是智慧之石,你是投石器之石
 
 你是击碎星辰之人
 
 你将自己高高地投出
 
      | 
 
 
 |