最近更新日期:2011/07/22
8.2 路由器架设
8.2.1 什么是路由器与 IP 分享器: sysctl.conf 8.2.2 何时需要路由器 8.2.3 静态路由之路由器 8.2 路由器架设 我们知道在局域网络里面的主机可以透过广播的方式来进行网络封包的传送,但在不同网段内的主机想要互相联机时,就得要透过路由器了。
那么什么是路由器?他的主要功能是什么?底下我们就来聊一聊! 8.2.1 什么是路由器与 IP 分享器 既然主机想要将数据传送到不同的网域时得透过路由器的帮忙,所以啦,路由器的主要功能就是:『转递网络封包』啰!也就是说,路由器会分析来源端封包的 IP 表头,在表头内找出要送达的目标 IP 后,透过路由器本身的路由表 (routing table) 来将这个封包向下一个目标 (next hop) 传送。这就是路由器的功能。 那么路由器的功能可以如何达成呢?目前有两种方法可以达成:
高阶的路由器可以连结不同的硬设备,并且可以转译很多不同的封包格式,通常...价格也不便宜啊! 在这个章节里面,我们并没有要探讨这么高阶的咚咚,仅讨论在以太网络里头最简单的路由器功能: 连接两个不同的网域。嘿嘿!这个功能 Linux 个人计算机就可以达成了!那怎么达成呢?
就如同路由表是由 Linux 的核心功能所提供的,这个转递封包的能力也是 Linux 核心所提供, 那如何观察核心是否已经有启动封包转递呢?很简单啊,观察核心功能的显示档案即可,如下所示:
要让该档案的内容变成启动值 1 最简单的方是就是使用:『echo 1 > /proc/sys/net/ipv4/ip_forward』即可。 不过,这个设定结果在下次重新启动后就会失效。因此,鸟哥建议您直接修改系统配置文件的内容,那就是 /etc/sysctl.conf 来达成开机启动封包转递的功能喔。
sysctl 这个指令是在核心工作时用来直接修改核心参数的一个指令,更多的功能可以参考 man sysctl 查询。 不要怀疑!只要这个动作,你的 Linux 就具有最简单的路由器功能了。而由于 Linux 路由器的路由表设定方法的不同,通常路由器规划其路由的方式就有两种:
了解了路由器之后,接下来你可能需要了解到什么是 NAT (Network Address Translation, 网络地址转换) 服务器, NAT 是啥?其实 IP 分享器就是最简单的 NAT 服务器啦!嘿嘿,了解了吗?没错, NAT 可以达成 IP 分享的功能, 而 NAT 本身就是一个路由器,只是 NAT 比路由器多了一个『 IP 转换』的功能。怎么说呢?
所以说,当路由器两端的网域分别是 Public 与 Private IP 时,才需要 NAT 的功能! NAT 功能我们会在下一章防火墙时谈及, 这个章节仅谈论一下路由器而已啊! ^_^ 8.2.2 何时需要路由器 一般来说,计算机数量小于数十部的小型企业是无须路由器的,只需要利用 hub/switch 串接各部计算机, 然后透过单一线路连接到 Internet 上即可。不过,如果是超过数百部计算机的大型企业环境, 由于他们的环境通常需要考虑如下的状况,因此才需要路由器的架设:
路由器就只是一个设备,要如何使用端看你的网络环境的规划!上面仅是举出一些应用案例。 底下我们先就架设一个静态路由的路由器来玩一玩吧! 8.2.3 静态路由之路由器 假设在贵公司的网络环境当中,除了一般职员的工作用计算机是直接连接到对外的路由器来连结因特网, 在内部其实还有一个部门需要较安全的独立环境,因此这部份的网络规划可能是这样的情况 (参考图 3.2-1 内容延伸而来): 图 8.2-1、静态路由之路由器架构示意图 以上图的架构来说,这家公司主要有两个 class C 的网段,分别是:
其中 192.168.1.0/24 是用来做为一般员工连接因特网用的,至于 192.168.100.0/24 则是给特殊的部门用的。workstation 代表的是一般员工的计算机,clientlinux 及 winxp, win7 则是特殊部门的工作用计算机, Linux Router 则是这个特殊部门用来连接到公司内部网域的路由器。在这样的架构下, 该特殊部门的封包就能够与公司其他部门作实体的分隔了。 由上图你也不难发现,只要是具有路由器功能的设备 (Router A, Linux Router) 都会具有两个以上的接口, 分别用来沟通不同的网域,同时该路由器也都会具有一个预设路由啊! ^_^! 另外,你还可以加上一些防火墙的软件在 Linux Router 上,以保护 clientlinux, winxp, win7 呢! 那我们先来探讨一下联机的机制好了,先从 clientlinux 这部计算机谈起。如果 clientlinux 想要连上 Internet,那么他的联机情况会是如何?
观察一下两部 Router 的设定,要达到上述功能,则 Router A 必须要有两个接口,一个是对外的 Public IP 一个则是对内的
Private IP ,因为 IP 的类别不同,因此 Router A 还需要额外增加 NAT 这个机制才行,这个机制我们在后续章节会继续谈到。
除此之外,Router A 并不需要什么额外的设定。至于 Linux Router 就更简单了!什么事都不用作,将两个网络适配器设定两个 IP ,
并且启动核心的封包转递功能,立刻就架设完毕了!非常简单!我们就来谈一谈这几个机器的设定吧!
在这部主机内需要有两张网卡,鸟哥在这里将他定义为 (假设你已经将刚刚实作的 eth0:0 取消掉了):
有够简单吧!而且透过最后的 ping 我们也知道 Linux Router 可以连上 Router A 啰!这样你的 Linux Router 就 OK
了吶!此外,CentOS 6.x 默认的防火墙规则会将来自不同网卡的沟通封包剔除,所以还得要暂时关闭防火墙才行。
接下来则是要设定 clientlinux 这个被保护的内部主机网络啰。
不论你的 clientlinux 是哪一种操作系统,你的环境都应该是这样的 (图 8.2-1):
以 Linux 操作系统为例,并且 clientlinux 仅有 eth0 一张网卡时,他的设定是这样的:
最后一个动作有问题呦!怎么会连 ping 都没有办法 ping 到 Router A 的 IP 呢?如果连 ping 都没有办法给予回应的话, 那么表示我们的联机是有问题的!再从刚刚的响应联机需求流程来看一下吧!
发现了吗?网络是双向的,此时封包出的去,但是非常可怜的,封包回不来~那怎办呢?只好告知 Router A 当路由规则碰到
192.168.100.0/24 时,要将该封包传 192.168.1.100 就是了!所以你要这样进行。
假设我的 Router A 对外的网卡为 eth1 ,而内部的 192.168.1.254 则是设定在 eth0 上头。 那怎么在 Router A 增加一条路由规则呢?很简单啊!直接使用 route add 去增加即可!如下所示的情况:
不过这个规则并不会写入到配置文件,因此下次重新启动这个规则就不见了!所以,你应该要建立一个路由配置文件。 由于这个路由是依附在 eth0 网卡上的,所以配置文件的档名应该要是 route-eth0 喔!这个配置文件的内容当中,我们要设定 192.168.100.0/24 这个网域的 gateway 是 192.168.1.100,且是透过 eth0 ,那么写法就会变成:
上述观察的重点在于有没有出现 192.168.100.0 那行路由!如果有的话,请 ping 192.168.100.10 看看能不能有回应? 然后再到 clientlinux 上面去 ping 192.168.1.254 看看有没有响应,你就知道设定成功啰!好了,既然内部保护网络已经可以连上 Internet 了,那么是否代表 clientlinux 可以直接与一般员工的网域,例如 workstation 进行联机呢?我们依旧透过路由规则来探讨一下,当 clientlinux 要直接联机到 workstation 时,他的联机方向是这样的 (参考图 8.2-1):
有没有发现一个很可爱的传输流程?联机发起是没有问题啦,不过呢,响应联机竟然会偷偷透过 Router A 来帮忙呦!
这是因为 workstation 与当初的 Router A 一样,并不知道 192.168.100.0/24 在 192.168.1.100 里面啦!不过,反正
Router A 已经知道了该网域在 Linux Router 内,所以,该封包还是可以顺利的回到 clientlinux 就是了。
如果你不想要让 workstation 得要透过 Router A 才能够联机到 clientlinux 的话,那么就得要与 Router A 相同,增加那一条路由规则啰!如果是 Linux 的系统,那么如同 Router A 一样的设定如下:
最后只要 clientlinux 使用 ping 可以连到 workstation,同样的,workstation 也可以 ping 到 clientlinux 的话,就表示你的设定是 OK 的啦!搞定!而透过这样的设定方式,你也可以发现到一件事,那就是:『路由是双向的,你必须要了解出去的路由与回来时的规则』。 举例来说,在预设的情况下 (Router A 与 workstation 都没有额外的路由设定时),其实封包是可以由 clientlinux 联机到 workstation 的,但是 workstation 却没有相关的路由可以响应到 clientlinux ~所以上头才会要你在 Router A 或者是 workstation 上面设定额外的路由规则啊!这样说,瞭了吧? ^_^ 用 Linux 作一个静态路由的 Router 很简单吧!以上面的案例来说,你在 Linux Router 上面几乎没有作什么额外的工作,只要将网络 IP 与网络接口对应好启动,然后加上 IP Forward 的功能, 让你的 Linux 核心支持封包转递,然后其他的工作咱们的 Linux kernel 就主动帮你搞定了!真是好简单! 不过这里必须要提醒的是,如果你的 Linux Router 有设定防火墙的话, 而且还有设定类似 NAT 主机的 IP 伪装技术,那可得特别留意,因为还可能会造成路由误判的问题~ 上述的 Linux Router 当中『并没有使用到任何 NAT 的功能』喔!特别给他留意到! |
|||||||||
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室