我想在 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 show
或netstat -r
),您会发现 192.168.10.0/24 的流量将通过 发出em1
,而其他所有流量都将通过 设置的默认路由。当 router01 从 192.168.100.0/24 收到数据包时,它将回复 ,因为路由dhclient
表中没有该子网的条目。因此它将使用默认路由。您可以通过以下方式轻松检查这一点:em0
em1
em0
$ route get 192.168.100.1
在 router01 上。记下回复上的目的地和接口名称。
router02 可以通过 router01 访问互联网,因为在这种情况下请求来自 router2 (192.168.10.2) 上的 DMZ 接口,并且该接口与em1
router01 位于同一子网。因此,当 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