从不同子网中的机器访问虚拟机上的Web服务器

我无法从位于不同子网的计算机上访问由KVM托pipe的虚拟机上运行的Web应用程序。

所以,我想从机器192.168.1.2(在绿色圆圈的右上angular)访问虚拟机192.168.10.1上运行的Web应用程序(红色圆圈底部中间)

我在netgear路由器上添加了一个静态路由,以便所有到192.168.10.0/24的请求都被转发到主机192.168.1.1。

主机本身有一个静态路由,通过vmbr1桥接接口将请求转发到192.168.10.0/24

  • 80端口上的Telnet从192.168.1.2失败,并从主机192.168.1.1成功。
  • 对虚拟机的ping调用从192.168.1.2机器到VM
  • traceroute失败,但如果我添加-I选项,traceroute也可以。

提前感谢您的帮助或任何线索。

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到VM机器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 * * * 

从VM机器192.168.1.2到物理机器192.168.10.1机器跟踪路由=>确定

 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

您遇到的问题是因为您正在同一子网192.168.1.0/24上使用具有2个接口的路由器。

192.168.1.2机器发送数据包到它的默认网关,我假设它是192.162.1.254,即路由器。

但是,由于路由器发现该数据包的下一跳是同一子网上的另一个IP,因此会生成您在ping输出中看到的redirect。

您需要将路由器作为网桥或交换机运行,即不需要路由,因为KVM 192.168.1.1和客户机192.168.1.2都在同一个子网上,不需要路由协议通话。

此外,这意味着客户端192.168.1.2的正确默认网关应该是KVM 192.168.1.1。

还有一点,你需要确认你是否使用了正确的KVM默认网关,它真的是路由器吗? 路由器是否提供KVM或客户端访问其他子网的访问权限?