虚拟IP的配置方法
首先来谈谈什麽是「虚拟 IP」。我们都知道在 TCP/IP 的架构下,所有想上网络的电脑,不论是用何种方式连上网络,都必须要有一个 *唯一* 的 IP-address。
举两个最常见的例子: 学校的电脑用网络线连在一起,是经由 ethernet 介面连上网络,则该 ethernet 介面必须要有 IP-addr., 如 u.edu.tw  的 ethernet IP 为 140.112.52.20 。另一个常见的网络介面为 PPP, 通常是用在 modem 拨接上,当您从家里透过 modem 拨接上远端的 modem server 时,有些 server 会从中建立起远端与您的电脑间的 PPP 连线协定,於是,您的电脑就会有一个 PPP 介面,而它的 IP-addr. 则由远端 server 指定给您 (这一切都是全自动进行) ,於是您就可以透过 modem (PPP) 对外连线,就好像您的电脑直接接在网络上一样。
在我们系上的计算机室,目前有两部机器可以做 PPP modem server (但规定只有老师才能使用) ,一是 freebsd.phys, 另一是 linux.phys。 freebsd.phys 用的是一条独立电话线,可以 24 小时全天候服务;而 linux.phys 用的是机房的电话分机,故只有下班才能用。按照上头所述,如果同时要提供两个 modem 的
PPP 拨接服务,就必须要有两个空的 IP-addr. 留下来,以便 PPP 连线建立时设定给用户的电脑。因此,在过去计算机室就为此保留了两个 IP: 140.112.52.250  及 140.112.52.252, 让 ppp server 使用。然而,这样一来就造成了 IP 的浪费,很明显的,当无人拨进来时这两个 IP 根本没有人使用,而且 modem server 
也不是无时无刻都会有人要拨进来。这时候,所谓的「虚拟 IP 」就派上用场
了。
简单的说,虚拟 IP 就是假的 IP, 也就是未经注册的 IP, 但 server 端有能力将这假的 IP 变成真的 IP 送往网际网络,通行无阻,就好像有真的 IP 一样。
以下是简单的架构图:
也就是说,在实做上我们必须将网络分成两块,一块就是使用虚拟 IP 的电脑,它们不能与使用真正已注册过的 IP 的电脑 (或 Internet) 混在一起。而二者之间的桥梁要靠一部拥有 IP-Masq 的 Linux 或 NAT 的 FreeBSD 连起来。注意到用做「桥梁」的 server 拥有两个 (以上) 的网络介面,分别接 local net 与
internet,该 server 即称之为 "gateway" 或 "router",这些不同的网络介面可以有不同的IP-addr.。所以,我们常说某某的电脑的 IP 是多少,其实不是百分之百正确,如果该电脑拥有多个网络介面的话,那它不同的介面可能会有不同的
IP-addr.。眼前的例子就是 linux.phys 与 freebsd.phys, 在使用者拨接上来时它就会自动建立起ppp0 这个介面,加上原来的 ethernet 介面就是两个。在过去,它们的 ppp0 介面与 ethernet 介面的 IP 是设得
一样的,以 freebsd.phys  来说:
其中 ed0 即为 FreeBSD 的 ethernet 介面。现在要使用虚拟 IP 的技术,我们将会设定其 ppp0 为不同 (虚拟) 的 IP。同理,一部电脑如果装两张网络卡同时接两个网络,则它就会有两个 ethernet 介面:
要注意的是,如果 server 中的各网络介面 IP 的号码如果相同,或前几码相同
(如 freebsd.phys 的例子),则代表它所连接的子网络属同一个网域,否则为不
同网域。例如 freebsd.phys 的 ed0 是属於 140.112.52.0 这个网域,而拨接上来的用户其 gateway 为 140.112.52.20 (ppp0 的 IP), 其本身的 IP 为
140.112.52.252, 则它们也都属於 140.112.52.0 这个网域。
前面提过,使用像 140.112.52.252 这种已注册、合法的 IP 来给拨接用户使用会造成浪费,因此,底下我们就用虚拟 IP 并透过 FreeBSD 的 NAT 来做拨接服务。在 RCF 1597 的定义中,可以不经注册而任意使用的 IP 为:
10.0.0.0
tcp ip协议中ip是指-
10.255.255.255
172.16.0.0
-
172.31.255.255
192.168.0.0
-
192.168.255.255  依规定,凡是这类的 IP 都不能直接出现在网际网络上,因此当我们私底下
(不直接连上网际网络) 用这些 IP 时,不必担心与别人冲到。在此,我们的虚拟 IP 就选用 192.168.0.0 这一组,则以 FreeBSD 为例,其 PPP 与
ethernet 的架构就变为:
也许有人会问,为什麽 FreeBSD 一定要有 NAT? 若没有不是一样可以通吗? 没错,一样可以通,但这样一来就违反了规定, 192.168.1.X 就不再是虚拟 IP, 而变成真实 IP, 直接连上 internet 了 (仅管 modem
的连线是很短暂的)。 NAT 所做的工作,就是将 192.168.1.X 这类虚拟 IP ,变成真实的 IP 出去,让外界永远不知道实际上有这些虚拟 IP 存在。举个例子,假设您是在此架构下的用户端,您可以经由 FreeBSD (或 Linux) 自由地连往 internet, 不论是 telnet, ftp,    www ....假设您现在用 telnet 连往 bbs, 则虽然您用的是虚拟 IP, 但如果您去看 bbs 的资讯看您是来自何方时,显示却会是真实的 IP (以上头的例子,即为
140.112.52.20)
这就是虚拟 IP 最奇妙的地方! 在外界,您永远是以「真实 IP」出现,但人家永远不会知道,其实您是来自 Linux/FreeBSD 底下的一部用「虚拟 IP」的电脑。因此,我只要在 Linux/FreeBSD server 端注册一个真实 IP, 则透过此技术我可以  *合法地*在後头串接一大串使用虚拟 IP 的电脑。这麽做,其优点就如前所述,且使用虚拟IP 的电脑等於是隐藏在 Linux/FreeBSD server 身後,受到 server 端完全的保护。而缺点是,使用虚拟 IP 的电脑不能公开,也就是,它不能架
server (谁知道世上有这麽一台 www 或 ftp server 存在?),也不能接 mail (在外头的电脑怎麽知道mail 要送到这里来?),当然,也不能被外头的电脑 telnet  进来。请特别注意我这「公开」与「外头」的字眼,事实上使用虚拟 IP 还是可以架 server, 接 mail 等,但只有同在同一个虚拟 IP 网域下的机器才知道,因为同在一部 Linux/FreeBSDserver 的管理下,它会为大家做好沟通的工作。但外头
的电脑则不行了。
再来谈「网域」的问题。例如,利用这样的技术,我们可以将机房中 PPP 拨接
server规划如下:
大家会奇怪,这样如果 client 1 与 client 2 若同时上来, IP 不是冲到了吗?
不会! 第一: client 1 与 client 2 属於不同网域,分别由 freebsd 与 linux掌管。第二: freebsd 用 NAT, linux 用 IP-Masq 将这两个网域藏起来了,所以实际上它们谁也瞧不见对方。假设双方连上来的人在 bbs 上碰面,则在我们看来,如前所述, client 1 是来自 140.112.52.20 这个 IP, 而 client 2 是来自
140.112.52.122 这个 IP。
讲了这麽多,我们已可以约略看出虚拟 IP 的应用了。前面所提的 PPP 拨接是一个,另一个就是同一实验室里头的电脑。并非所有的电脑都需要对外公开的,尤其是用做平行计算的电脑。现在将十多部甚至一、两百部电脑透过网络连起来做平行计算已成风潮,像我们系上有许多老师听说就是此道的高手。但是,如果说一个实验室要搞平行计算而申请十多个或上百个 IP 的话,是相当浪费的 (事实上根本不可能,因为没那麽多 IP),因此,使用虚拟 IP 技术,可以大大地节省网络资源。
好了,以下我简述实作的方法: 不论是用 Linux 的 IP-Masq 或 FreeBSD 的 NAT,  其设定的道理都相同,主要有以下四个步骤:
1.设定好 server 端的网络介面。就我们的例子,一为 ethernet 介面,另一
即为供 modem 拨接上来的 PPP 介面。其设定方式算是另一个专题,这里不
详述。
2.设定 Kernel, 使其拥有 IP-Masq (for Linux) 或 IP-Divert (for Fr
eeBSD) 的能力。於 FreeBSD, 还要同时起动 natd server。
3.设定 IP-Firewall rule ,建立虚拟 IP 与真实 IP 之间的连线。
4.设定 client 端以使用 server 端的虚拟 IP。就我们的例子而言,如果原本
client 端已能顺利地由 modem 拨接上线,则理论上 server 端改用虚拟IP
後 client 不需要改变任何设定,原因是 client 端的 IP 与 gateway  设定
是每次在 PPP 连线建立时即全自动进行 (由 server 端控制)。但如果
client 端是用 ethernet 与 server 端连线的话,则必须进行这一步的设
定。
以下我就简述第 2, 3 步的实作, Linux 与 FreeBSD 分别讲,同时也讲一下使用了虚拟 IP 之後, client 端所呈现的网域环境 (第 4 步)。
有一点要稍作补充: 不论是 IP-Masq 或 IP-Divert & NAT, 其设计上都是基於
IP-Firewall 的。所谓 IP-Firewall 即俗称「防火墙」,是一种相当强大的网络防护系统,它可以在网络封包的层级直接控制封包的传输,如是否让来自某 IP的封包进入、通过、输出此 Firewall server。在很多私人网络中,其网域与外界网

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。