pfSense - 到子网的流量未通过静态路由路由

pfSense - 到子网的流量未通过静态路由路由

pfSense 版本:2.3.4-RELEASE

我们最近从 WatchGuard 防火墙转换为使用 pfSense。我们几乎已经让所有东西都按我们想要的方式运行,但似乎有一个小问题无法解决。我们基本上有两个网络段:一个用于我们的计算机,一个用于我们的电话系统。每个网络段都在自己的子网上,通过不同的接口进入 pfSense 路由器。我们希望能够从“计算机段”上的客户端 PC 管理“电话段”上的电话系统。

以前,在 WatchGuard 配置中,我们配置了静态路由,该路由告诉路由器如何在不同子网之间路由。我正在尝试使用网关和静态路由在 pfSense 路由器上设置类似的东西。

以下是我们想要做的一些例子:

  • 客户端 10.17.9.25 想要使用 IP 地址为 10.18.1.3 的 Cisco UC500 系列路由器的 Web 管理 UI。
  • 客户端 10.17.9.25 想要使用 IP 地址为 10.1.10.1 的 Cisco Unity 软件的 Web 管理 UI。
  • 客户端 10.17.9.25 想要使用 IP 地址为 10.18.1.4 的思科智能交换机的 Web 管理 UI

我们已经配置、测试并运行了以下接口:

  • 广域网(不太适用于这个问题)
  • 局域网
    • IP 地址:10.17.1.1/16
  • OPT1PHONE
    • IP 地址:10.18.1.1/16

我们已经配置、测试并运行了以下网关:

  • 电话网关
    • 接口:Opt1Phone
    • 网关地址:10.18.1.1
    • 监控IP:10.18.1.1

我们已经配置、测试并运行了以下静态路由:

  • 网络:10.1.10.0/30 网关:PhoneGW 接口:Opt1Phone

电话部分是不久前由供应商设置的。我不知道他们为什么选择设置两个不同的子网(10.18.0.0/16 子网和 10.1.10.1/30 子网)。我本来希望一切都在一个子网中,但我不是 VoIP 解决方案专家,而且系统已经设置好并运行正常,所以我看不出有什么理由更改​​它。

从“计算机段”上的客户端,我可以 ping 和浏览(使用 Web 浏览器)到 10.1.10.1 和 10.18.1.3。它们都物理上位于 UC500 设备上。我无法 ping 或浏览到 10.18.1.4,这是交换机的管理 Web UI。

从我阅读的关于 pfSense 静态路由的文章中,它说“对于直接连接到防火墙任何接口的网络,不需要添加路由...”。由于智能交换机的管理网站 IP 地址为 10.18.1.4/16,并且 OPT1PHONE 接口的电缆直接插入智能交换机,我认为路由应该与我们已经配置的路由一起工作。但由于某种原因,事实并非如此。因此,为了尝试让它工作,我认为这就像为 10.18.1.4 地址添加静态路由一样简单。以下是我配置它的方法:

Network: 10.18.1.0/24 Gateway: PhoneGW Interface: Opt1Phone

我尝试使用 10.18.1.1/16 作为路由的网络,但 pfSense 不允许我这样做,因为该子网已用于接口。这很合理(请参阅我上面关于路由应该如何工作的观点),但由于没有静态路由,路由就无法工作,所以我认为我可能能够让 pfSense 使用此静态路由识别路由。由于这也不起作用,我猜这不是正确的方法。

静态路由是使用 pfSense 执行此操作的正确方法吗?我知道我遗漏了一些东西,但我不知道是什么。如果有人能给我指明正确的方向,我将不胜感激。

这是一个简单的网络图: 简单网络图

以下是 pfSense 路由器上当前正在运行的路由的修剪打印输出:

Destination    Gateway    Flags    Use    Mtu    Netif    Expire
===========    =======    ======   ===    ===    =====    ======
10.1.10.0/30   10.18.1.1  UGS      307    1500   igb2
10.17.0.0/16   link#1     U        6293358 1500  igb0
10.17.1.1      link#1     UHS      0      16384  lo0
10.18.0.0/16   link#3     U        6      1500   igb2
10.18.1.1      link#3     UHS      279582 16384  lo0

这是使用我的测试静态路由配置的 pfSense 路由器的路由的修剪打印输出:

Destination    Gateway    Flags    Use    Mtu    Netif    Expire
===========    =======    ======   ===    ===    =====    ======
10.1.10.0/30   10.18.1.1  UGS      307    1500   igb2
10.17.0.0/16   link#1     U        6293358 1500  igb0
10.17.1.1      link#1     UHS      0      16384  lo0
10.18.0.0/16   link#3     U        6      1500   igb2
10.18.1.0/24   10.18.1.1  UGS      28     1500   igb2
10.18.1.1      link#3     UHS      279582 16384  lo0

我尝试从 pfSense 路由器执行 ping 操作,以查看通信中断的位置:

  • 我可以从 10.18.1.1/16 的 OPT1PHONE 接口 ping 到 10.18.1.4/16 的目标设备 IP 地址
  • 我可以从 10.17.1.1/16 的 LAN 接口 ping 通 10.18.1.1/16 的 OPT1PHONE 接口
  • 我可以从位于 10.17.9.25/16 的 LAN 客户端 ping 到位于 10.18.1.1/16 的 OPT1PHONE 接口
  • 我可以从位于 10.17.9.25/16 的 LAN 客户端 ping 到位于 10.18.1.3/16 的目标设备 IP 地址
  • 不能从位于 10.17.9.25/16 的 LAN 客户端 ping 位于 10.18.1.4/16 的目标设备 IP 地址。

从没有测试静态路由的路由表来看,路由器似乎应该知道如何从 10.17.0.0/16 子网到达 10.18.0.0/16 子网。两个子网都定义了正确的网关,并且 ping 操作(大部分)都证实了这一点。甚至到具有 10.18.1.1 网关的 10.1.10.0/30 网络的静态路由也能正常工作。我认为我应该能够 ping 并浏览 10.18.1.4/16 的 Web GUI,因为路由器知道 10.18.0.0/16 子网及其所在的接口。但是,出于某种原因,这不起作用。

答案1

如果您可以从 pfSense 访问(ping)管理 IP 但不能访问计算机段,最简单的方法是向 pfSense 添加混合 NAT 选项,如下所示:(将 GUEST 切换为 Opt1Phone),您尝试访问的设备很可能没有返回路由。

对于直接连接的网络,您不需要静态路由。

在此处输入图片描述

答案2

您的设置太大/太复杂,我没法理解。也许您也是这样。那么我该如何解决这个问题呢?也许告诉您,会对您有所帮助。

您面临两个基本工程问题:

  1. 您不知道为什么您当前的设置会这样工作
  2. 你想让你的系统按照你想要的方式运行

要解决 (1.),你需要了解你的系统。什么是理解?理解意味着你有一个符合现实的心理模型。你如何确保它符合现实?你采用你的心理模型,预测系统在某些给定条件下的行为方式。然后你实际上将系统带入这些条件,然后你措施。然后将测量结果与预测结果进行比较。测量结果和预测结果是否相同?

如果答案是肯定的,那么你的思维模型就是正确的。你能验证的独立预测越多,你对思维模型的正确性就越有信心。

如果不是,那么你的思维模型就是错误的。你需要修正你的模型。给定测量值,你能否调整你的模型以适应测量值?

具体来说:如果您认为您已正确设置了网络,那么它应该如何运行?您如何衡量它?

我的基本网络工程工具是pingtraceroutetcpdump(又称数据包捕获)。因此数据包应该从此处的接口出来。是吗?将您的笔记本电脑连接到 C1 的接口,然后从 C1 到 R 执行 ping 操作,并查看tcpdump从 C1 出来的内容。网络设备通常具有本机数据包捕获工具,因此您可以在那里 (例如在下一个交换机上) 进行数据包捕获,而无需拔出电缆并将其连接到笔记本电脑。

继续 (2.)。你有一个难以实现/复杂的目标。你会怎么做?你分而治之。也就是说,你将问题分解成各个部分。然后你一个接一个地实现它们,然后一步一步地将它们组合在一起。然后你在每一步验证你的预测是否正确。

关于你的问题,假设你想要一个这样的网络:

C1 - N1 - R - N2 - C2

其中 R 是路由器,N1 和 N2 是网络,C1 和 C2 是客户端。您希望 C1 能够与 C2 通信。好的,让我们简化问题:

  1. C1 需要能够与 R 通信
  2. C2 也一样
  3. R 需要转发数据包

我们可以进一步减少。我们减少(1.):

  • a. C1 必须能够向 R 发送数据包
  • b. R 必须能够向 C1 发送数据包

我们可以进一步减少 a.(和 b.):

  1. C1 必须知道将发往 R 的数据包发送到哪里(C1 必须将需要到达 R 的数据包发送到哪一个下一跳,或者 C1 必须将发往 R 的数据包丢弃到哪个接口?)
  2. R 必须能够识别并接收发往它的数据包

等等。上述每个点都是您在减少问题时做出的假设。您要做的是让您的系统符合实现从模型得出的预测所需的条件。也就是说:如果我像这样配置 C1 的接口,像那样配置 R 的接口,那么 C1 将能够 ping R。好的,我们现在就配置我们的系统,就像我认为正确一样。现在让我们测量一下。ping 是否有效?如果不行,我在线路上看到什么包?R 上的 tcpdump 向我显示了哪些数据包。等等。

所以这就是我要做的事情。我会把所有东西分成小部分,验证每个部分是否按预期工作,并在每个点进行测量(tcpdump),以防某些部分没有按预期工作。

答案3

据我了解,您的情况是这样的。您的所有客户端都连接到 LAN 10.17.0.0/16,而所有其他交换机都连接到 Opt1Phone 10.18.0.0/16。以下静态路由应该适合您。试试看。

Network: 10.18.0.0/16 Gateway: PhoneGW Interface: Opt1Phone
Network: 10.1.10.1/30 Gateway: PhoneGW Interface: Opt1Phone

相关内容