首页 > 开发 > 综合 > 正文

如何让 Linux 回拨 Windows PC 上网

2024-07-21 02:37:09
字体:
来源:转载
供稿:网友

  概述: 在公司局域网上有两台 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 好象不能成功地回拨。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表