歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 如何使用Linux建立撥號服務器

如何使用Linux建立撥號服務器

日期:2017/3/2 10:04:31   编辑:關於Linux

一、目標
本文檔目標是說明使用Redhat Linux建立撥號服務器。

二、測試環境
軟件:
1、Redhat Linux AS5完全安裝。
硬件:
1、56K Modem。
注意軟貓(win-modem)在Linux下無法使用

三、服務器設置
Modem與服務器的連線接好後,打開Modem電源。在Linux要使用的程序為mgetty和pppd。
1、使用minicom測試Modem與服務器連接。
運行:
minicom -s
出現以下界面:
Filenames and paths
File transfer protocols
Serial port setup
Modem and dialing
Screen and keyboard
Save setup as dfl
Save setup as..
Exit
Exit from Minicom
在出現的選擇中選擇:Serial port setup

出現以下界面:
A - Serial Device : /dev/ttyS0
B - Lockfile Location : /var/lock
C - Callin Program :
D - Callout Program :
E - Bps/Par/Bits : 57600 8N1
F - Hardware Flow Control : Yes
G - Software Flow Control : No

Change which setting?
一般只需要修改A、E兩項。修改完後回車返回。
選擇Exit,回車。如果設置正確的話,將看到AT和OK字符如下:
AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
OK

按Ctrl-A Z X退出minicom。

2、設置mgetty自動運行:
運行以下命令:
echo "S0:2345:respawn:/sbin/mgetty ttyS0" >> /etc/inittab

注意其中的ttyS0為modem連接的串口,請按需要修改。

3、使mgetty自動運行pppd:
運行以下命令:
echo "/AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options" >> /etc/mgetty+sendfax/mgetty.config

在/etc/mgetty+sendfax/login.config文件中去掉'AutoPPP'所在行的注釋:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug

4、修改pppd運行參數:
運行以下命令:
echo "-chap +pap login debug modem crtscts proxyarp lock lcp-max-terminate 30 lcp-max-failure 30 lcp-echo-interval 5 passive" > /etc/ppp/options

4、IP分配:
運行以下命令:
echo "192.168.1.3:192.168.1.201" > /etc/ppp/options.ttyS0
echo "noauth" >> /etc/ppp/options.ttyS0

5、設置pppd使用系統用戶驗證登錄:
echo "* * "" *" /etc/ppp/pap-secrets

6、新建用戶和組,並設置密碼:
運行以下命令:
groupadd -g 1001 ppp
adduser thinker
passwd thinker

7、修改用戶shell:
編輯/etc/passwd文件,將thinker用戶一行改為如下內容:
thinker:x:1001:1001:,,,:/home/thinker:/usr/sbin/ppplogin
指定thinker的shell為/usr/sbin/ppplogin

8、新建/usr/sbin/ppplogin文件,內容如下:
#!/bin/sh
exec /usr/sbin/pppd debug passive asyncmap 0 proxyarp lock modem crtscts lcp-max-terminate 30 lcp-max-failure 30 lcp-echo-interval 5

修改ppplogin所有者,以便其它用戶使用,並用它或執行:
chown root.ppp /usr/sbin/ppplogin
chmod +x /usr/sbin/ppplogin

9、使非root用戶可運行pppd程序:
運行以下命令:
chmod +s /usr/sbin/pppd

10、使init運行mgetty:
運行以下命令:
init q

11、啟用包轉發和iptables的NAT功能,使客戶端可訪問目標網絡:
編輯/etc/sysctl.sys文件,改"net.ipv4.ip_forward = 0"為"net.ipv4.ip_forward = 1"
運行:
sysctl -p

啟用iptables的NAT功能,運行:
iptables -F
iptables -X
iptables -F -t nat
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.16.11.107
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

說明:eth0為撥號服務器連接目錄網絡的網口,192.16.11.107為eth0的IP地址。請按需要修改。
將以上幾行加入/etc/rc.local文件,使機器啟動時自動運行。

三、測試
客戶端撥號後可查看/var/log/message、/var/log/secure和/var/log/mgetty.log.ttyS0日志文件。

正常撥號時/var/log/message文件的內容:
Mar 7 15:37:20 web2 pppd[7195]: pppd 2.4.4 started by a_ppp, uid 0
Mar 7 15:37:20 web2 pppd[7195]: Using interface ppp0
Mar 7 15:37:20 web2 pppd[7195]: Connect: ppp0 <--> /dev/ttyS0
Mar 7 15:37:23 web2 pppd[7195]: user thinker logged in
Mar 7 15:37:23 web2 pppd[7195]: PAP peer authentication succeeded for thinker
Mar 7 15:37:24 web2 pppd[7195]: Cannot determine ethernet address for proxy ARP
Mar 7 15:37:24 web2 pppd[7195]: local IP address 192.168.1.3
Mar 7 15:37:24 web2 pppd[7195]: remote IP address 192.168.1.201
Mar 7 15:37:28 web2 pppd[7195]: LCP terminated by peer (^WM-H^CM-Z^@<M-Mt^@^@^@^@)
Mar 7 15:37:28 web2 pppd[7195]: Connect time 0.1 minutes.
Mar 7 15:37:28 web2 pppd[7195]: Sent 33 bytes, received 1828 bytes.
Mar 7 15:37:31 web2 pppd[7195]: Connection terminated.
Mar 7 15:37:31 web2 pppd[7195]: Modem hangup
Mar 7 15:37:31 web2 pppd[7195]: Exit.

正常撥號時mgetty.log.ttyS0文件的內容:
03/04 13:25:51 yS0 mgetty: interim release 1.1.33-Apr10
03/04 13:25:51 yS0 check for lockfiles
03/04 13:25:51 yS0 locking the line
03/04 13:25:52 yS0 lowering DTR to reset Modem
03/04 13:25:52 yS0 send: \dATQ0V1H0[0d]
03/04 13:25:53 yS0 waiting for ``OK'' ** found **
03/04 13:25:53 yS0 send: ATS0=0Q0&D3&C1[0d]
03/04 13:25:53 yS0 waiting for ``OK'' ** found **
03/04 13:25:53 yS0 mdm_send: 'ATI'
03/04 13:25:53 yS0 non-numeric ID string: 'TP560 Data/Fax/Voice 56K Modem'
03/04 13:25:53 yS0 mdm_send: 'AT+FCLASS=2.0' -> ERROR
03/04 13:25:53 yS0 mdm_send: 'AT+FCLASS=2' -> ERROR
03/04 13:25:54 yS0 waiting...
03/04 13:26:20 yS0 wfr: waiting for ``RING''
03/04 13:26:20 yS0 send: ATA[0d]
03/04 13:26:20 yS0 waiting for ``CONNECT'' ** found **
03/04 13:26:34 yS0 send:
03/04 13:26:34 yS0 waiting for ``_'' ** found **
03/04 13:26:37 ##### data dev=ttyS0, pid=29338, caller='none', conn='28800/V44', name='', cmd='/bin/login', user='/AutoPPP/'

正常撥號進/var/log/secure文件的內容:
Mar 4 14:27:38 web2 login: pam_unix(login:session): session opened for user thinker by LOGIN(uid=0)
Mar 4 14:27:38 web2 login: DIALUP AT ttyS0 BY thinker
Mar 4 14:27:38 web2 login: LOGIN ON ttyS0 BY thinker
--------------------------------------------------------------

以上實驗實際測試過可以正常使用

Copyright © Linux教程網 All Rights Reserved