让不同网段之间可以ping通

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

DEVICE=eth0:0

ONBOOT=no

BOOTPROTO=static

IPADDR=192.168.0.2

NETMASK=255.255.255.0

NETWORK=192.168.0.0

BROADCAST=192.168.0.255



[root@test network-scripts]# ifup eth0 ; ifup eth0:0

[root@test network-scripts]# ifconfig eth0; ifconfig eth0:0

启动两个网络卡,这个没问题的。可以连通两个网域了

2. 观察路由情况:

[root@test network-scripts]# route

3. 启动 IP FORWARD 项目:

[root@test network-scripts]# echo 1 >; /proc/sys/net/ipv4/ip_forward

只要上面这一行,我们的 Linux 就具有 Router 的功能了!

如果一切测试都顺利,那么您可以直接将这一行加入 /etc/rc.d/rc.local 这个档案中!


4.1设定 192.168.1.0 那个网域的 client 计算机:

IP:192.168.1.11

Gateway:192.168.1.2 <==极度重要的设定!

netmask:255.255.255.0

network:192.168.1.0

broadcast:192.168.1.255



4.2 设定 192.168.0.0 那个网域的 Client 计算机

IP:192.168.0.11

Gateway:192.168.0.2 <==极度重要的设定!

netmask:255.255.255.0

network:192.168.0.0

broadcast:192.168.0.255

如此一来,两个网域之间的沟通将会透过彼此的 GATEWAY 而两者的 GATEWAY 都在 Linux 上面,所以自然很容易进行沟通啦!尤其我们已经开启了 Routing 的功能!OK!没问题!



这样就设定完成了!如何?很容易吧!这样一来,就可以让您的很多计算机的内部网域之网络流量舒缓很多啰!此外,这里必须提出一点说明,因为我上面的范例直接就是要用来作为测试用的,所以搞的比较简单,而且还是在同一块 Linux 主机的网络卡上面搞定的!请注意,如果要架设较大流量的 Router 时,请分别以两张网络卡来分隔不同的网域,这样应该会比较好呢!而至于 client 端的设定方面可以参考前面几章的说明:局域网络设定与连上 Internet。

 

另外,请特别留意,就如同刚刚前面我们提过的信息来看,开机的时候,不论您的 alias 的设定为何 ( 是否设定为 ONBOOT ),只要启动 eth0 则相关的 eth0:n 都会被启动!这个时候请特别留意!如果其中有一个 IP alias 设定错误的话,那么可能将会导致您的网络整体都会不通!原因多半出在 GATEWAY 上面!建议设定完成之后,先将 eth0 整个 shutdown ,然后再启动,亦即『ifdown eth0; ifup eth0』然后再来看看 route 的情况!这样可以避免这次设定成功,下次开机却是不通的情况发生的!

测试 Router 工作:

在 192.168.1.11 这个 client 端,先联机到 192.168.1.2 试看看能否联机;

在 192.168.1.11 这个 client 端测试是否可以联机到 192.168.0.2 这个 Server 端的另一个网络连接接口;

在 192.168.1.11 这个 client 端测试是否可以连接到另一个 client 端,亦即 192.168.0.11 这个 client !?

将 Linux 主机的 /proc/sys/net/ipv4/ip_forward 功能关掉,然后再检验上面的三个步骤看看!试看看网络是否能够沟通呢?

 

我们来测试看看 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  <==不同网域的主机

Pinging 192.168.0.2 with 32 bytes of data:

Reply from 192.168.0.2: bytes=32 time<10ms TTL=255

Reply from 192.168.0.2: bytes=32 time<10ms TTL=255

Reply from 192.168.0.2: bytes=32 time<10ms TTL=255

Reply from 192.168.0.2: bytes=32 time<10ms TTL=255

Ping statistics for 192.168.0.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.11  <==不同网域的 Client 端!

Pinging 192.168.0.11 with 32 bytes of data:

Reply from 192.168.0.11: bytes=32 time<10ms TTL=254

Reply from 192.168.0.11: bytes=32 time<10ms TTL=254

Reply from 192.168.0.11: bytes=32 time<10ms TTL=254

Reply from 192.168.0.11: bytes=32 time<10ms TTL=254

Ping statistics for 192.168.0.11:

    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

    Minimum = 0ms, Maximum =  0ms, Average =  0ms

看到了吗? 192.168.1.11 可以 ping 到 192.168.0.11  



2. Server 端的修改:

[root@test root]# echo 0 >; /proc/sys/net/ipv4/ip_forward

先将 IP routing 的功能关掉一下!试看看结果!



3. Client 端的测试 ( 操作系统为 windows 2000, IP 192.168.1.11 ):

C:\>;ping 192.168.0.11

Pinging 192.168.0.11 with 32 bytes of data:

Request timed out.

Request timed out.

Request timed out.

Request timed out.

Ping statistics for 192.168.0.11:

    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

Approximate round trip times in milli-seconds:

    Minimum = 0ms, Maximum =  0ms, Average =  0ms

马上就无法联机了!



5. 恢复 Linux Router :

[root@test root]# echo 1 >; /proc/sys/net/ipv4/ip_forward

不要忘记把 IP Routing 的功能加回来呢!



6. 用另一部 Linux 主机看一下结果 ( IP 192.168.0.11 ):

[root@vbird-redhat root]# ping -c 3 192.168.1.11

PING 192.168.1.11 (192.168.1.11) from 192.168.0.11 : 56(84) bytes of data.

64 bytes from 192.168.1.11: icmp_seq=1 ttl=127 time=0.542 ms

64 bytes from 192.168.1.11: icmp_seq=2 ttl=127 time=0.517 ms

64 bytes from 192.168.1.11: icmp_seq=3 ttl=127 time=0.541 ms

--- 192.168.1.11 ping statistics ---

3 packets transmitted, 3 received, 0% loss, time 1998ms

rtt min/avg/max/mdev = 0.517/0.533/0.542/0.022 ms



测试的结果也告诉我们,没错!有没有启动 Routing 的功能将会影响 Linux 是否可以具有 Router 的能力!



建议:

上面的那个范例单纯只是为了作为范例来示范!要注意,我们在公司内部架设 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,那就会失去区隔效用。







网络卡的代号为 eth0, eth1, eth2...,而第一张网络卡的第一个虚拟接口为 eth0:0 ....。

可以直接使用 ifconfig 来设定网络参数,也可以使用编辑档案,档案在 /etc/sysconfig/network-scripts/ifcfg-ethn[],其中 n 与 m 为数字;

Linux 要作为 Router 时,务必启动 ip_forward;

Router 上面应该具有两个以上的网络接口,以沟通不同的网域封包数据;

使用 route 指令来设定 Router 的路由表。

事实上,Router 除了作为路由转换之外,在 Router 上面架设防火墙,亦可在企业内部再分隔出多个需要安全 (Security) 的单位数据的区隔!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章