使用两个 pfSense 路由器,我在 2 个站点之间创建了一个共享密钥 VPN。两个路由器都是 pfSense 1.2.2。客户端站点的 pfSense 框是该站点的网关路由器,但在服务器站点,pfSense 不是该 LAN 的网关。客户端站点连接到服务器站点正常,我收到“初始化序列完成”日志消息,表明连接成功。
然后,从客户端站点,我可以使用客户端 LAN 上的任何机器在其 LAN 地址上 ping 服务器站点上的 pfSense 框(甚至通过 Web 界面对其进行配置,因此 VPN 至少适用于该地址)。我还可以 ping “接口 IP”(客户端配置)/“地址池”(服务器配置)IP 范围内的两个地址,它们是相同的私有子网,并且不在客户端或服务器 LAN 范围内。
问题是我无法访问服务器站点 LAN 上的任何其他 IP。我不需要能够从服务器站点访问客户端站点 LAN 上的机器,但我确实需要能够从客户端站点访问的不仅仅是服务器。目前,客户端 LAN 上的任何人都可以 ping 到服务器的 LAN 接口,客户端 LAN 上的任何人都可以从 pfSense 服务器本身 ping,但不能从服务器 LAN ping。我在服务器上的 LAN 接口防火墙规则上添加了 any <> any 规则。
如果我在服务器的 LAN 接口上捕获流量,我会看到从客户端 LAN 站点传递的数据包,但如果我嗅探,我看不到这些数据包进入服务器的 LAN。正如我所说,我在 LAN 接口上添加了一条规则以允许任何到任何如下,那么我还需要做什么来允许从隧道到 LAN 的流量,反之亦然?
更新: 我在客户端 pfSense 上添加了服务器 LAN 的推送路由,反之亦然。我还尝试升级到 pfSense 1.2.3 的 RC 并将 Opt1 接口设置为 tun0,然后在 opt1 和 LAN 之间添加允许规则。仍然没有运气。
更新 2:需要按照接受的答案中所述在服务器 LAN 上设置正确的路由,但我忽略了服务器 pfSense/OpenVPN 单元在 KVM 下作为来宾操作系统运行,而另一半问题是 IP 转发需要在主机操作系统的 /etc/ufw/before.rules 中启用。这就是我没有更彻底地解释设置的原因。
这可能是一个问题。假设您有以下网络:
当您尝试从外部 VPN 盒访问 SIC 时,流量路由如下所示:
看起来很好,但是,为了让流量流动,10.1.1.90 机器应该能够响应,这意味着来自它的数据包也必须可以路由到 10.2.2.2。内部客户端显然有ip:10.1.1.90,掩码:255.255.255.0和路由器:10.1.1.90。因此,数据包将按如下方式路由:
基本上,回复数据包甚至不会到达 VPN。你能做什么?显然,将路由添加到内部客户端以将所有数据包路由到 10.2.2.2 而不是 VPN 框而不是路由器,例如(Windows 框):
这将解决单机级别的问题。回复数据包会去:
要解决网络级别的问题,您必须在同一问题上修改路由器,将所有流向 10.2.2.0 的流量重定向到 10.1.1.2。这种方式回复数据包将去:
另一种解决方案是:让您的 VPN 盒在 10.1.1.2 接口上进行 NAT。这样,对于内部机器,它看起来好像所有流量都来自 10.1.1.2,并且回复将转到 10.1.1.2。不过,我建议通过路由,因为 NAT 将需要 VPN 盒上的额外资源用于连接跟踪器
您是否创建了防火墙规则以允许流量流向您想要的地方?