我正在嘗試在 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>