虚拟 IP 与 NAT 技术 当你已经学会使用ipchains 这一个 Linux 的功能来实现 IP 伪装和为网路建立简单的防范之后(这个功能等一下就会提到了)你就可以利用 Linux 来为您做更多的事情﹕其中有一个非常好的功能叫 NAT (Network Address Translating) 使用 NAT有什么好处呢﹖ 首先﹐如果您当初架设的网路使用了私有位址(就是虚拟 IP)而现在又想连上 internet 虽然您可以对您的网路重新分配 IP 地址﹐但这样做是非常费心和隐藏的问题多多这时候﹐ NAT 就可以帮到您了﹕您只需用一台 Linux 主机安装两片网路卡﹐一张使用合法 IP 地址来担当对外地连线﹐另外一张使用私有 IP 负责和内部网路沟通 然后﹐您为那张对外连线的网卡建立多个 IP alias ﹐当收到传给那些 IP alias 的请求的时候﹐可以把这些请求通过 NAT 转送给内部真正负责网路服务的伺服器﹐而那些伺服器根本无需更改 IP 地址﹐依旧使用原来的私有 IP 就可以 使用 NAT 还有一个好处是﹐可以分流网路负担 (load balancing) ﹐也就是说﹐您可以将同一个 IP alias 的请求分别导向好几台执行相同服务的伺服器这样对于处理大量数据的服务是非常好用的 安装第二块网路卡 好了由『区域网路的架构』及上面提到的『NAT主机的设定』都可以知道由于我们需要提供区域内的虚拟网路系统(区域网路LAN)所以在你的 Linux 主机中应该要安装两块网路卡才是不过对于第二块网路卡的安装在这里有些建议基本上第二张网路卡最好不用使用与第一张相同晶片的卡例如你第一张卡使用 RTL 那第二张卡最好使用别的卡因为鸟哥曾经发现在鸟哥的 RedHat 英文版中安装两块相同的(同公司出的) RTL 结果竟然两张卡的输出输入都是经由第一张!也就是说第二张卡根本就没有用处!并且也很容易发生 eth 与 eth 捉错的情况!所以请记得『第二张网路卡不要使用与第一张网路卡相同晶片的卡!』 好了!假设你已经安装了第一块网路卡而且也已经由『连上 Internet』的方法连上网际网路了那接下来就是要开始安装第二块网路卡了如何安装第二张网路卡呢?依序以下列的步骤安装就可以完成啰! 关机硬体安装这个不用再提了吧!先关机然后拆开外壳插入PCI网路卡即可 开机硬体扫瞄然后再开机而于开机的过程中你的 Linux 会主动去找到这一张网路卡(如果这张卡是有被 Linux 支援的!)果真如此的话那在这一步骤中 Linux 会要求你输入 IP 与 GateWay 等等的 IP 位址由于这一张网路卡是定义在内部网路使用的介面因此你可以输入 而 子遮罩网路为 DNS与Gateway都写成自己 即可! 安装网路卡驱动程式如果在上一步骤中你的网路卡并不能被捉到哪就比较伤脑筋!请到前一个页面参考特殊的网路卡的驱动程式安装方法 检视设定 /etc/sysconfig/networkscripts/ifcfgeth在安装完了网路卡的驱动程式之后在 /etc/sysconfig/networkscripts/ 中应该会有 ifcfgeth 这一个档案这一个档案可以设定如下(当然你也可以依自己的喜好设定) [root@tsai networkscripts]# more ifcfgeth DEVICE=eth BOOTPROTO=static BROADCAST= IPADDR= NETMASK= NETWORK= ONBOOT=yes 上面的设定中就变成了eth为对外的连接介面eth为对内的连接介面! 启动第二张网路卡使用『ifup eth』 来启动之 区域网路与 Internet 连线示意图 基本上我们连线区域网路的连线方法有如下面所示 透过具有 NAT 功能的 Linux 主机来达成内部网路与外部网路的沟通!详细的说明可以到『区域网路的架构』来看看 架设 NAT 好了说了这么多终于要实地的演练 NAT 机器了!如何设定呢?这里要再提醒一下 ·第一张网路卡 eth 为对外的连线介面具有实体 IP ·第二张网路卡 eth 为对内的连线介面为虚拟 IP 基本上你要做的事情其实真的很简单只要 确定第一张网路卡可以连上网际网路关于对外的连线上网际网路方法请参考『连上 Internet 』的说明这里就不多说了 确定第二张网路卡可以正常的启动这是一张具有虚拟 IP 的网路卡请确定他可以被启动另外这里的设定是这样的 oIP为 o子遮罩网路为 ogateway 为 o惯用的 DNS server 为 开启 IPV确定 /etc/sysconfig/network 这个档案中有下列这一行FORWARD_IPV=yes这是开启传送 IP 服务的一个设定如果没有的话请将这一行加入 network 这个档案中然后执行 # /etc/rcd/initd/network reload 确定 ipchains 已经编译进核心这个比较麻烦不过如果你是用这个网页提供的方法进行安装 Linux 的话这个程式已经被编译进核心了所以不用理他没关系! 设定 这一个网段的 IP 可进行 NAT 服务接下来就是直接设定了只要依序执行底下的咚咚 /sbin/ipchains P forward DENY/sbin/ipchains A forward j MASQ s / d //sbin/depmod a/sbin/modprobe ip_masq_ftp/sbin/modprobe ip_masq_raudio/sbin/modprobe ip_masq_irc/sbin/modprobe ip_masq_autofw/sbin/modprobe ip_masq_cuseeme/sbin/modprobe ip_masq_portfw/sbin/modprobe ip_masq_quake/sbin/modprobe ip_masq_vdolive/sbin/modprobe ip_masq_user/sbin/modprobe ip_masq_mfw 这样就可以了!如果你觉得这样很麻烦的话这里鸟哥已经有一个写好的批次档与说明档你可以下载使用使用的方法就更简单了 # mkdir /usr/driver # mkdir /usr/driver/nat <== 建立一个 nat 的子目录 # mv nat.sh /usr/driver/nat <== 将档案移动到 nat 这个目录下 # cd /usr/driver/nat # chmod 744 nat.sh<== 修改 nat 成为可执行的档案 # ./nat.sh all <== 开始执行 7.加上一个参数 all 是让两个网域可以连上这部 NAT 主机! 不要怀疑,这样就已经作好 NAT 主机的基本设定了!如果你还要设定更精细的防火墙的话,你可以去找一些比较高深的 HOWTO 的文件去钻研,我这里就只介绍你可以作为 NAT 的基本设定喔! 8.将上面的咚咚写入开机自动执行档:由于每次开机都要进行一次 NAT 的设定是很烦的一件事,因此我们可以将上面的一大串字全部写在 /etc/rc.d/rc.local 这个开机自动执行档案的最底下,如此一来,每次开机就会自动将 NAT 的设定载入你的主机中了! 9.设定 Windows 的网路设定:好了,主机的部分设定完了,接下来就是各个 Windows 个人电脑的设定了,以 Windows 98 为例, o你可以在『开始』->『设定』->『控制台』->『网路』开启网路相关设定,或者是在『网路上的芳邻』按右键,选内容,也可以进入网路设定内容; o在网路的内容中,察看你所需要的通讯协定是否存在了,主要是有 NetBEUI 、IPX/SPX 、及TCP/IP 这几个设定,如果不存在的话,请按『新增』->『通讯协定』>选『MicroSoft』便可选择相关的通讯协定了 o进入 TCP/IP 中在 IP 项目填入 xxx 然后子遮罩网路填选 在通讯闸(最重要)的部分填入 NAT 主机的虚拟 IP(这里是用 )然后再到 DNS 填入惯用的 DNS 主机(可以是 或者是 ) o重新开机后就可以连上 Internet 啰!(以上相关的设定请参考小弟写的一篇咚咚) 设定完成! 本章问题讨论 Q何谓『虚拟 IP 』与『实体 IP 』或者『固定 IP 』『动态 IP 』有啥不同? A 『实体 IP 』在网路的世界里为了要辨识每一部电脑的位置因此有了电脑 IP 位址的定义一个 IP 就好似一个门牌!例如你要去微软的网站的话就要去『 』这个 IP 位置!这些可以直接在网际网路上沟通的 IP 就被称为『实体 IP 』了 『虚拟 IP 』不过众所皆知的IP 位址仅为 xxxxxxxxxxxx 的资料型态其中 xxx 为 间的整数由于近来电脑的成长速度太快实体的 IP 已经有点不足了好在早在规划 IP 时就已经预留了三个网段的 IP 做为内部网域的虚拟 IP 之用这三个预留的 IP 分别为 不过由于是虚拟 IP 所以当您使用这些地址的时候﹐当然是有所限制的限制如下 私有位址的路由资讯不能对外散播 使用私有位址作为来源或目的地址的封包﹐不能透过Internet来转送 关于私有位址的参考纪录(如DNS)﹐只能限于内部网路使用 这给我们架设IP网路做成很大的方便﹐比如﹕即使您目前的公司还没有连上Internet﹐但不保证将来不会啊如果使用公共IP的话﹐如果没经过注册﹐等到以后真正要连上网路的时候﹐就很可能和别人沖突了也正如前面所分析的﹐到时候再重新规划IP的话﹐将是件非常头痛的问题这时候﹐我们可以先利用私有位址来架设网路﹐等到真要连上intetnet的时候﹐我们可以使用IP转换协定﹐如NAT (Network Addresss Translat |