Linux 版 (精华区)
发信人: kevin (小鬼), 信区: Linux
标 题: linux上共享modem按需拨号的实现(作者superman)
发信站: 哈工大紫丁香 (2000年08月25日17:42:56 星期五), 转信
我这几天主要在linux上进行共享modem的按需拨号,下面是实现的基本过程(感谢
kevin的帮助),希望能够对大家有所帮助.bye(本来还想发到工大BBS,可惜速度是
在是太慢,kevin老弟帮我发一下吧)
Linux上共享Modem的安装与配置
目的: 通过命令行指令拨号上网,同时可以共享该modem给其他人按需拨号
(其实我们可以很方便的使用X-windows下的KPPP拨号工具上网,也可以使用字符模式下
的minicom来拨号上网,但是如果想获得按需拨号的特性,就必须通过命令行来拨号上网
了)
环境
硬件: PC Server 一台, Modem卡一块
软件: Linux Red Hat 6.0, Linux 2.2.14内核, Modem driver
1 升级系统内核
缺省的系统内核缺少对PPP的支持,所以应该先升级系统内核。我是DL了linux-2.2.14的
内核,将原来的2.2.5-15 升级为支持PPP的2.2.14。(大家一定都非常熟悉如何升级内
核了,只要注意加入PPP支持就可以了,你要是多加入一些Network Options当然会更好
)
2 安装Modem卡
安装Modem 卡的driver(因为我的modem卡配有相应的Linux上的rpm driver,所以只是简
单的运行 rpm –ivh modem-driver.rpm就完成了。)
3 建立Modem拨号配置文件
运行netconf 来配置PPP/SLIP/PLIP属性,选择Add,在出现的PPP/SLIP/PLIP选项中选
择PPP,按Add,根据提示输入Phone number(Login name & Password暂时闲空着即可
), 按Accept在出现的ppp0设备上回车,就进入对该PPP设备的具体配置,根据情况
修改Line Speed, 并在最后的PAP节里的Username和Secret然后选择Accept完成了对
modem拨号的设置。
退出该配置界面,你可以/etc/sysconfig/networkscripts目录下找到刚才建立起来
的配置文件chat-ppp0&ifcfg-ppp0, 以及系统原有的ifup-ppp& ifdown-ppp。在
/etc/ppp下面还有用来存放用户名和口令的pap-secrects.
现在就可以试着拨号了, 运行 /etc/sysconfig/network-scripts/ifup ppp0
在modem的吱吱嘎嘎一阵乱叫声后,就登陆到Internet上了,拨号的成功信息会出现
在/var/log/messages里,最后两行就是 你所获得的local IP & remote IP地址。
用ifconfig –a也可以查看出来。
在ifconfig中可以看到拨号后的网络设备ippp0,以及它的端对端IP地址,接着核对路
由表(运行route命令即可),请注意缺省路由一定要指向端对端连接中的远端IP地址
。
# ping 本地PPP的IP地址
# ping 远端的IP地址
# ping 202.108.32.200 (fm365的IP地址)
# ping 202.118.224.2 (哈工大BBS的IP地址)
停止拨号
# /etc/sysconfig/ifdown ppp0
4.其他功能的设定:
(1) 怎么在/var/logs/messages下面有ppp-compress之类的三行错误信息?
在文件/etc/conf.modules里加入如下三行即可消除如下错误:
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
(2) 使用域名访问网络
Ping 202.108.224.2,一定已经通了,ping bbs.hit.edu.cn,为什么不通?
修改/etc/resolv.conf,将第一行search等字样去掉,只剩下外部的
nameserver 202.106.196.115 即可
(3) 如何在线路空闲一段时间后自动下线
电话费是如此之昂贵,总站着线路怎么成?要不至少我们应该为单位节约点资源吧
。
OK,方法很简单,
当然,首先应该把/etc/sysconfig/network-scripts/ifcfg-ppp0的选项PERSIST=”
yes”改为“no”.
并在该文件的选项PPPOPTIONS里加入如下内容
PPPOPTIONS=”idle 600”
Idle后面的参数单位为秒,代表着如果线路上空了10分钟后就自动断线
(4) 如何按需拨号?
Pppd提供按需拨号的特性,但是他要求我们提供remote IP地址,我们怎么知道ISP会
分配给我们那个地址,笑话!怎么办?到网上搜索 dial on demand的文章,你会发
现,我们需要有接受远程改变remote address IP的功能才行,所以在
/etc/rc.d/rc.local里先加入一行: echo 1 >/proc/sys/net/ipv4/ip_dynaddr
然后再在/etc/sysconfig/network-scripts/ifcfg-ppp0里的PPPOPTIONS里加入如下
内容:
PPPOPTIONS=”demand ipcp-accept-remote ipcp-accept-local”
启动拨号ifup ppp0, 然后 ping www.sina.com.cn,此时你就应该能听到modem的拨号声
了.
(5) 如何做到共享modem?
甲:你在linux上倒是可以拨号上网了,但是电话线只有一条,我想浏览网页怎
么办?
乙:那还不容易?让他们共享你Linux上的modem贝。
甲:那可怎么做阿?会不会很难?
乙:不用担心,我都能够实现在linux本机上按需拨号了,现在只需要在机器上
再安装一个代理不就完了嘛?
甲:用什么代理呢?
乙:用Linux的squid做代理贝
我是从网上DL了较新的Squid-2.2.tar.gz,然后configure, make, make
install,
再修改一下/usr/local/squid/etc/squid.conf里的一些参数就可以了,另外最好根据
README建立起存放cache文件的目录结构,然后把/usr/local/squid/bin/squid加入
到/etc/rc.d/rc.local里
然后你在其他机器的浏览器proxy里指明linux的IP地址及其端口号(缺省为
3128),输入 http://www.sina.com.cn ,咦,怎么还不行?快去linux机器上查看/etc/
sysconfig/network文件,看
FORWARD_IPV4=?怎么是false?快改成true吧,哈哈,是不是可以共享Linux上的
modem上网浏览了?
附:
Modem拨号需要的配置文件主要放置在/etc/ppp和/etc/sysconfig/network-scripts
# cd /etc/ppp
进入/etc/ppp目录,确认该目录下的文件配置正确(主要是查看pap-secrets和
chap-secrets)
# cd /etc/sysconfig/network-scripts
确认该目录下有ifup-ppp(2889字节)ifdown-ppp(1199字节)
# more /etc/sysconfig/network-scripts/chat-ppp0 .
其文件内容如下:
'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'ABORT' 'Invalid Login'
'ABORT' 'Login incorrect'
'' 'ATZ'
'OK' 'ATDT169' 请确认该电话号码
'CONNECT' ''
'TIMEOUT' '5'
'~--' ''
# more /etc/sysconfig/network-scripts/ifcfg-ppp0 .
其文件内容如下:
DEVICE="ppp0"
ONBOOT="no"
USERCTL="no"
MODEMPORT="/dev/modem"
LINESPEED="57600"
PERSIST="no"
DEFABORT="yes"
DEBUG="yes"
INITSTRING="ATZ"
DEFROUTE="yes"
HARDFLOWCTL="yes"
ESCAPECHARS="no"
PPPOPTIONS="demand idle 600 ipcp-accept-remote ipcp-accept-local lock
noauth"
#上面这行非常重要,是用于pppd的dial on demand, 超时断开的关键选项
PAPNAME="169"
REMIP="202.96.88.44" 此行必须有IP地址
NETMASK=""
IPADDR=""
MRU=""
MTU=""
DISCONNECTTIMEOUT=""
RETRYTIMEOUT="5"
BOOTPROTO="none"
确认/etc/sysconfig/network文件中 FORWARD_IPV4=true,/etc/sysconfig/network
的文件内容应该类似如下:
NETWORKING=yes
FORWARD_IPV4=true
HOSTNAME=test.hit.com.cn
DOMAINNAME=hit.com.cn
GATEWAY=0.0.0.0
GATEWAYDEV=eth0
确认/etc/rc.d/rc.local里有这样两行:
/usr/local/squid/bin/squid
echo 1 >/proc/sys/net/ipv4/ip_dynaddr (此行非常重要,是用于dial on demand的一
个决定性的因素)
superman
(2000/8/25)
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.244.244]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.375毫秒