📄 00000014.htm
字号:
<BR> 进来。请特别注意我这「公开」与「外头」的字眼,事实上使用虚拟 IP 还是可以 <BR> <BR> 架 server, 接 mail 等,但只有同在同一个虚拟 IP 网域下的机器才知道,因为 <BR> <BR> 同在一部 Linux/FreeBSDserver 的管理下,它会为大家做好沟通的工作。但外头 <BR> <BR> 的电脑则不行了。 <BR> <BR> <BR> 再来谈「网域」的问题。例如,利用这样的技术,我们可以将机房中 PPP 拨接 <BR> <BR> server规划如下: <BR> <BR> <BR> <BR> <BR> <BR> <BR> <BR> 大家会奇怪,这样如果 client 1 与 client 2 若同时上来, IP 不是冲到了吗? <BR> <BR> 不会! 第一: client 1 与 client 2 属於不同网域,分别由 freebsd 与 linux掌 <BR> <BR> 管。第二: freebsd 用 NAT, linux 用 IP-Masq 将这两个网域藏起来了,所以实 <BR> <BR> 际上它们谁也瞧不见对方。假设双方连上来的人在 bbs 上碰面,则在我们看来, <BR> <BR> 如前所述, client 1 是来自 140.112.52.20 这个 IP, 而 client 2 是来自 <BR> <BR> 140.112.52.122 这个 IP。 <BR> <BR> <BR> 讲了这麽多,我们已可以约略看出虚拟 IP 的应用了。前面所提的 PPP 拨接是一 <BR> <BR> 个,另一个就是同一实验室里头的电脑。并非所有的电脑都需要对外公开的,尤其 <BR> <BR> 是用做平行计算的电脑群。现在将十多部甚至一、两百部电脑透过网路连起来做平 <BR> <BR> 行计算已成风潮,像我们系上有许多老师听说就是此道的高手。但是,如果说一个 <BR> <BR> 实验室要搞平行计算而申请十多个或上百个 IP 的话,是相当浪费的 (事实上根本 <BR> <BR> 不可能,因为没那麽多 IP),因此,使用虚拟 IP 技术,可以大大地节省网路资 <BR> <BR> 源。 <BR> <BR> <BR> 好了,以下我简述实作的方法: 不论是用 Linux 的 IP-Masq 或 FreeBSD 的 NAT, <BR> <BR> 其设定的道理都相同,主要有以下四个步骤: <BR> <BR> <BR> 1.设定好 server 端的网路介面。就我们的例子,一为 ethernet 介面,另一 <BR> <BR> 即为供 modem 拨接上来的 PPP 介面。其设定方式算是另一个专题,这里 <BR>不 <BR> <BR> 详述。 <BR> <BR> 2.设定 Kernel, 使其拥有 IP-Masq (for Linux) 或 IP-Divert (for Fr <BR> <BR> eeBSD) 的能力。於 FreeBSD, 还要同时起动 natd server。 <BR> <BR> 3.设定 IP-Firewall rule ,建立虚拟 IP 与真实 IP 之间的连线。 <BR> <BR> 4.设定 client 端以使用 server 端的虚拟 IP。就我们的例子而言,如果原本 <BR> <BR> <BR> client 端已能顺利地由 modem 拨接上线,则理论上 server 端改用虚拟 <BR> IP <BR> <BR> 後 client 不需要改变任何设定,原因是 client 端的 IP 与 gateway <BR>设定 <BR> <BR> 是每次在 PPP 连线建立时即全自动进行 (由 server 端控制)。但如果 <BR> <BR> client 端是用 ethernet 与 server 端连线的话,则必须进行这一步的 <BR>设 <BR> <BR> 定。 <BR> <BR> <BR> 以下我就简述第 2, 3 步的实作, Linux 与 FreeBSD 分别讲,同时也讲一下使用 <BR> <BR> 了虚拟 IP 之後, client 端所呈现的网域环境 (第 4 步)。 <BR> <BR> <BR> 有一点要稍作补充: 不论是 IP-Masq 或 IP-Divert & NAT, 其设计上都是基於 <BR> <BR> IP-Firewall 的。所谓 IP-Firewall 即俗称「防火墙」,是一种相当强大的网路 <BR> <BR> 防护系统,它可以在网路封包的层级直接控制封包的传输,如是否让来自某 IP的 <BR> <BR> 封包进入、通过、输出此 Firewall server。在很多私人网路中,其网域与外界网 <BR> <BR> 路之间常常会装设一台 Firewall server, 以限定、或完全隔绝内外网路的流通, <BR> <BR> 以达到保护内部网路的目的。因此,如有外来的入侵者想入侵内部网路的话,则第 <BR> <BR> 一步就是要突破 Firewall server 这一关,而这通常是很不容易办到的。文件上 <BR> <BR> 说, IP-Masq *也许是* 比起 IP-Firewall 安全等级更高的防护,我猜原因可能 <BR> <BR> 是内部网路的虚拟 IP 是靠 IP-Masq server 建立起来的,如果外来入侵者在千辛 <BR> <BR> 万苦之後终於破坏了 server, 但这也等於破坏了 IP-Masq 的架构,也就等於整个 <BR> <BR> 虚拟 IP 网路都不存在了 (连不通),他还是无法进而入侵内部网路的电脑。正因 <BR> <BR> 为 IP-Masq 或 IP-Divert 是架构在 IP-Firewall 之上,因此我们必须要有第 3 <BR> <BR> 步的「设定 IP-Firewall rule」,而且设定这一步时要特别小心,如果设错了有 <BR> <BR> 可能造成 server 端网路完全不通。 <BR> <BR> <BR> <BR> Linux Masq <BR> <BR> <BR> 我们从第二步设定 Kernel, 并打开 IP-Masq 的功能开始。文件上说只要是 <BR> <BR> Kernel-2.0.x 的版本再加 patch 皆可,我这里所用的 Kernel 版本为 2.0.34, 完全 <BR> <BR> <BR> 不需 patch 即可使用,所以建议用这个版本 (或以上)的 kernel。在 make config <BR> <BR> <BR> 时,请打开以下的选项 (节录自 IP-Masquerade MiniHOWTO): <BR> <BR> <BR> * Prompt for development and/or incomplete code/drivers <BR> <BR> CONFIG_EXPERIMENTAL <BR> <BR> - 如此您即可选取 *正在实验中的* IP-Masq 功能。 <BR> <BR> <BR> * Enable loadable module support <BR> <BR> CONFIG_MODULES <BR> <BR> - 如此您可使用 kernel 的模组功能。 <BR> <BR> <BR> * Networking support <BR> <BR> CONFIG_NET <BR> <BR> <BR> * Network firewalls <BR> <BR> CONFIG_FIREWALL <BR> <BR> <BR> * TCP/IP networking <BR> <BR> CONFIG_INET <BR> <BR> <BR> * IP: forwarding/gatewaying <BR> <BR> CONFIG_IP_FORWARD <BR> <BR> <BR> * IP: firewalling <BR> <BR> CONFIG_IP_FIREWALL <BR> <BR> <BR> * IP: masquerading (EXPERIMENTAL) <BR> <BR> CONFIG_IP_MASQUERADE <BR> <BR> - 虽然它被归类为 experimental, 但您一定要选它。 <BR> <BR> <BR> * IP: ipautofw masquerade support (EXPERIMENTAL) <BR> <BR> CONFIG_IP_MASQUERADE_IPAUTOFW <BR> <BR> - 建议您选这个。 <BR> <BR> <BR> * IP: ICMP masquerading <BR> <BR> CONFIG_IP_MASQUERADE_ICMP <BR> <BR> - 支援 ICMP 的封包,主要用於从虚拟 IP ping 外头的世界,可选 <BR> <BR> 可不选。 <BR> <BR> <BR> * IP: always defragment <BR> <BR> CONFIG_IP_ALWAYS_DEFRAG <BR> <BR> - 强烈建议您选这个。 <BR> <BR> <BR> * Dummy net driver support <BR> <BR> CONFIG_DUMMY <BR> <BR> - 建议您选这个。 <BR> <BR> <BR> Compile 完 kernel 与 module 之後,重新启动电脑,请将 IP-Masq 所需的 module <BR>载 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -