首页 > 网管 > 局域网 > 正文

用Linux将局域网带入Internet(1)

2019-11-05 03:10:14
字体:
来源:转载
供稿:网友

  通常我们所碰到的问题是这样的:一个使用私有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.1 安装软件

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

rpm包的安装

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

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

当然,我们也可以在开始安装系统的过程中安装该软件。
QQRead.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.1 安装软件

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

rpm包的安装

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

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

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表