在 RedHat Linux AS5 上以 56K Modem (非軟猫) 建立撥號接入伺服器,使用 mgetty 接聽來電、pppd 建立 PPP 連線、系統帳號驗證、IP 動態分配、NAT 轉發上網。附完整配置指令、測試日誌範例。
minicom -s
# 選 Serial port setup
# A - Serial Device: /dev/ttyS0 (依實際序列埠修改)
# E - Bps/Par/Bits: 57600 8N1
# F - Hardware Flow Control: Yes
# 存檔離開,畫面出現 AT ... OK 表示通訊正常
# Ctrl-A Z 退出
echo "S0:2345:respawn:/sbin/mgetty ttyS0" >> /etc/inittab
# ttyS0 對應 Modem 序列埠
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
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
echo "192.168.1.3:192.168.1.201" > /etc/ppp/options.ttyS0
echo "noauth" >> /etc/ppp/options.ttyS0
伺服器端 IP 192.168.1.3,客戶端分配 192.168.1.201 起。
echo "* * \"\" *" > /etc/ppp/pap-secrets
# 使用系統帳號密碼驗證
groupadd -g 1001 ppp
adduser thinker
passwd thinker
# 修改 /etc/passwd 將 thinker 的 shell 改為 /usr/sbin/ppplogin
thinker:x:1001:1001:,,,:/home/thinker:/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
chown root.ppp /usr/sbin/ppplogin
chmod +x /usr/sbin/ppplogin
chmod +s /usr/sbin/pppd
init q
# /etc/sysctl.conf
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
# 將以上指令加入 /etc/rc.local 開機自動執行
192.16.11.107 為 eth0 實際公網 IP,請依環境修改。
客戶端撥號後查看日誌:
/var/log/messages - pppd 連線過程/var/log/secure - 登入驗證記錄/var/log/mgetty.log.ttyS0 - mgetty 與 Modem 交互正常連線日誌特徵:PAP peer authentication succeeded、local IP address 192.168.1.3、remote IP address 192.168.1.201。
上述配置經實機測試可正常提供撥號上網服務。