📄 00000014.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: reden (Offer 快快来啊 ~!), 信区: Linux <BR>标 题: 虚拟IP <BR>发信站: BBS 水木清华站 (Tue Mar 23 13:56:19 1999) <BR> <BR> 虚拟IP <BR> <BR> by thhsieh from <A HREF="http://linuxfab.cx">http://linuxfab.cx</A> <BR> <BR> <BR> 这几天花了不少时间在研究这个,发现这真是相当实用而且强大,相信是所有 <BR> <BR> 网管人员都不可不知道的。因此,我试图将它整理成文件,让大家叁考。 <BR> <BR> <BR> 「虚拟 IP 」其实是我自创的名词。在 Linux 中,它指的是 IP-Masq, 而在 <BR> <BR> FreeBSD 中,它指的是 NAT service,在我看来二者功能很相近,因此我就用 <BR> <BR> 这样的名词来统称它们。至於在其他的 UNIX 中能否找到类似的东东,我不清 <BR> <BR> 楚,如果有人知道的麻烦为我补充一下。关於这项技术,我算是相当後知後觉 <BR> <BR> 的了,早在一年多前,Linux 就已开始发展,而 FreeBSD 更是在 2.1.X 版发 <BR> <BR> 展的中期就有了,网路上已有相当多且不错的文件在讨论它们。如果大家觉得 <BR> <BR> 我这里写得不够详尽可以去各大 BBS 精华区去找资料。 <BR> <BR> <BR> thhsieh(居士) <BR> <BR> <BR> <BR> 首先来谈谈什麽是「虚拟 IP」。我们都知道在 TCP/IP 的架构下,所有想上网路 <BR> <BR> 的电脑,不论是用何种方式连上网路,都必须要有一个 *唯一* 的 IP-address。 <BR> <BR> 举两个最常见的例子: 学校的电脑用网路线连在一起,是经由 ethernet 介面连 <BR> <BR> 上网路,则该 ethernet 介面必须要有 IP-addr., 如 freebsd.phys.ntu.edu.tw <BR> <BR> 的 ethernet IP 为 140.112.52.20 。另一个常见的网路介面为 PPP, 通常是用 <BR> <BR> 在 modem 拨接上,当您从家里透过 modem 拨接上远端的 modem server 时,有 <BR> <BR> 些 server 会从中建立起远端与您的电脑间的 PPP 连线协定,於是,您的电脑就 <BR> <BR> 会有一个 PPP 介面,而它的 IP-addr. 则由远端 server 指定给您 (这一切都是 <BR> <BR> 全自动进行) ,於是您就可以透过 modem (PPP) 对外连线,就好像您的电脑直接 <BR> <BR> 接在网路上一样。 <BR> <BR> <BR> 在我们系上的计算机室,目前有两部机器可以做 PPP modem server (但规定只有 <BR> <BR> 老师才能使用) ,一是 freebsd.phys, 另一是 linux.phys。 freebsd.phys 用 <BR> <BR> 的是一条独立电话线,可以 24 小时全天候服务;而 linux.phys 用的是机房的 <BR> <BR> 电话分机,故只有下班才能用。按照上头所述,如果同时要提供两个 modem 的 <BR> <BR> PPP 拨接服务,就必须要有两个空的 IP-addr. 留下来,以便 PPP 连线建立时设 <BR> <BR> 定给用户的电脑。因此,在过去计算机室就为此保留了两个 IP: 140.112.52.250 <BR> <BR> 及 140.112.52.252, 让 ppp server 使用。然而,这样一来就造成了 IP 的浪 <BR> <BR> 费,很明显的,当无人拨进来时这两个 IP 根本没有人使用,而且 modem server <BR> <BR> 也不是无时无刻都会有人要拨进来。这时候,所谓的「虚拟 IP 」就派上用场 <BR> <BR> 了。 <BR> <BR> <BR> 简单的说,虚拟 IP 就是假的 IP, 也就是未经注册的 IP, 但 server 端有能力 <BR> <BR> 将这假的 IP 变成真的 IP 送往网际网路,通行无阻,就好像有真的 IP 一样。 <BR> <BR> 以下是简单的架构图: <BR> <BR> <BR> <BR> 也就是说,在实做上我们必须将网路分成两块,一块就是使用虚拟 IP 的电脑群, <BR> <BR> 它们不能与使用真正已注册过的 IP 的电脑 (或 Internet) 混在一起。而二者之 <BR> <BR> 间的桥梁要靠一部拥有 IP-Masq 的 Linux 或 NAT 的 FreeBSD 连起来。注意到用 <BR> <BR> 做「桥梁」的 server 拥有两个 (以上) 的网路介面,分别接 local net 与 <BR> <BR> internet,该 server 即称之为 "gateway" 或 "router",这些不同的网路介面可 <BR> <BR> 以有不同的IP-addr.。所以,我们常说某某的电脑的 IP 是多少,其实不是百分之 <BR> <BR> 百正确,如果该电脑拥有多个网路介面的话,那它不同的介面可能会有不同的 <BR> <BR> IP-addr.。眼前的例子就是 linux.phys 与 freebsd.phys, 在使用者拨接上来时 <BR> <BR> 它就会自动建立起ppp0 这个介面,加上原来的 ethernet 介面就是两个。在过 <BR> <BR> 去,它们的 ppp0 介面与 ethernet 介面的 IP 是设得一样的,以 freebsd.phys <BR> <BR> 来说: <BR> <BR> <BR> <BR> 其中 ed0 即为 FreeBSD 的 ethernet 介面。现在要使用虚拟 IP 的技术,我们 <BR> <BR> 将会设定其 ppp0 为不同 (虚拟) 的 IP。同理,一部电脑如果装两张网路卡同时 <BR> <BR> 接两个网路,则它就会有两个 ethernet 介面: <BR> <BR> <BR> <BR> 要注意的是,如果 server 中的各网路介面 IP 的号码如果相同,或前几码相同 <BR> <BR> (如 freebsd.phys 的例子),则代表它所连接的子网路属同一个网域,否则为不 <BR> <BR> 同网域。例如 freebsd.phys 的 ed0 是属於 140.112.52.0 这个网域,而拨接上 <BR> <BR> 来的用户其 gateway 为 140.112.52.20 (ppp0 的 IP), 其本身的 IP 为 <BR> <BR> 140.112.52.252, 则它们也都属於 140.112.52.0 这个网域。 <BR> <BR> <BR> 前面提过,使用像 140.112.52.252 这种已注册、合法的 IP 来给拨接用户使用 <BR> <BR> 会造成浪费,因此,底下我们就用虚拟 IP 并透过 FreeBSD 的 NAT 来做拨接服 <BR> <BR> 务。在 RCF 1597 的定义中,可以不经注册而任意使用的 IP 为: <BR> <BR> 10.0.0.0 <BR> <BR> - <BR> <BR> 10.255.255.255 <BR> <BR> 172.16.0.0 <BR> <BR> - <BR> <BR> 172.31.255.255 <BR> <BR> 192.168.0.0 <BR> <BR> - <BR> <BR> 192.168.255.255 <BR> <BR> <BR> 依规定,凡是这类的 IP 都不能直接出现在网际网路上,因此当我们私底下 <BR> <BR> (不直接连上网际网路) 用这些 IP 时,不必担心与别人冲到。在此,我们的虚 <BR> <BR> 拟 IP 就选用 192.168.0.0 这一组,则以 FreeBSD 为例,其 PPP 与 <BR> <BR> ethernet 的架构就变为: <BR> <BR> <BR> <BR> <BR> <BR> <BR> <BR> <BR> 也许有人会问,为什麽 FreeBSD 一定要有 NAT? 若没有不是一样可以通吗? 没 <BR> <BR> 错,一样可以通,但这样一来就违反了规定, 192.168.1.X 就不再是虚拟 IP, 而 <BR> <BR> 变成真实 IP, 直接连上 internet 了 (仅管 modem 的连线是很短暂的)。 NAT 所 <BR> <BR> 做的工作,就是将 192.168.1.X 这类虚拟 IP ,变成真实的 IP 出去,让外界永 <BR> <BR> 远不知道实际上有这些虚拟 IP 存在。举个例子,假设您是在此架构下的用户端, <BR> <BR> 您可以经由 FreeBSD (或 Linux) 自由地连往 internet, 不论是 telnet, ftp, <BR> <BR> www ....假设您现在用 telnet 连往 bbs, 则虽然您用的是虚拟 IP, 但如果您去 <BR> <BR> 看 bbs 的资讯看您是来自何方时,显示却会是真实的 IP (以上头的例子,即为 <BR> <BR> 140.112.52.20) <BR> <BR> <BR> 这就是虚拟 IP 最奇妙的地方! 在外界,您永远是以「真实 IP」出现,但人家永 <BR> <BR> 远不会知道,其实您是来自 Linux/FreeBSD 底下的一部用「虚拟 IP」的电脑。因 <BR> <BR> 此,我只要在 Linux/FreeBSD server 端注册一个真实 IP, 则透过此技术我可以 <BR> <BR> *合法地*在後头串接一大串使用虚拟 IP 的电脑。这麽做,其优点就如前所述,且 <BR> <BR> 使用虚拟IP 的电脑等於是隐藏在 Linux/FreeBSD server 身後,受到 server 端 <BR> <BR> 完全的保护。而缺点是,使用虚拟 IP 的电脑不能公开,也就是,它不能架 <BR> <BR> server (谁知道世上有这麽一台 www 或 ftp server 存在?),也不能接 mail (在 <BR> <BR> 外头的电脑怎麽知道mail 要送到这里来?),当然,也不能被外头的电脑 telnet <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -