尽管内核中启用了路由,但 Ubuntiu 16.04.1 仍无法路由

尽管内核中启用了路由,但 Ubuntiu 16.04.1 仍无法路由

TL;DR:即使在内核中启用路由后,全新安装的 Ubuntu 16.04.01 也无法路由。

长版本:我正在使用各种虚拟机作为路由器进行路由。我已经加载了一个新的虚拟机(VMware Workstation 12.5;主机运行 Win7)和 Ubuntu Server 16.4.1 并对其进行了完全更新。它有 2 个 VMware NIC。我在配置网络时做了以下操作:

  1. 配置网络(ens33 是“互联网”或“外部”接口,分配 192.168.5.5;ens34 是“内部”接口,分配 10.0.0.1。
  2. 通过编辑 /etc/sysctl.conf 并删除 ipv4_forwarding 行前面的标签来启用 ipv4 路由
  3. 使用“ufw disable”禁用 Ubuntu 防火墙(此虚拟机背后有许多其他保护措施;目前没有防火墙的风险很小)
  4. 重新启动了虚拟机。

(我没有使用网络管理器)

路由器 VM 后面有另一个运行 14.04 的 Ubuntu VM,位于 10.0.0.2。

一切都应该很顺利,对吧?只是路由器没有路由来自 14.04 工作站的数据包。

路由器虚拟机本身与互联网通信。它可以 ping 通互联网和其后面的工作站,也可以 apt-get 等。工作站可以 ping 通路由器,但无法通过路由器。

在故障排除方面,我有:

  1. 检查 /proc/sys/net/ipv4/ip_forward = 1。确实如此。
  2. 检查防火墙是否已禁用。确实已禁用。
  3. 对路由器上的两个接口执行 tcpdump。我可以看到工作站的 ping 从内部接口转发到外部接口并继续发送,但我还可以看到响应到达外部接口,并没有转发回来。
  4. 尝试了不同的虚拟接口
  5. 尝试了不同的 IP 寻址方案
  6. 甚至尝试加载具有不同发行版(Debian 8)的不同 VM 作为路由器。结果相同。

问题是,我有其他较旧的路由器虚拟机可以工作。我有一个配置了路由的 Debian 7 VM,它可以工作。只是这个新的不行。

有人有什么想法吗?谢谢!

相关内容