如何讓 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 好象不能成功地回撥。