介面上的 VLAN 中繼只能從其 VLAN 上的主機進行 ping 操作

介面上的 VLAN 中繼只能從其 VLAN 上的主機進行 ping 操作

我正在嘗試在 Ubuntu 14.04 伺服器上為每個 VLAN 設定子介面。我相信我已經使用 vconfig 成功設定了它們,但子介面只能從自己的 VLAN 上的主機進行 ping 操作。我需要 VLAN 以外的主機才能連接到它。這對於我的 CentOS 伺服器來說似乎運作得很好,所以我知道我的網路是正確的。當我tcpdump從 VLAN 外部的客戶端執行 ping 子介面操作時,我也會在子介面上看到 ICMP 請求封包。

有任何想法嗎?您還可以提供我哪些其他故障排除提示?

編輯:我設法解決了這個問題。我在伺服器上的 tcpdump 顯示 icmp 回顯請求,但沒有回覆。我找到了相關帖子這裡。像這樣啟用火星來源日誌記錄:

echo 1 >/proc/sys/net/ipv4/conf/eth2/log_martians

進而

sysctl net.ipv4.conf.all.rp_filter=2

修復。我很驚訝這種情況並沒有更頻繁地出現。

答案1

我設法解決了這個問題。我在伺服器上的 tcpdump 顯示 icmp 回顯請求,但沒有回覆。我找到了相關帖子這裡。像這樣啟用火星來源日誌記錄:

echo 1 >/proc/sys/net/ipv4/conf/eth2/log_martians

進而

sysctl net.ipv4.conf.all.rp_filter=2

修復。我很驚訝這種情況並沒有更頻繁地出現。

答案2

為了讓您的用戶端能夠 ping 伺服器的 IP 位址,需要滿足以下條件之一:

  • 用戶端必須位於同一 [V]LAN 上使用與嘗試 ping 的位址位於相同 IP 子網路上的 IP 位址。

或者

  • 必須有一個 IP 路由器(或路由器網路)將客戶端的 [V]LAN 和 IP 子網路連接到伺服器的 [V]LAN 和 IP 子網路。

如果您尚未在兩個 VLAN 之間(或在同一 VLAN 上的兩個 IP 子網路之間,如果您正在執行此操作)設定路由器,那麼您還沒有提供可供 ping 穿越的 IP 網路路由。

請注意,某些作業系統(至少在某些配置中)不會注意某個 IP 封包進入哪個介面。因此,在這些情況下,他們可能會回覆來自「錯誤」介面的 ping 請求。可能是你的 CentOS 環境如此寬鬆,但你的 Ubuntu 機器對哪個介面是哪個介面更加小心。或者您可能已在 CentOS 機器上啟用了 IP 轉送(IP 路由器的最簡單版本),但在 Ubuntu 機器上未啟用。

答案3

聽起來您需要您嘗試連接的特定遠端網路的路由。

若要測試將路由插入路由表,如下所示:

sudo route add -net 172.16.0.0/12 gw 192.168.1.113 dev eth.<vlan number>

要使這些路由永久存在,您需要在 /etc/network/interfaces 中新增下列項目:

up route add [-net|-host] <host/net>/<mask> gw <host/IP> dev <Interface>

相關內容