讓不同網段之間可以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) 的單位數據的區隔!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章