服务器架设篇 - RedHat 6.1

NAT Server (适用于 ipchains)

NAT 带宽分享

最近更新时间: 2001/08/14

本文数据主要针对 RedHat 6.1 的系统进行说明,要注意的是,RedHat 6.1 与 Red Hat Enterprise Linux (RHEL) 是完全不同的东西!RedHat 6.1 在 1999 年推出,在 2000 年底就不再维护了!这部份网站更新到 2002 年,也没有再维护过! 因此,建议您前往本站查找最新版本的 Linux distribution 文章来阅读,比较不会浪费时间。那为何还需要编辑 RedHat 6.1 的数据呢? 鸟哥只想要做个自己曾经撰写过的文档内容保存而已啰! ^_^!最新文章请前往鸟站首页查阅啰!

虚拟 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 8139,那第二张卡最好使用别的卡。因为鸟哥曾经发现,在鸟哥的 RedHat 6.1 英文版中,安装两块相同的(同公司出的) RTL8139 ,结果竟然两张卡的输出输入都是经由第一张!也就是说,第二张卡根本就没有用处!并且,也很容易发生 eth1 与 eth0 捉错的情况!所以,请记得,『第二张网络卡不要使用与第一张网络卡相同芯片的卡!』

好了!假设你已经安装了第一块网络卡,而且也已经由『连上 Internet』的方法连上互联网了,那接下来就是要开始安装第二块网络卡了,如何安装第二张网络卡呢?依序以下列的步骤安装就可以完成啰!

  1. 关机、硬件安装:这个不用再提了吧!,先关机,然后拆开外壳,插入PCI网络卡即可;

  2.  
  3. 开机、硬件扫瞄:然后再开机,而于开机的过程中,你的 Linux 会主动去找到这一张网络卡(如果这张卡是有被 Linux 支持的!),果真如此的话,那在这一步骤中, Linux 会要求你输入 IP 与 GateWay 等等的 IP 地址,由于这一张网络卡是定义在内部网络使用的接口,因此你可以输入 192.168.1.2,而 子遮罩网络为 255.255.255.0,DNS与Gateway都写成自己 192.168.1.2 即可!

  4.  
  5. 安装网络卡驱动程序:如果在上一步骤中,你的网络卡并不能被捉到,哪就比较伤脑筋!请到前一个页面参考特殊的网络卡的驱动程序安装方法。

  6.  
  7. 查看设置 /etc/sysconfig/network-scripts/ifcfg-eth1:在安装完了网络卡的驱动程序之后,在 /etc/sysconfig/network-scripts/ 中,应该会有 ifcfg-eth1 这一个文件。这一个文件可以设置如下(当然,你也可以依自己的喜好设置):

  8.  
    [root@tsai network-scripts]# more ifcfg-eth1
    DEVICE=eth1
    BOOTPROTO=static
    BROADCAST=192.168.1.255
    IPADDR=192.168.1.2
    NETMASK=255.255.255.0
    NETWORK=192.168.1.0
    ONBOOT=yes
    上面的设置中,就变成了:eth0为对外的连接接口,eth1为对内的连接接口!
     
  9. 启动第二张网络卡:使用 『ifup eth1』 来启动之。


局域网路与 Internet 连接示意图

基本上,我们连接局域网路的连接方法有如下面所示:

通过具有 NAT 功能的 Linux 主机来达成内部网络与外部网络的沟通!详细的说明可以到『
局域网路的架构』来看看。

架设 NAT

好了,说了这么多,终于要实地的演练 NAT 机器了!如何设置呢?这里要再提醒一下:
  • 第一张网络卡 eth0 为对外的连接接口,具有实体 IP;
  • 第二张网络卡 eth1 为对内的连接接口,为虚拟 IP。
基本上,你要做的事情其实真的很简单,只要:
  1. 确定第一张网络卡可以连上互联网:关于对外的连接上互联网方法请参考『连上 Internet 』的说明,这里就不多说了;

  2.  
  3. 确定第二张网络卡可以正常的启动:这是一张具有虚拟 IP 的网络卡,请确定他可以被启动,另外,这里的设置是这样的:
    • IP为 192.168.1.2;
    • 子遮罩网络为 255.255.255.0;
    • gateway 为 192.168.1.2;
    • 惯用的 DNS server 为  139.175.10.20;

    •  
  4. 打开 IPV4:确定 /etc/sysconfig/network 这个文件中,有下列这一行FORWARD_IPV4=yes,这是打开发送 IP 服务的一个设置。如果没有的话,请将这一行加入 network 这个文件中,然后运行:
  5. # /etc/rc.d/init.d/network reload
  6. 确定 ipchains 已经编译进内核:这个比较麻烦,不过,如果你是用这个网页提供的方法进行安装 Linux 的话,这个程序已经被编译进内核了,所以不用理他没关系!

  7.  
  8. 设置 192.168.1.0-192.168.1.255 这一个网段的 IP 可进行 NAT 服务:接下来就是直接设置了,只要依序运行底下的咚咚:
  9.  /sbin/ipchains -P forward DENY
     /sbin/ipchains -A forward -j MASQ -s 192.168.1.0/24 -d 0.0.0.0/0
     /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 <== 开始运行
    加上一个参数 all 是让两个网域可以连上这部 NAT 主机!
    不要怀疑,这样就已经作好 NAT 主机的基本设置了!如果你还要设置更精细的防火墙的话,你可以去找一些比较高深的 HOWTO 的文档去钻研,我这里就只介绍你可以作为 NAT 的基本设置喔!
     
  10. 将上面的咚咚写入开机自动运行档:由于每次开机都要进行一次 NAT 的设置是很烦的一件事,因此我们可以将上面的一大串字全部写在 /etc/rc.d/rc.local 这个开机自动运行文件的最底下,如此一来,每次开机就会自动将 NAT 的设置加载你的主机中了!

  11.  
  12. 设置 Windows 的网络设置:好了,主机的部分设置完了,接下来就是各个 Windows 个人电脑的设置了,以 Windows 98 为例,
    • 你可以在『开始』->『设置』->『控制台』->『网络』打开网络相关设置,或者是在『网上邻居』按右键,选内容,也可以进入网络设置内容;
    • 在网络的内容中,察看你所需要的通信协定是否存在了,主要是有 NetBEUI 、IPX/SPX 、及TCP/IP 这几个设置,如果不存在的话,请按『添加』->『通信协定』->选『MicroSoft』便可选择相关的通信协定了;
    • 进入 TCP/IP 中,在 IP 项目,填入 192.168.1.xxx ,然后子遮罩网络填选 255.255.255.0,在通信闸(最重要)的部分填入 NAT 主机的虚拟 IP(这里是用 192.168.1.2),然后再到 DNS 填入惯用的 DNS 主机(可以是 192.168.1.2 或者是 139.175.10.20);
    • 重新开机后,就可以连上 Internet 啰!(以上相关的设置请参考小弟写的一篇咚咚
  13. 设置完成

本章问题讨论:

  1. Q:何谓『虚拟 IP 』,与『实体 IP 』或者『固定 IP 』『动态 IP 』有啥不同?

  2. A
    『实体 IP 』:在网络的世界里,为了要辨识每一部电脑的位置,因此有了电脑 IP 地址的定义。一个 IP 就好似一个门牌!例如,你要去微软的网站的话,就要去『 207.46.197.101 』这个 IP 位置!这些可以直接在互联网上沟通的 IP 就被称为『实体 IP 』了。

    『虚拟 IP 』:不过,众所皆知的,IP 地址仅为 xxx.xxx.xxx.xxx 的数据型态,其中, xxx 为 1-255 间的整数,由于近来电脑的成长速度太快,实体的 IP 已经有点不足了,好在早在规划 IP 时就已经预留了三个网段的 IP 做为内部网域的虚拟 IP 之用。这三个预留的 IP 分别为:

      10.0.0.0 - 10.255.255.255
      172.16.0.0 - 172.31.255.255
      192.168.0.0 - 192.168.255.255
    不过,由于是虚拟 IP ,所以当您使用这些地址的时候﹐当然是有所限制的,限制如下:
      私有地址的路由信息不能对外散播
      使用私有地址作为来源或目的地址的封包﹐不能通过Internet来转送
      关于私有地址的参考纪录(如DNS)﹐只能限于内部网络使用
    这给我们架设IP网络做成很大的方便﹐比如﹕即使您目前的公司还没有连上Internet﹐但不保证将来不会啊。如果使用公共IP的话﹐如果没经过注册﹐等到以后真正要连上网络的时候﹐就很可能和别人冲突了。也正如前面所分析的﹐到时候再重新规划IP的话﹐将是件非常头痛的问题。这时候﹐我们可以先利用私有地址来架设网络﹐等到真要连上intetnet的时候﹐我们可以使用IP转换协定﹐如NAT (Network Addresss Translation)等技术﹐配合新注册的IP就可以了。

    『固定 IP 』与『动态 IP 』:基本上,这两个东西是由于近来网络公司大量的成长下的产物,例如,你如果向中华电信申请一个商业型态的 ADSL 专线,那他会给你一个固定的实体 IP ,这个实体 IP 就被称为『固定 IP 』了。而若你是申请计时制的 ADSL ,那由于你的 IP 可能是由数十人共同使用,因此你每次重新开机上网时,你这部电脑的 IP 都不会是固定的!于是就被称为『动态 IP』或者是『浮动式IP』。基本上,这两个都是『实体IP』,只是网络公司用来分配给用户的方法不同而产生不同的名称而已!

    这里只有说了一些概念性的东西,基本是,IP是很麻烦的,小弟也不甚了解,例如子网络遮罩的计算等等!强烈的建议初学者到 study-area 这个网站去看看,相信对你往后的电脑网络概念有很大的帮助喔!
     

  3. 等待加入新讨论:
修改历史:
2002/01/01以来统计人数
其他链接
环境工程模式篇
鸟园讨论区
鸟哥旧站

今日 人数统计
昨日 人数统计
本月 人数统计
上月 人数统计