我無法從不同子網路中的電腦存取在 KVM 託管的虛擬機器上執行的 Web 應用程式。
所以,我想從機器192.168.1.2(右上角綠色圓圈)訪問虛擬機192.168.10.1(底部中間紅色圓圈)上運行的Web應用程式
我在 netgear 路由器上新增了一條靜態路由,以便將所有對 192.168.10.0/24 的請求轉送到主機 192.168.1.1。
主機本身有靜態路由,透過vmbr1橋接介面將請求轉送至192.168.10.0/24
- 從 192.168.1.2 到 80 連接埠的 telnet 失敗,從主機 192.168.1.1 成功。
- 對虛擬機器的 ping 呼叫可以從 192.168.1.2 機器到 VM
- 追蹤路由失敗,但如果我新增 -I 選項,追蹤路由也可以工作。
預先感謝您的幫助或任何線索。
PS:我準確地說,即使停用防火牆,它也不起作用。
iptables-L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
從實體機器 192.168.1.2 到虛擬機器 192.168.10.1 => KO
traceroute to 192.168.10.1 (192.168.10.1), 30 hops max, 60 byte packets
1 192.168.1.254 (192.168.1.254) 2.390 ms 3.004 ms 3.436 ms
2 * * *
3 * * *
...
30 * * *
從虛擬機器 192.168.1.2 到實體機器 192.168.10.1 機器的追蹤路由 => OK
traceroute to 192.168.1.2 (192.168.1.2), 30 hops max, 60 byte packets
1 192.168.10.254 (192.168.10.254) 0.846 ms 0.648 ms 0.519 ms
2 192.168.1.2 (192.168.1.2) 5.447 ms 5.277 ms 4.977 ms
從 192.168.1.2 計算機到 VM 計算機 192.168.10.1 的 ping 操作:
ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
From 192.168.1.254: icmp_seq=1 Redirect Host(New nexthop: 192.168.1.1)
From 192.168.1.254 icmp_seq=1 Redirect Host64 bytes from 192.168.10.1: icmp_seq=1 ttl=63 time=2.77 ms
From 192.168.1.254: icmp_seq=2 Redirect Host(New nexthop: 192.168.1.1)
From 192.168.1.254 icmp_seq=2 Redirect Host64 bytes from 192.168.10.1: icmp_seq=2 ttl=63 time=2.56 ms
在主機上,路由定義良好,從該主機我可以毫無問題地存取虛擬機器的 Web 應用程式。
ip路由顯示
default via 192.168.1.254 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.1
192.168.10.0/24 dev vmbr10 proto kernel scope link src 192.168.10.254
192.168.20.0/24 dev vmbr20 proto kernel scope link src 192.168.20.254
編輯
當我用 RJ45 電纜將 192.168.1.2 機器(來源機器)直接插入路由器時,它可以工作。之前192.168.1.2是透過Wifi連接到路由器的。所以我認為這個路由器有問題,沒有很好地將靜態路由應用於透過 Wifi 連接的機器。我不知道為什麼,但這很奇怪:S
答案1
您遇到的問題是因為您使用的路由器在同一子網路 192.168.1.0/24 上有 2 個介面。
192.168.1.2機器正在向其預設網關發送資料包,我假設它是192.162.1.254,即路由器。
但是,由於路由器發現封包的下一跳是同一子網路上的另一個 IP,因此它會產生您在 ping 輸出中看到的重定向。
您需要將路由器作為網橋或交換器運行,即不需要路由,因為 KVM 192.168.1.1 和用戶端 192.168.1.2 都在同一子網路上,它們不需要路由協定進行通訊。
此外,這意味著客戶端 192.168.1.2 的正確預設閘道應該是 KVM 192.168.1.1。
另外,您需要確認您是否為KVM使用了正確的預設網關,它真的是路由器嗎?路由器是否為 KVM 或用戶端提供對此處繪製的子網路之外的其他子網路的存取?