[Windows] Mac 無法連線到不同網段下 Windows 10 的機器?
Windows 10 裝好之後,我想要讓它可以用 SMB 共享目錄,
好讓我的 Mac 可以去存取 Windows 上的檔案,不料卻一直遇到問題…
首先我是在 Windows 上,進到網路的進階共用設定,
把「開啟網路探索」和「開啟檔案及印表機共用」都打開:
這樣設定好之後,從我的 Mac 筆電一直沒辦法 ping 到 Windows 10 的機器,
不過很怪的是同樣在區網中的一台 Linux 桌機,卻可以 ping 到 Windows 10 機器,
也可以看到分享的目錄… 是怎麼回事呢?
先懷疑是網段的問題,因為我的 Mac 筆電是在 10.28.x.x 網段,
Linux 桌機是在 10.1.117.x 網段,Windows 10 則是在 10.1.116.x 網段…
但用這幾台機器互 ping 了一下,結果如下:
– Mac (10.28.x.x) –> Linux (10.1.117.x): OK
– Mac (10.28.x.x) –> Windows (10.1.116.x): Fail
– Linux (10.1.117.x) –> Mac (10.28.x.x): OK
– Linux (10.1.117.x) –> Windows (10.1.116.x): OK
– Windows (10.1.116.x) –> Mac (10.28.x.x): OK
– Windows (10.1.116.x) –> Linux (10.1.117.x): OK
可以看到,基本上所有的機器都能互通,就只有 Mac –> Windows 這個方向不行,
但如果說是 10.28.x.x 網段不能連到 10.1.116.x 網段也不對,
因為我的 Mac 可以連到 10.1.116.x 的某台電腦…
這樣推敲下來,有點在懷疑是 Windows 10 上的防火牆的問題了~
到 Windows 上將防火牆關掉,果真就可以從 Mac ping 到 Windows。
但將防火牆再打開,連線就又不通…
這有點說不過去,我在一開始就打開了網路探索/檔案共用的功能,
沒道理 Windows 沒有去自動設定防火牆,這樣應該一般使用者都會連不上才對…
來看一下防火牆的設定吧~
在開始選單搜尋 firewall,進到 Windows 防火牆的設定畫面:
選擇「進階設定」顯示所有的防火牆規則:
在「輸入規則」這邊,我們可以看到所有外部連線進來本機,相關的防火牆規則。
可以看到「檔案及印表機共用」的幾條規則裡面,動作都是「允許」~
這實在是太奇怪了,明明是允許連線進來,為什麼 Mac 就是連不進來?
自己試著建立一個接受 ICMPv4 的規則,結果 Mac 就 ping 的到 Windows 了,
可是明明原本就有一個允許連線的「檔案共用 (回應要求 – ICMPv4-In)」的規則,
難道這些規則都有問題?
花了很長的時間,才注意到一個關鍵的小細節…
點下其中一條防火牆規則 (如本例中的 SMB-In),切到「領域 (Domain)」頁面,
注意到「遠端 IP 位址」那邊,原本的值是「這些 IP 位址」,
也就是只有屬於 Windows 機器的「本機子網路」的 IP 位址,才是允許的範圍內!!
將這些規則的遠端 IP 位址都改成「任何 IP 位址」,
Mac 就可以 ping 到 Windows,也能看到 Windows 分享出來的目錄了:
這個問題會浮現出來,主要還是因為我的 Mac 和 Windows 網段不同造成的…
Windows 和 Linux 看似不同網路,但其實是同一個子網路:
– 10.1.116.x (netmask 255.255.252.0) = 10.1.116.0 / 22
– 10.1.117.x (netmask 255.255.252.0) = 10.1.116.0 / 22
而 Mac 的就是另一個子網路:
– 10.28.x.x (netmask 255.255.255.0) = 10.28.x.0 / 24
因為 Windows 和 Linux 屬於同一個子網路,
因此防火牆規則中限定遠端機器是「本機子網路」時,Windows 與 Linux 還能互通;
相對地,不是在 Windows 本機子網路的 Mac 機器,自然就被防火牆擋下來了~
這次找尋錯誤的發生原因花了很久的時間,網路真的好難啊…