⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0230router.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
	<div class=block2>
		既然主机想要将资料传送到不同的网域时得透过路由器的帮忙,所以啦,路由器的主要功能就是∶
		『<span class=text_import2>转递网路封包</span>』棉!
		也就是说,路由器会分析来源端封包的 IP 表头,找出目标的 IP 后,透过路由器本身的路由表
		(routing table) 将这个封包向下一个目标 (next hop) 传送。这就是路由器的功能。<br /><br />

		那么路由器的功能可以如何达成呢?目前有两种方法可以达成∶<br />
		<ul><span class=text_import2>
		<li>硬体功能∶例如 Cisco, IBM, 3Com 等公司都有生产硬体路由器,这些路由器内有嵌入式的作业系统,
			可以负责不同网域间的封包转译与转递等功能;<br /></li>
		<li>软体功能∶例如 Linux 这个作业系统的核心就有提供封包转递的能力。</li>
		</span></ul>

		高阶的路由器可以连结不同的硬体设备,并且可以转译很多不同的封包格式,通常....价格也不便宜啊!
		在这个章节里面,我们并没有要探讨这么高阶的咚咚,仅讨论在乙太网路里头最简单的路由器功能∶
		连接两个不同的网域。嘿嘿!这个功能 Linux 就可以达成了!
		就如同路由表是由 Linux 的核心功能所提供的,这个转递封包的能力也是 Linux 核心所提供,
		那如何启动这个封包转递呢?很简单啊,只要这样做即可∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>echo "1" > /proc/sys/net/ipv4/ip_forward</span>
</pre></td></tr></table>

		上面这个动作就在打开 Linux 核心的封包转递能力。你可以将上述的指令写入 /etc/rc.d/rc.local 当中,
		以使 Linux 可以在开机的时候就启动封包转递的功能,
		也可以透过修改 /etc/sysctl.conf 来达成开机启动封包转递∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/sysctl.conf</span>
<span class=term_say># 将底下这个设定值修改正确即可!</span>
<span class=term_write>net.ipv4.ip_forward = 1</span>

[root@linux ~]# <span class=term_command>sysctl -p</span>  <span class=term_say>&lt;==立刻让该设定生效</span>
</pre></td></tr></table>

		sysctl 这个指令是在核心工作时用来直接修改核心参数的一个指令,更多的功能可以参考 man sysctl 查询。
		不要怀疑!只要这个动作,你的 Linux 就具有最简单的路由器功能了。
		而由于 Linux 路由器的路由表设定方法的不同,通常路由器规划其路由的方式就有两种∶<br />
		<ul>
		<li>静态路由∶直接以类似 route 这个指令来直接设定路由表到核心功能当中,设定值只要与网域环境相符即可。
			不过,当你的网域有变化时,路由器就得要重新设定;<br /><br /></li>
		<li>动态路由∶透过类似 zebra 软体的功能,这些软体可以安装在 Linux 路由器上,
			而这些软体可以动态的侦测网域的变化,而直接修改 Linux 核心的路由表资讯,
			你无须手动以 route 来修改你的路由表资讯喔!</ul>

		了解了路由器之后,接下来你可能需要了解到什么是 NAT (Network Address Translation, 网路位址转译) 主机,
		NAT 是啥?其实 IP 分享器就是最简单的 NAT 主机啦!嘿嘿,了解了吗?没错, NAT 可以达成 IP 分享的功能,
		而 NAT 本身就是一个路由器,但 NAT 比路由器多了一个『 IP 转换』的功能。怎么说呢?<br />
		<ul>
		<li>一般来说,路由器会有两个网路介面,透过路由器本身的 IP 转递功能让两个网域可以互相沟通网路封包。
			那如果两个介面一边是公共 IP (public IP) 但一边是私有 IP (private IP) 呢?
			由于私有 IP 不能直接与公共 IP 沟通其路由资讯,此时就得要额外的『 IP 转译』功能了;<br /><br />
		<li>Linux 的 NAT 主机可以透过修改封包的 IP 表头资料之来源或目标 IP ,让来自私有 IP 
			的封包可以转成 NAT 主机的公共 IP ,就可以连上 Internet !</ul>
		所以说, 当路由器两端的网域分别是 Public 与 Private IP 时,才需要 NAT 的功能!
		NAT 功能我们会在防火墙时谈及,这个章节仅谈论一下路由器而已啊! ^_^<br /><br />
	</div>

	<hr /><a NAME="route_when"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">何时需要路由器?</span><br />
	<div class=block2>
		一般来说,电脑数量小于数十部的小型企业是无须路由器的,只需要利用 hub/switch 串接各部电脑,
		然后透过单一线路连接到 Internet 上即可。不过,如果是超过数百部电脑的大型企业环境,
		由于他们的环境通常需要考虑如下的状况,因此才需要路由器的架设∶<br />
		<ul>
		<li><span class=text_import1>实体线路之布线及效能的考量</span>∶<br />
			在一栋大楼的不同楼层要串接所有的电脑可能有点难度,那可以透过每个楼层架设一部路由器,
			并将每个楼层路由器相连接,就能够简单的管理各楼层的网路;
			此外,如果各楼层不想架设路由器,而是直接以网路线串接各楼层的 hub/switch 时,
			那由于同一网域的资料是透过广播来传递的,那当整个大楼的某一部电脑在广播时,
			所有的电脑将会予以回应,哇!会造成大楼内网路效能的问题;所以架设路由器将实体线路分隔,
			就有助于这方面的网路效能;<br /><br />

		<li><span class=text_import1>部门独立与保护资料的考量</span>∶<br />
			在阅读过<a href="0110network_basic.php">网路基础</a>章节后,您就会晓得,
			只要实体线路是连接在一起的,那么<span class=text_import2>当资料透过广播时,你就可以透过类似
			<a href="0140networkcommand.php#tcpdump">tcpdump</a> 的指令来监听封包资料,
			并且予以窃取</span>~所以,如果你的部门之间的资料可能需要独立,
			或者是某些重要的资料必须要在公司内部也予以保护时,可以将那些重要的电脑放到一个独立的实体网域,
			并额外加设防火墙、路由器等连接上公司内部的网域。<br />
		</ul>

		路由器就只是一个设备,要如何使用端看您的网路环境的规划!上面仅是举出一些应用案例。
		底下我们先就架设一个静态路由的路由器来玩一玩吧!<br /><br />
	</div>

	<hr /><a NAME="route_static"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">静态路由之路由器</span><br />
	<div class=block2>
		假设在贵公司的网路环境当中,除了一般职员的工作用电脑是直接连接到对外的路由器来连结 Internet,
		在内部其实还有一个部门需要较安全的独立环境,因此这部份的网路规划可能是这样的情况∶<br /><br />

		<a name=fig_1></a><center>
		<img src="0230router/static_router.png"
		title="静态路由之路由器架构示意图" alt="静态路由之路由器架构示意图"><br />
		图一、静态路由之路由器架构示意图</center><br />

		以上图的架构来说,这家公司主要有两个 C class 的网域,分别是 192.168.0.0/24 及 192.168.10.0/24 ,
		其中 192.168.0.0/24 是用来做为一般员工连接网际网路用的,至于 192.168.10.0/24 
		则是给特殊的部门用的。PC1 代表的是一般员工的电脑, PC2 及 PC3, PC4 则是特殊部门的工作用电脑,
		Linux Router 则是这个特殊部门用来连接到公司内部网域的路由器。在这样的架构下,
		该特殊部门的封包就能够具有基础的保护了。<br /><br />

		由图一你也不难发现,只要是具有路由器功能的设备 (Router A, Linux Router) 都会具有两个以上的介面,
		分别用来沟通不同的网域,同时该路由器也都会具有一个预设路由啊! ^_^!
		另外,你还可以加上一些防火墙的软体在 Linux Router 上,
		以保护 PC2~PC4 的内部电脑呢!<br /><br />

		在 Router A 的部分,由于他具有 Public 与 Private IP ,所以这部 Router 必须要具有 NAT 的功能,
		这个未来我们再介绍。今日的重点就在于 Linux Router 那个玩意儿!在该主机下,
		最好配备两张网卡,一张给 192.168.0.100,另一张给 192.168.10.254 这个 IP。
		这部 Linux Router 的设定简单的要命喔!你可以这样做的∶<br /><br />

		<hr /><li><span class=text_import1>Linux Router</span><br />
		<div class=block2>
			在这部主机内需要有两张网卡,鸟哥在这里将他定义为∶<br />
			<ul><li>eth0: 192.168.10.254<li>eth1: 192.168.0.100</ul>
			那如何设定呢?这样做就对了∶<br />

<table class="term"><tr><td class="term"><pre>
<span class=term_hd>1. 先处理 eth0 </span>
[root@linux ~]# <span class=term_command>vi /etc/sysconfig/network-scripts/ifcfg-eth0</span>
<span class=term_write>DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.10.255
IPADDR=192.168.10.254
NETMASK=255.255.255.0
NETWORK=192.168.10.0
ONBOOT=yes</span>

<span class=term_hd>2. 再先处理 eth1 </span>
[root@linux ~]# <span class=term_command>vi /etc/sysconfig/network-scripts/ifcfg-eth1</span>
<span class=term_write>DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
GATEWAY=192.168.0.254    <span class=term_say>&lt;==这个设定值很重要喔!</span>
ONBOOT=yes</span>

<span class=term_hd>3. 启动 IP 转递</span>
[root@linux ~]# <span class=term_command>echo "1" > /proc/sys/net/ipv4/ip_forward</span>
<span class=term_say># 上述指令如果没有问题,将他加入 /etc/rc.d/rc.local 当中去!</span>

<span class=term_hd>4. 重新启动网路,并且观察路由</span>
[root@linux ~]# <span class=term_command>/etc/init.d/network restart</span>
[root@linux ~]# <span class=term_command>route -n</span>
Kernel IP routing table
Destination     Gateway        Genmask         Flags Metric Ref Use Iface
192.168.0.0     0.0.0.0        255.255.255.0   U     0      0     0 eth1
192.168.10.0    0.0.0.0        255.255.255.0   U     0      0     0 eth0
127.0.0.0       0.0.0.0        255.0.0.0       U     0      0     0 lo
0.0.0.0         192.168.0.254  0.0.0.0         UG    0      0     0 eth1
</pre></td></tr></table>

			有够简单吧!这样你的 Linux Router 就 OK 了呐!接下来则是 PC2 来作为范例。<br /><br />
		</div>

		<hr /><li><span class=text_import1>受保护的网域,以 PC2 为例∶</span><br />
		<div class=block2>
			不论你的 PC2 是哪一种作业系统,你的环境都应该是这样的∶<br />
			<ul><li>IP: 192.168.10.20<li>netmask: 255.255.255.0<li>network: 192.168.10.0
			<li>broadcast: 192.168.10.255<li>gateway: 192.168.10.254</ul>
			以 Linux 作业系统为例,并且 PC2 仅有 eth0 一张网卡时,他的设定是这样的∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/sysconfig/network-scripts/ifcfg-eth0</span>
<span class=term_write>DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.10.255
IPADDR=192.168.10.20
NETMASK=255.255.255.0
NETWORK=192.168.10.0
GATEWAY=192.168.10.254   <span class=term_say>&lt;==这个设定最重要啦!</span>
ONBOOT=yes</span>

[root@linux ~]# <span class=term_command>/etc/init.d/network restart</span>
[root@linux ~]# <span class=term_command>route -n</span>
Kernel IP routing table
Destination   Gateway         Genmask         Flags Metric Ref  Use Iface
192.168.10.0  0.0.0.0         255.255.255.0   U     0      0      0 eth0
127.0.0.0     0.0.0.0         255.0.0.0       U     0      0      0 lo
0.0.0.0       192.168.10.254  0.0.0.0         UG    0      0      0 eth0
</pre></td></tr></table>

		</div>

		<hr /><li><span class=text_import1>Router A 的新增路由规则∶</span><br />
		<div class=block2>
			在这样的架构下,您的 PC2 已经可以连接上 Internet 了!只不过,当封包由 Internet 传回来时,
			<span class=text_import2>由于 Router A 并没有连接到 192.168.10.0/24 
			网域的路由规则,所以该封包『会遗失』喔</span>!那就麻烦了~
			所以,你的 Router A 必须要额外增加一条规则,这条规则是『将目标为 192.168.10.0/24
			的封包传送给 192.168.0.100 去处理』,假设 Router A 为 Linux 系统时,那他应该要这样∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>route add -net 192.168.10.0 netmask 255.255.255.0 \</span>
>  <span class=term_command>gw 192.168.0.100</span>

[root@linux ~]# <span class=term_command>route -n</span>
Destination   Gateway        Genmask         Flags Metric Ref  Use Iface
192.168.10.0  192.168.0.100  255.255.255.0   UG    0      0      0 eth0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -