使用两个 pfSense 路由器,我在两个站点之间创建了一个共享密钥 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 版并添加设置为 tun0 的 Opt1 接口,然后在 opt1 和 LAN 之间添加允许规则。仍然没有成功。
更新 2:需要按照已接受答案中所述在服务器 LAN 上设置正确的路由,但我忘了提到服务器 pfSense/OpenVPN 单元在 KVM 下作为客户操作系统运行,而问题的另一半是需要在主机操作系统的 /etc/ufw/before.rules 中启用 IP 转发。这就是我没有更彻底地解释设置的结果。
答案1
这可能是一个问题。假设您有以下网络:
address pool: 10.1.1.0/255.255.255.0
router: 10.1.1.1
internal interface on internal vpn server: 10.1.1.2
some external machine that VPNs to network: 10.2.2.2
some internal client machine: 10.1.1.90
当您尝试从外部 VPN 盒访问 SIC 时,流量路由如下:
- 10.2.2.2
- VPN(互联网)
- 10.1.1.2
- 10.1.1.90
- 好的
看起来不错,但是,为了让流量流动,10.1.1.90 机器应该能够响应,这意味着来自它的数据包也必须可以路由到 10.2.2.2。内部客户端显然有 ip:10.1.1.90、掩码:255.255.255.0 和路由器:10.1.1.90。因此,数据包将按以下方式路由:
- 10.1.1.90
- 10.1.1.1(因为它是路由器,而 10.2.2.2 不能直接寻址)
- 互联网
- 未找到
基本上,回复数据包甚至不会到达 VPN。你能做什么?显然,可行的方法是向内部客户端添加路由,将所有数据包路由到 10.2.2.2 而不是 VPN 盒,而不是路由器,例如(Windows 盒):
route add 10.2.2.0 mask 255.255.255.0 10.1.1.2
这将解决单机层面的问题。回复数据包将发送至:
- 10.1.1.90
- 10.1.1.2(显式路由)
- VPN(互联网)
- 10.2.2.2
要解决网络层面的问题,您必须以同样的方式修改路由器,将所有发往 10.2.2.0 的流量重定向到 10.1.1.2。这样回复数据包将会:
- 10.1.1.90
- 10.1.1.1
- 10.1.1.2
- VPN(互联网)
- 10.2.2.2
另一个解决方案是:将 VPN 盒设置为 10.1.1.2 接口上的 NAT。这样,对于内部机器来说,所有流量看起来都来自 10.1.1.2,回复将发送到 10.1.1.2。不过我建议通过路由,因为 NAT 将需要 VPN 盒上的额外资源来跟踪连接
答案2
你是否创建防火墙规则让流量流向您想要的地方?