1. 程式人生 > >兩個不同網段的PC直連是否可以Ping通,肯定可以Ping的通(轉)

兩個不同網段的PC直連是否可以Ping通,肯定可以Ping的通(轉)

文章 解決 .net spl splay ttr str proc ipv4

在這一篇文章中http://blog.csdn.net/zhangdaisylove/article/details/46892917的案例,明確的說明兩個不同網段的PC不能Ping的通,其實他給出的答案是片面的,忽略了有路由的功能。

如題,兩臺PC相連,假設PC1的IP為1.1.1.1,PC2的IP為2.2.2.2。

當PC1 Ping PC2時,會首先查看自己的APR緩存,看是否有2.2.2.2對應MAC地址。第一次顯然沒有,那麽就需要發送ARP包來詢問誰的IP地址為2.2.2.2

PC2收到來自PC1的ARP包之後,會回答說我就是2.2.2.2,將MAC地址發送個PC1.

如果按照這個思路,顯然是可以Ping的通的。

但是,問題的根源就在這裏了,ARP包是在什麽情況的時候發送。

ARP協議是解決同一個局域網上的主機或路由器的IP地址和硬件地址的映射問題的。

也就是說當PC1想Ping PC2之前,要先看PC2是否與自己在同一個網段上,如果在一個網段上,可以直接廣播ARP,如果不在,那麽需要向網關發送ARP包,

網關查詢自己的ARP緩存。也就說如果兩臺直連,不通網段是無法Ping通的。

好,那麽下面再來看看這篇文章https://www.linuxidc.com/Linux/2017-08/146368.htm的這個圖,下面解釋了如何實現不同網段之間的電腦進行互Ping:

技術分享圖片

配置:

1、如圖所示先配置所有的IP地址

2、針對不同的機器配置路由

  • Aubin-CentOS1

    route add default gw 10.0.1.1
  • CentOS-R1

    route add -net 10.0.3.0/24 gw 10.0.2.2
    route add -net 10.0.4.0/24 gw 10.0.2.2
    echo 1 > /proc/sys/net/ipv4/ip_forward                #啟用轉發功能(可以理解為啟用路由功能)
    iptables -F                                           #關閉防火墻
  • CentOS-R2

    route add -net 10.0.1.0/24 gw 10.0.2.1
    route add -net 10.0.4.0/21 gw 10.0.3.1
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -F
  • CentOS-R3

    route add -net 10.0.2.0/24 gw 10.0.3.2
    route add -net 10.0.1.0/24 gw 10.0.3.2
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -F
  • Aubin-CentOS1

    route add default gw 10.0.4.1

以上就是全部配置,然後用CentOS1去測試,ping CentOS2的IP地址10.0.4.100。如果ping通則所有配置均沒問題。如果沒有通請參展以下幾點做檢查。

1、使用route -n查看路由是否生效。

2、cat /proc/sys/net/ipv4/ip_forward查看輸出是否為1,如果為0說明沒有開啟轉發功能。

檢查echo 1 > /proc/sys/net/ipv4/ip_forward是否執行成功。

3、檢查IP 與 掩碼是否配置正確,因為有多個IP地址容易搞混,所以好好檢查。

4、檢查是是否關閉防火墻,執行iptables -F

5、如果在虛擬機環境下做實驗,檢查MAC地址是否沖突

兩個不同網段的PC直連是否可以Ping通,肯定可以Ping的通(轉)