如何在 Virtualbox 中配置两个不同的内部网络之间的路由器?

如何在 Virtualbox 中配置两个不同的内部网络之间的路由器?

我想在 Virtualbox 中构建这个网络:

在此处输入图片描述

我使用 OpenBSD 作为路由器,这个操作系统非常简单,配置起来也很容易,但是我仍然遇到一个问题。名为 router02 的路由器可以通过 router01 访问互联网,并且 LAN 网络中的设备可以与 router02 通信。因此,router02 发生了一些事情,因此 LAN 网络无法通过 router01 访问网络。我也想从 LAN 内部网络访问网络,然后在这两个子网之间进行双向通信。我猜问题出在 pf.conf 文件上,但我找不到它。

router01 有两个网卡:

  • em0->NAT;
  • em1-> 内部卡(名为 DMZ);

/etc/主机名.em1

192.168.10.1 255.255.255.0

/etc/主机名.em0

dhcp

/etc/pf.conf

pass out on em0 inet from 192.168.10.0/24 to any flags S/SA nat to (em0) round-robin
pass out on em0 inet from 192.168.100.0/24 to any flags S/SA nat to (em0) round-robin

router02 有两个网卡:

  • em0-> 内部卡(名为 DMZ);
  • em1-> 内部卡 (名为 LAN);

/etc/主机名.em1

192.168.100.1 255.255.255.0

/etc/主机名.em0

192.168.10.2 255.255.255.0

/etc/mygate

192.168.10.1

/etc/pf.conf

pass out on em0 inet from 192.168.100.0/24 to 192.168.10.1/24

(我并不想进行任何复杂的 pf 配置,只想传递每个数据包。)

答案1

如果您检查 router01 上的路由表(使用route shownetstat -r),您会发现 192.168.10.0/24 的流量将通过 发出em1,而其他所有流量都将通过 设置的默认路由。当 router01 从 192.168.100.0/24 收到数据包时,它将回复 ,因为路由dhclient表中没有该子网的条目。因此它将使用默认路由。您可以通过以下方式轻松检查这一点:em0em1em0

$ route get 192.168.100.1

在 router01 上。记下回复上的目的地和接口名称。

router02 可以通过 router01 访问互联网,因为在这种情况下请求来自 router2 (192.168.10.2) 上的 DMZ 接口,并且该接口与em1router01 位于同一子网。因此,当 router01 回复时,它会通过该接口回复,em1因为这是 192.168.10.0/24 的路由。

您有两种可能的解决方案:要么在 router02 上使用 NAT(这意味着来自 LAN 的所有请求都将以 192.168.10.2 作为源地址到达 router01),这样可以工作,但意味着 router02 会增加额外的负载,或者做更合乎逻辑的事情,即在 router01 上向您的 LAN 添加一条路由,这样它就知道到该子网的流量必须经过 router02:

# route add 192.168.100.0/24 192.168.10.2

您可以通过添加以下行来使其永久生效/etc/hostname.em1

!route add 192.168.100.0/24 192.168.10.2

相关内容