我们在 网络基础 里面提到 路由 (route) 是一个重要的概念,他可以控制我们的资料封包的走向!此外,如果同一个网域里面有太多的计算机数量需要来广播的话,效能一定不会太好,所以才会有 Netmask 对吧!今天我们换个角度来想一想,如果说我的网域内真的有太多的计算机数量了,那么将整个网域切割成较小的数个子网域 (Subnet) 会是一个比较好的作法,不过,因为网域与网域之间的封包不可以直接互通数据,所以这个时候我们就需要使用 Router ( 路由器 ) 来帮忙封包的传送了! |
[root@test
root]# ifconfig <device> <ip> netmask
<nip> broadcast <bip> <action>
参数说明: <device> :装置代号,例如 eth0, eth0:0, eth0:1.... <ip> :该装置代号的 IP ! netmask :该装置代号的子网域屏蔽设定参数名称 <nip> :就是实际的 netmask ,例如 C Class 则为 255.255.255.0 boradcast :广播地址设定参数 <bip> :亦即实际的广播地址 <action> :动作!例如 up 启动与 down 关闭! 范例: # 1. 修改一个 eth0 的 netmask ,由原先的 255.255.255.0 变成 255.255.255.128 [root@test root]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:50:FC:22:9C:57 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0<=原先的! UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5972569 errors:0 dropped:0 overruns:0 frame:0 TX packets:6263943 errors:0 dropped:0 overruns:0 carrier:0 collisions:1331 txqueuelen:100 RX bytes:557413197 (531.5 Mb) TX bytes:2810197942 (2680.0 Mb) Interrupt:10 Base address:0x6100 [root@test root]# ifconfig eth0 netmask 255.255.255.128 [root@test root]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:50:FC:22:9C:57 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.128<=修改后 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5972745 errors:0 dropped:0 overruns:0 frame:0 TX packets:6264165 errors:0 dropped:0 overruns:0 carrier:0 collisions:1331 txqueuelen:100 RX bytes:557431640 (531.6 Mb) TX bytes:2810221471 (2680.0 Mb) Interrupt:10 Base address:0x6100 [root @test /root]# ifconfig eth0 netmask 255.255.255.0<==测试完后记得改回来! 2. 新增一个网络界面 eth0:0 ,而且他的 IP 为 192.168.0.2 [root@test root]# ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 \ > broadcast 192.168.0.255 up [root@test root]# ifconfig eth0; ifconfig eth0:0 eth0 Link encap:Ethernet HWaddr 00:50:FC:22:9C:57 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5973506 errors:0 dropped:0 overruns:0 frame:0 TX packets:6265264 errors:0 dropped:0 overruns:0 carrier:0 collisions:1331 txqueuelen:100 RX bytes:557511152 (531.6 Mb) TX bytes:2810327518 (2680.1 Mb) Interrupt:10 Base address:0x6100 eth0:0
Link encap:Ethernet HWaddr
00:50:FC:22:9C:57
--- 192.168.1.2
ping statistics ---
--- 192.168.0.2
ping statistics ---
|
[root@test
root]# cd /etc/sysconfig/network-scripts
[root@test network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0 请注意,那个 ifcfg 的檔名是必要的,而 eth0:0 则是装置代号!所以请依您的需求来设定档名!例如您要设定 eth0:1 ,则档名应该写为 ifcfg-eth0:1 才对呦! 1. 开始设定参数档! [root@test network-scripts]# vi ifcfg-eth0:0 # This file is just to be used to test the more IPs DEVICE=eth0:0 <==这里请跟刚刚档名的地方写的一样!亦即为装置代号! ONBOOT=no <==是否开机时启动!由于与实体接口有关,所以,无论 这里设定为何,开机只要启动 eth0 ,则这里就会被启动! BOOTPROTO=static <==使用的开机设定协议 IPADDR=192.168.0.2 <==我设定的 IP! NETMASK=255.255.255.0 <==就是子网域屏蔽 NETWORK=192.168.0.0 <==就是网域 BROADCAST=192.168.0.255 <==就是广播地址啦! 2. 正确的启动! [root@test network-scripts]# ifup eth0:0 [root@test network-scripts]# ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 00:50:FC:22:9C:57 inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:10 Base address:0x6100 3. 正确的关闭! [root@test network-scripts]# ifdown eth0:0 |
[root@test
root]# route
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 140.116.142.253 * 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 140.116.142.253 0.0.0.0 UG 0 0 0 ppp0 |
[root@test
root]# route add -net 192.168.0.0 netmask
255.255.255.0 dev eth0
[root@test root]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 140.116.142.253 * 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 140.116.142.253 0.0.0.0 UG 0 0 0 ppp0 [root@test root]# route del -net 192.168.0.0 netmask 255.255.255.0 dev eth0 |
1. 设定网络接口,其中
eth0 为 192.168.1.2, eth0:0 为 192.168.0.2
[root@test root]# cd /etc/sysconfig/network-scripts [root@test network-scripts]# vi ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.2 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BROADCAST=192.168.1.255 GATEWAY=192.168.1.2 [root@test network-scripts]#
vi
ifcfg-eth0:0
[root@test network-scripts]#
ifup
eth0 ; ifup eth0:0
eth0:0
Link encap:Ethernet HWaddr 00:50:FC:22:9C:57
2. 观察路由情况:
3. 启动 IP FORWARD
项目:
4.1 设定 192.168.1.0
那个网域的 client 计算机:
4.2 设定 192.168.0.0
那个网域的 Client 计算机
|
1. Client 端的测试(
Windows 2000 操作系统, IP 为 192.168.1.11 ):
C:\>ping 192.168.1.2 <==同网域的主机 Pinging 192.168.1.2 with 32 bytes of data: Reply from 192.168.1.2: bytes=32 time<10ms TTL=255 Reply from 192.168.1.2: bytes=32 time<10ms TTL=255 Reply from 192.168.1.2: bytes=32 time<10ms TTL=255 Reply from 192.168.1.2: bytes=32 time<10ms TTL=255 Ping statistics for 192.168.1.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\>ping
192.168.0.2
<==不同网域的主机
C:\>ping
192.168.0.11
<==不同网域的 Client 端!
2. Server 端的修改:
3. Client 端的测试
( 操作系统为 windows 2000, IP 192.168.1.11 ):
4. 恢复 Linux
Router :
5. 用另一部
Linux 主机看一下结果 ( IP 192.168.0.11 ):
|
上面的那个范例单纯只是为了作为范例来示范!要注意,我们在公司内部架设 router 的时候,通常是希望降低内部网络流量的负载,这个时候,当然是将两个网域分别分开在两个实体网络卡上面比较好!而不是在一块网络卡上面设定两组 IP ,这样做对于减低流量负荷的帮助应该不大!所以,您的实体线路配线方面可能要变成如下图所示的模样( 当然,设定方面则是完全一样啦! ):
无论如何,上面的方式可以提供一些中小企业,计算机数要多不多,偏偏又会影响整体流量的情况时,可以使用来解决问题!再来,对于中小学的网络布线情况呢,也可以达到不错的降低整体网络负荷的效果!而这个简单的 Router 您可以使用 486 那种等级的旧旧的计算机来架设就可以啦!反正他的 loading 又不重~~此外,附上一篇小州前辈的建议给大家参考:
其实这样子弄是有点问题的。我的意思是说,一般弄切割的话,还是需要弄独立的网络卡分隔,这不只是区隔网络而已,而且还是考虑到实体封包流通时的问题。
您网页上的架构,实体网络布线,那 linux 只有一张网络卡,所以网络卡接网络线时会接到 hub 上,而 a、b 两端不同网络区段的计算机也都是把网络线接到该 hub。这个布线方式,其实底层封包流通时,a、b 两端网络都还是可以收到,只不过 ip 那层看到因为不是自己网络区段的封包而不理会。
ip alias 时机,一般不建议用在提供 router/nat 这类同一个 ip 区段内,因为不同网络区段的封包还是会撞在一起... 真正商业使用上,要提供router/nat 功能时,通常不会建议使用 ip alias (除非真的是临时需要或者是真的少网络卡可以用),而会使用两张网络卡并且各自使用 hub/switch切割开处理。
另外以管理实际网络的经验来看,其实若是有使用者作怪,像是 a 网络有人架设dhcp,那 b 网络使用者可能就遭殃了:Q 还有就是,若是 a 网络内的计算机作怪,也可以把自己的 ip 设定为 b 网络区段内的 ip,那就会失去区隔效用。