首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
操作系统 :: unix

linux下如何拨号


http://www.gipsky.com/
  通常我们所遇到的问题是这样的:一个使用私有IP的局域网,一台联入Internet的机器,然后要你通过一定的手段将整个局域网联入Internet。其实,该方案的实现手段很多,比如在Windows下,你可以用诸如wingate、winroute以及MS Proxy等等代理软件实现,但是本文所论述的是怎样在linux下不花一分钱就解决问题。本文将从最基本的接入方法开始,一步步的教你实现将使用私有IP的局域网带入Internet的方法。



  二、接入方法:



  常用的接入方法有拨号上网和专线上网。通常,个人用户使用拨号上网方式,而单位用户则使用专线上网方式。并且,拨号方式可以分为PSTN和ISDN拨号,专线则可以分为ISDN专线和DDN专线。



  ISDN拨号方式一般用外置TA适配器,相当于模拟MODEM,Linux下的使用方法与外置MODEM一样,内置的一般叫ISDN PC卡, Linux下一般较难配置,单位用户也最好不买内置的,普通MODEM外置的也比内置的好。所以外置TA拨号上网可以归入外置MODEM一样,确实是一摸一样。其实ISDN拨号方式就是数字式的MODEM,专线方式就是在路由器内部自己拨号,通过拨号联接建立起来的类DDN方式。



  ISDN的专线方式必须使用ISDN路由器,专线方式128K电信部门一般给8个合法的IP地址,ISDN路由器拨号是在路由器中进行的,另外 ISDN路由器一般还带4个网口,本身集成了PPP Server的功能,又相当于一台拨号服务器,ISDN专线方式还支持回拨功能,由局方向用户拨号,建立联接,联接建立之后就相当于DDN了,Linux不涉及拨号,线路联接设置等,就是路由器提供静态IP。其实ISDN拨号方式就是数字式的 MODEM,专线方式就是在路由器内部自己拨号,通过拨号联接建立起来的类DDN方式。



  DDN即数字数据网,DDN的专线方式通常是这样实现的,路由器的广域网口用V.35连接到基带Medom,再由基带Medom连接到DDN线路。



  PSTN也就是我们通常所说的公用电话网。使用电话拨号上网也是目前个人用户最常用的上网方式。但是在linux下要实现电话拨号上网并不是一件轻松的事,因为虽然在linux下的拨号工具很多,但是好多都得进行复杂的配置。在这里,我们向读者介绍一种最具智能化的拨号工具--wvdial,并用 wvdial和ppp实现轻松上网。



  wvdial是linux下的智能化拨号工具,利用wvdial和ppp可以实现linux下的轻松上网。在整个过程中wvdial的作用是拨号并等待提示,并根据提示输入相应的用户名和密码等认证信息;ppp的作用是与拨入方协商传输数据的方法并维持该连接。



  1.wvdial及其相关配置



  wvdial的功能很强大,会试探着去猜测如何拨号及登录到服务器,同时它还会对常见的错误智能的进行处理,不象chat一样,要求你去写登录脚本。wvdial只有一个配置文件 /etc/wvdial.conf。wvdial的启动过程是这样的:首先载入wvdial.conf配置文件,然后再初始化modem并拨号,拨号后等待拨入方的响应,收到拨入方响应后则启动pppd。



  可以用wvdialconf程序自动生成wvdial.conf配置文件,自行该程序的格式为:



  wvdialconf /etc/wvdial.conf



  在执行该程序的过程中,程序会自动检测你的modem的相关配置,包括可用的设备文件名,modem的波特率,初始化字符等等相关的拨号信息,并根据这些信息自动生成wvdial.conf配置文件。如果/etc/wvdial.conf文件已经存在时,再次执行该命令只会改变其中的 Modem、Band、Init等选项。



  wvdial的执行格式为:



  wvdial --help | --version | section



  相关的说明如下:



  --help:显示简单的帮助信息



  --version:显示wvdial的版本号



  section:这里的section有点象windows里的ini文件,一个wvdial.conf配置文件可以有好多个section,每一个section由一些变量组成,即由 变量=值 的语句组成,如上所示。使用wvdialconf自动生成配置文件时将会自动生成一些常用的变量说明如下:



  Inherits=InheritedSection:



  使用wvdialconf自动生成配置文件时将会自动生成[Dialer Defaults],除此之外,你还 可以自定义你自己的 section。程序运行时,首先载入[Dialer Defaults],然后再用指 定的section的相应选项覆盖 [Dialer Defaults]的相应选项。比如,我们在 wvdial.conf中还有[Dialer Tom],假如我们运行 wvdail Tom,则系统将先读入[Dialer Defaults],然后再用[Dialer Tom]覆盖[Dialer Defaults]的相应选项。如果除了以上 的section之外还有[Dialer 169]并且内容如下:



  [Dialer Tom]



  Username=tom



  Password=xxx



  Inherits=169



  [Dialer 169]



  Phone=169



  如果这时候我们执行wvdial Tom则系统将先读入[Dialer Defaults],然后再用[Dialer Tom]覆盖 [Dialer Defaults]的相应选项,最后再用[Dialer 169]的相应选项来覆盖前二者的相应选项。由此可见,利用wvdial,我们可以很方便地在不同的ISP或modem之间来回移动(假如你有几个ISP或medom的话)。



  Medom=/dev/ttySx:用于指定是用的medom,缺省的为/dev/medom。当然,在这里我们的medom是由wvdialconf自动检测并配置的,所以我们可以忽略该变量。



  Dial Prefix=x: 假如你正在使用分机,拨外线需拨9时,可设该值为9。



  Username=xxxx:登录时的用户名



  Passwd=xxxxxx:登录密码



  Phone=xxxxx: 所拨的号码



  PPPP Path=:设置pppd所在的路径,缺省为/usr/sbin/pppd



  New PPPD= 1 or 0: pppd 2.3.0及其以上版本需要/etc/ppp/peers/wvdial文件,如果你的pppd是2.3.0以上版本请设为1.



  Auto Reconnect=on :断线时是否自动重新连接,缺省设为是。



  以上只是wvdial.conf中的常用选项,具体情参考wvdial手册。



  2.pppd及其相关配置



  pppd的配置选项相对要复杂得多,你可以用命令行的形式引用有关的选项,也可以把要引用的选项写到/etc/ppp/options中进行引用。



  下面的示例文件包含了最常用的选项及其相关的说明:



  # /etc/ppp/options



  # 如果指定了"noipdefault" 选项, pppd将使用拨入方提供的ip地址



  noipdefault



  # 选定该选项, pppd 将接受拨入方自己的ip地址



  ipcp-accept-remote



  # 设置缺省网关



  defaultroute



  # 在传输数据包之前,让拨入方先自我认证,注意一般的ISP(如169、163)都不包含该机制,故应选中noauth



  noauth



  # 如果连接空闲了n秒后自动断线



  idle n



  以上只是options中的常用选项,具体情参考pppd手册。



  三、实现手段



  1.原理



  从原理上,我们可以将实现的手段分为两种。其一是通过IP欺骗,也就是通过网络地址转换(NAT)来实现;其二是通过代理软件来实现,而通过代理的方法又可以分为传统代理方法和透明代理方法。



  1.1 IP欺骗的工作原理:



  IP欺骗技术已经出现好几年了,现在linux下的IP欺骗技术已经很成熟了。



  可以这样说:IP欺骗技术已经支持大多数的常用协议。那么IP欺骗是怎样工作的呢,原理很简单:客户机将进行IP欺骗的linux机器设置为缺省网关,当进行IP欺骗的linux机器收到客户机的请求包时,它对其进行改写,将源地址替换为自己的合法IP地址,将源端口换成一个新的端口号,并且对该过程进行记录;当收到Internet主机的响应包时,如果其端口号正是先前所指定的端口号则再对该包进行改写,将其目的IP及目的端口号替换为原来记录的客户机IP和端口号,然后再发送给客户机。



  1.2 代理的工作原理:



  在TCP/IP网络中,传统的通信过程是这样的:客户端向服务器请求数据,服务器响应该请求,将数据传送给客户端。在引入了代理服务器以后,这一过程变成了这样:客户端向服务器发起请求,该请求被送到代理服务器;代理服务器分析该请求,先查看自己缓存中是否有请求数据,如果有就直接传送给客户端,如果没有就代替客户端向该服务器发出请求。服务器响应以后,代理服务器将响应的数据传送给客户端,同时在自己的缓存中保留一份该数据的拷贝。这样,再有客户端请求相同的数据时,代理服务器就可以直接将数据传送给客户端,而不需要再向该服务器发起请求。



  2. IP欺骗的实现



  在内核版本2.2.x以上的linux中,我们可以通过ipchains来实现IP欺骗。



  2.1配置系统内核



  确定你的内核已经配置了支持IP欺骗的相关特性,如果没有,请你重新编译内核。一般在RedHat6.x以上,系统已经缺省配置了这些特性。



  2.2 装载所需模块



  你可以在系统启动时装载所需模块。可以在/etc/rc.d/rc.local文件中添加下列语句来在系统启动时自动装载所需模块。



  /sbin/depmod -a



  /sbin/modprobe ip_masq_ftp



  /sbin/modprobe ip_masq_raudio



  /sbin/modprobe ip_masq_irc



  /sbin/modprobe ip_masq_cuseeme



  /sbin/modprobe ip_masq_vdolive



  等等。



  2.3 启用IP转发



  在2.2.x以上的版本中,IP转发缺省是禁止的,你可以通过以下语句来启用IP转发。



  echo "1" > /proc/sys/net/ipv4/ip_forwarding



  如果你用的是Redhat的发行版本, 你也可以将/etc/sysconfig/network文件中的



  FORWARD_IPV4=false改为FORWARD_IPV4=true来启用IP转发。然后重新启动系统。



  2.4 配置客户端



  步骤一、将客户机的缺省网关设置为进行IP欺骗的机器的局域网口的IP;



  步骤二、设置客户机的DNS服务器为你真实的DNS服务器;



  步骤三、设置浏览器为直接与Internet相连;



  2.5 设置ipchains规则



  关于ipchains的详细语法,你可以参考IPCHAINS-HOWTO文档。这里我们只给出具体的应用。



  假设你的局域网IP为192.168.1.*,eth1为局域网口,eth0为广域网口,则你可以设置如下的ipchains规则来实现IP欺骗:



  #!/usr/bin



  /sbin/ipchians -A forward -s 192.168.1.0/24 -d 0/0 -i eth0 -j MASQ



  如果你使用拨号方式并且你的关于网口为ppp0,则相应的配置为:



  #!/usr/bin



  /sbin/ipchians -A forward -s 192.168.1.0/24 -d 0/0 -i ppp0 -j MASQ



  3. 传统代理的实现



  3.1 安装软件



  我们以目前最新的稳定版本squid-2.3.STABLEX为例。



  rpm包的安装



  1.进入/mnt/cdrom/RedHat/RPMS



  2.执行rpm -ivh squid-2.2.STABLE4-8.i386.rpm。



  当然,我们也可以在开始安装系统的过程中安装该软件。



  3. 源代码包的安装



  1.从http://www.squid-cache.org下载squid-2.3.STABLE2-src.tar.gz。



  2.将该文件拷贝到/usr/local目录。



  3.解开该文件 tar xvzf squid-2.3.STABLE2-src.tar.gz。



  4.解开后,在/usr/local生成一个新的目录squid-2.3.STABLE2,为了方便用mv命令将 该目录重命名为squid mv squid-2.3.STABLE2 squid;



  5.进入squid cd squid



  6.执行./configure 可以用./confgure --prefix=/directory/you/want指定安装目录



  系统缺省安装目录为/usr/local/squid。



  7.执行 make all



  8.执行 make install



  9.安装结束后,squid的可执行文件在安装目录的bin子目录下,配置文件在etc子目录下。



  3.2 配置squid



  由于RedHat各方面的优势(包括易用性,稳定性等等),全世界范围内使用该发行版的用户比较多,所以,我们下面的说明都是以 RedHat6.1环境下squid-2.2.STABLE4-8版本为主。从我的使用经验看来,该版本的squid要比其他版本稳定的多,以前的 1.1.22版本也比较稳定,但是在功能及灵活性方面有所欠缺。



  squid有一个主要的配置文件squid.conf,在RedHat环境下所有squid的配置文件位于/etc/squid子目录下。



  1.常用的配置选项



  因为缺省的配置文件有问题,所以我们必须首先修改该配置文件的有关内容,以便让squid跑起来。



  下面我们来看一看一些常用的选项:



  1.http_port



  说明:定义squid监听HTTP客户连接请求的端口。缺省是3128,如果使用HTTPD加速模式 则为80。你可以指定多个端口,但是所有指定的端口都必须在一条命令行上。



  2.cache_mem (bytes)



  说明:该选项用于指定squid可以使用的内存的理想值。这部分内存被用来存储以下对象 :



  In-Transit objects (传入的对象)



  Hot Objects (热对象,即用户常访问的对象)



  Negative-Cached objects (消极存储的对象)



  需要注意的是,这并没有指明squid所使用的内存一定不能超过该值,其实,该选项只 定义了squid所使用的内存的一个方面,squid还在其他方面使用内存。所以squid实际 使用的内存可能超过该值。缺省值为8MB。



  3.cache_dir Directory-Name Mbytes Level-1 Level2



  说明:指定squid用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir命令来定义多个这样的交换空间,并且这些交换空间可以分布不同的磁盘分区。"directory "指明了该交换空间的顶级目录。如果你想用整个磁盘来作为交换空间,那么你可以将该目录作为装载点将整个磁盘mount上去。缺省值为/var/spool/squid。"Mbytes"定义了可用的空间总量。需要注意的是,squid进程必须拥有对该目录的读写权力。"Level-1"是可以在该顶级目录下建立的第一级子目录的数目,缺省值为16。同理,"Level-2"是可以建立的第二级子目录的数目,缺省值为256。为什么要定义这么多子目录呢?这是因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加,这也会导致系统寻找某一个文件的时间大大增加,从而使系统的整体性能急剧降低。所以,为了减少每个目录下的文件数量,我们必须增加所使用的目录的数量。如果仅仅使用一级子目录则顶级目录下的子目录数目太大了,所以我们使用两级子目录结构。



  那么,怎么来确定你的系统所需要的子目录数目呢?我们可以用下面的公式来估算。



  已知量:



  DS = 可用交换空间总量(单位KB)/ 交换空间数目



  OS = 平均每个对象的大小= 20k



  NO = 平均每个二级子目录所存储的对象数目 = 256



  未知量:



  L1 = 一级子目录的数量



  L2 = 二级子目录的数量



  计算公式:



  L1 x L2 = DS / OS / NO



  注意这是个不定方程,可以有多个解。



  4.acl



  说明:定义访问控制列表。



  定义语法为:



  acl aclname acltype string1 ...



  acl aclname acltype "file" ...



  当使用文件时,该文件的格式为每行包含一个条目。



  acltype 可以是 src dst srcdomain dstdomain url_pattern urlpath_pattern time port proto method browser user 中的一种。



  分别说明如下:



  src 指明源地址。可以用以下的方法指定:



  acl aclname src ip-address/netmask ... (客户ip地址)



  acl aclname src addr1-addr2/netmask ... (地址范围)



  dst 指明目标地址。语法为:



  acl aclname dst ip-address/netmask ... (即客户请求的服务器的ip地址)



  srcdomain 指明客户所属的域。语法为:



  acl aclname srcdomain foo.com ... squid将根据客户ip反向查询DNS。



  dstdomain 指明请求服务器所属的域。语法为:



  acl aclname dstdomain foo.com ... 由客户请求的URL决定。



  注意,如果用户使用服务器ip而非完整的域名时,squid将进行反向的DNS解析来确 定其完整域名,如果失败就记录为"none"。



  time 指明访问时间。语法如下:



  acl aclname time [day-abbrevs] [h1:m1-h2:m2][hh:mm-hh:mm]



  day-abbrevs:



  S - Sunday



  M - Monday



  T - Tuesday



  W - Wednesday



  H - Thursday



  F - Friday



  A - Saturday



  h1:m1 必须小于 h2:m2,表达示为[hh:mm-hh:mm]。



  port 指定访问端口。可以指定多个端口,比如:



  acl aclname port 80 70 21 ...



  acl aclname port 0-1024 ... (指定一个端口范围)



  proto 指定使用协议。可以指定多个协议:



  acl aclname proto HTTP FTP ...



  method 指定请求方法。比如:



  acl aclname method GET POST ...



  5.http_access



  说明:根据访问控制列表允许或禁止某一类用户访问。



  如果某个访问没有相符合的项目,则缺省为应用最后一条项目的"非"。比如最后一条为允许,则缺省就是禁止。所以,通常应该把最后的条目设为"deny all" 或 "allow all" 来避免安全性隐患。



  3.3启动、停止squid。



  配置并保存好squid.conf后,可以用以下命令启动squid。



  squid



  或者,使用RedHat的启动脚本来启动squid.



  /etc/rc.d/init.d/squid start



  同样地,你也可以用下列脚本停止运行squid或重启动squid.



  /etc/rc.d/init.d/squid stop



  /etc/rc.d/init.d/squid restart



  4. 透明代理



  关于透明代理的概念我们已经在第一节将过了,下面我们看一下怎么样在squid中实现透明代理。



  透明代理的实现需要在Linux 2.0.29以上,但是Linux 2.0.30并不支持该功能,好在我们现在使用的通常是2.2.X以上的版本,所以不必担心这个问题。下面我们就用ipchains squid来实现透明代理。在开始之前需要说明的是,目前我们只能实现支持HTTP的透明代理,但是也不必太担心,因为我们之所以使用代理,目的是利用squid的缓存来提高Web的访问速度,至于提供内部非法ip地址的访问及提高网络安全性,我们可以用ipchains来解决。



  实现环境:RedHat6.x squid2.2.x ipchains



  4.1 linux的相关配置



  确定你的内核已经配置了支持透明代理解的相关特性,如果没有,请你重新编译内核。一般在RedHat6.x以上,系统已经缺省配置了这些特性。



  4.2squid的相关配置选项



  设置squid.conf中的相关选项,如下所示:



  http_port 3218



  httpd_accel_host virtual



  httpd_accel_port 80



  httpd_accel_with_proxy on



  httpd_accel_uses_host_header on



  说明:



  1.http_port 3128



  在本例中,我们假设squid的HTTP监听端口为3128,即squid缺省设置值。然后,把所有来自于客户端web请求的包(即目标端口为80)重定向到3128端口。



  2.httpd_accel_host virtual



  httpd_accel_port 80



  这两个选项本来是用来定义squid加速模式的。在这里我们用virtual来指定为虚拟主机模式。80端口为要加速的请求端口。采用这种模式时,squid就取消了缓存及ICP功能,假如你需要这些功能,这必须设置httpd_accel_with_proxy选项。



  3.httpd_accel_with_proxy on



  该选项在透明代理模式下是必须设置成on的。在该模式下,squid既是web请求的加速器,又是缓存代理服务器。



  4.httpd_accel_uses_host_header on



  在透明代理模式下,如果你想让你代理服务器的缓存功能正确工作的话,你必须将该选项设为on。设为on时,squid会把存储的对象加上主机名而不是ip地址作为索引。这一点在你想建立代理服务器阵列时显得尤为重要。



  4.3 ipchains的相关配置



  ipchains在这里所起的作用是端口重定向。我们可以使用下列语句实现将目标端口为80端口的TCP包重定向到3128端口。



  #接收所有的回送包



  /sbin/ipchains -A input -j ACCEPT -i lo



  #将目标端口为80端口的TCP包重定向到3128端口



  /sbin/ipchains -A input -p tcp -d 0.0.0.0/0 80 -j REDIRECT 80



  当然在这以前,我们必须用下面的语句打开包转发功能。



  echo 1 > /proc/sys/net/ipv4/ip_forward





<h6>您可能感兴趣的:</h6>
<p><a target="_blank" href="http://www.google.com/search?oe=utf8& ... en&q=site:linuxpk.com linux????β???" title="更多相关内容">更多相关内容</a></p>
<ul>
<li><a href="http://linuxpk.linuxpk.com/viewthread ... ;<b>Linux</b>论坛- Powered by Discuz! Board</a></li>
<li><a href="http://bbs.linuxpk.com/viewthread.php ... ;<b>Linux</b>论坛- Powered by Discuz! Board</a></li>
<li><a href="http://doc.linuxpk.com/79367.html">正文- 甲骨文发布<b>β</b>版11g数据库含182项新功能- <b>Linux</b>文库</a></li>
<li><a href="http://www.linuxpk.com/viewnews-15583.html">三大社区<b>Linux</b>版新功能大揭迷- <b>Linux</b>宝库- 全球最火中文开源门户</a></li>
<li><a href="http://bbs.linuxpk.com/thread-13584-1-1.html">软件测试步骤- 其他语言/软件测试- <b>Linux</b>论坛全球最火中文开源论坛 <b>...</b></a></li>
<li><a href="http://doc.linuxpk.com/36672.html">正文- 明明白白"进补"深入解析什么是Hotfix与SP - <b>Linux</b>文库</a></li>
<li><a href="http://www.linuxpk.com/viewnews-11519.html">微软发布服务器虚拟技术将支持<b>Linux</b> - <b>Linux</b>宝库- 全球最火中文开源门户</a></li>
<li><a href="http://doc.linuxpk.com/57666.html">正文- CAD中直接画箭头的命令的一个方法- <b>Linux</b>文库</a></li>
</ul>
<< adsl共享上网 isa网卡配置 >>
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号