pfSense book之路由

本文摘要路由网关网关设置网关组静态路由路由公共IP路由协议故障排查防火墙的主要功能之一是进行路由通信。本章介绍几个与路由相关的主题,包括网关、静态路由、路由协议、公网IP地址的路由以及路由信息的显示。网关网关是路由的关键;它们是通过其他网络可以到达的系统。大多数人熟悉的网关类型是默认网关,它是系统连接到互联网或任何其他网络的路由器,在缺少更具体的路由时使用。网关也用于静态路由,其中必须通过特定的本地路由器...

路由

  • 网关
  • 网关设置
  • 网关组
  • 静态路由
  • 路由公共IP
  • 路由协议
  • 故障排查

防火墙的主要功能之一是进行路由通信。本章介绍几个与路由相关的主题,包括网关、静态路由、路由协议、公网IP地址的路由以及路由信息的显示。

网关

网关是路由的关键;它们是通过其他网络可以到达的系统。大多数人熟悉的网关类型是默认网关,它是系统连接到互联网或任何其他网络的路由器,在缺少更具体的路由时使用。网关也用于静态路由,其中必须通过特定的本地路由器到达其他网络。在大多数普通网络中,网关始终与系统上的其中一个接口位于同一个子网中。例如,如果防火墙的IP地址为192.168.22.5/24,则到另一个网络的网关必须位于192.168.22.x之内。一个值得注意的例外是点对点接口,如基于PPP协议的接口,这些接口通常在另一个子网中具有网关IP地址,因为它们不以相同的方式使用。

网关地址系列(IPv4和IPv6)

使用路由和网关时,IPv4和IPv6地址的功能和过程相同,但给定路由的所有地址都必须属于同一地址系列。例如,IPv6网络必须使用IPv6网关/路由器进行路由。无法为使用IPv4网关地址的IPv6网络创建路由。在使用网关组时,也适用相同的限制;网关组中的所有网关都必须具有相同的地址系列。

管理网关

在网关可用于任何目的之前,必须将其添加到防火墙配置中。

如果网关将用于WAN类型接口,则可以将该网关添加到该接口的配置页面中,或者可以先手动添加网关,然后从接口的下拉列表中选择。

动态接口类型(如DHCP和PPPoE)会收到一个在网关列表中标记为“动态”的自动网关。这些网关的参数调整与静态网关相同,但动态网关可能不会被删除。

添加或管理网关:

  • 导航到系统 > 路由管理
  • 单击网关选项卡
  • 在列表的顶部或底部单击 添加,创建新的网关
  • 在现有网关的条目旁边单击 编辑 编辑现有网关
  • 单击条目旁边的 删除 删除现有网关
  • 单击 禁用 禁用活动网关
  • 单击 启用 启用被禁用的网关

网关设置

在添加或编辑网关时,会显示一个页面,其中列出了用于控制网关行为的所有选项。

唯一需要的设置是接口、名称和网关(IP地址)。

接口
通过网关到达的接口。例如,如果这是LAN子网上的本地网关,请在此处选择LAN接口。

地址系列
IPv4或IPv6,取决于此网关的地址类型。

名称
在网关列表中引用的网关的名称。它只能包含字母数字字符或下划线,但不能包含空格。例如:WANGWGW_WANWANGATE有效,但不能是WAN GW

网关
网关的IP地址。如前所述,这必须位于在选定接口上直接配置的子网中。

默认网关
选中后,该网关将被视为系统的默认网关。当没有其他更具体的路由时使用它。防火墙可以有一个IPv4默认网关和一个IPv6默认网关。

禁用网关监视
默认情况下,系统每秒会ping每个网关一次,以监控到达被监视IP地址的流量延迟和数据包丢失情况。该数据用于网关状态信息显示。如果出于任何原因不希望进行此监视,可以通过选中禁用网关监视来禁用它。请注意,如果不监控网关状态,则多WAN将无法正常工作,因为它无法检测到故障。

监视IP
该选项配置用于确定网关状态的IP地址。默认情况下,系统将ping网关IP地址。这并不总是可取的,特别是在网关IP地址是本地的情况下。在这种情况下,更有意义的是ping更远的上游,例如互联网上的ISP DNS服务器或其他服务器。另一种情况是,当ISP容易出现上游故障时,在互联网上ping主机是更准确的测试,以确定广域网是否可用,而不是测试链路本身。一些流行的选择包括Google公共DNS服务器或流行的网站如Google或Yahoo。如果此框中指定的IP地址未直接连接,则会添加一条静态路由,以确保通过预期网关访问监控IP地址的流量。每个网关必须具有唯一的监控IP地址。

通过访问系统状态 > 网关或使用仪表板上的网关小部件可以检查防火墙感知的网关状态。如果网关显示Online,则监视IP地址正在成功返回ping。

强制状态
当选中“标记网关为关闭”时,即使从监视IP地址返回ping,网关也始终被视为关闭。这对于WAN运行不稳定并且网关转换导致中断的情况很有用。网关可以被强制进入停机状态,以便其他网关可以成为首选,直到它稳定为止。

描述
网关条目的可选描述以供参考。关于它用于的网关或接口的简短说明,可以留空不填。

高级选项

可以更改多个参数以控制多WAN场景中的网关监视或处理方式。大多数用户不需要改变这些值。要访问高级选项,请单击 显示高级选项

比重
使用多WAN时,如果两个WAN具有不同的带宽量,比重参数会调整WAN使用的比率。例如,如果WAN1有5Mbit/s,WAN2有10Mbit/s,则设置WAN1的权重为1,WAN2的权重为2。那么每三个连接出去,一个使用WAN1,两个使用WAN2。使用这种方法,可以更好地利用可用带宽进行分配。可以选择从1到30的比重。

数据有效负载
为了节省带宽,默认情况下,dpinger守护程序会发送有效负载大小为0的ping,以便ICMP回显请求中不包含任何数据。但是,在极少数情况下,CPE、ISP路由器或中间跳可能丢弃或拒绝没有有效载荷的ICMP数据包。在这些情况下,请将有效负载大小设置为大于0。通常,1的大小足以满足受影响的设备。

延迟阈值
该字段控制此网关认为正常的延迟量。该值以毫秒(ms)表示。“From”字段中的值是将网关视为警告状态的下边界,但不会关闭。如果延迟超过“To”字段中的值,则会将其视为关闭并从服务中删除。这些字段中的正确值可能因所使用的连接类型以及防火墙和监视IP地址之间的ISP或设备而异。默认值是从300到500。

其他一些常见情况可能需要调整这些值。例如,即使在更高的延迟时间内,一些DSL线路也可以正常运行,因此将“To”参数增加到700或更多时,可以降低网关被视为关闭的次数,而实际上其运行是可以接受的。另一个例子是通过GIF隧道连接到一个提供商(如he.net for IPv6)。由于GIF隧道的性质以及隧道服务器上的负载,即使ICMP ping响应报告的延迟时间高达900毫秒,隧道仍可正常工作。

丢包阈值
与延迟阈值类似,数据包丢失阈值控制监视IP地址的数据包丢失量,然后视为不可用。该值以百分比表示,0表示无损,100表示全损。“From”字段中的值是将网关视为警告状态的下边界,但不会关闭。如果数据包丢失量超过“To”字段中的值,则会将其视为关闭并从服务中删除。这些字段中的正确值可能因所使用的连接类型以及防火墙和监视器IP地址之间的ISP或设备而异。默认值是从10到20。

与延迟一样,连接可能倾向不同数量的数据包丢失,但仍有可用的运行状态,尤其是在监视IP地址的路径丢失或延迟ICMP以支持其他流量时。我们观察到不可用的连接伴有少量损失,而有些连接即使在显示45%损失时依然可用。如果在正常运行的WAN网关上发生丢失警报,请在“From”和“To”字段中输入较高的值,直到达到线路的良好平衡。

探测间隔
该字段中的值控制向监视IP地址发送ping的频率(以毫秒为单位)。默认值是每秒钟ping两次(500毫秒)。在某些情况下,例如需要监控但具有高数据费用的连接,即使每秒钟的微小ping也会累加。只要该值小于或等于警报间隔并且不违反下面列出的时间段的限制,则该值可以安全地增加。较低的值会更频繁地ping,更加准确,但会消耗更多资源。较高的值对不稳定的行为不敏感,消耗较少的资源,但以牺牲准确性为代价。

丢包间隔
数据包被视为丢失之前的时间(以毫秒为单位)。默认值是2000毫秒(2秒)。必须大于或等于高延迟阈值。如果已知线路在正常工作时具有高等待时间,则可以增加该值以进行补偿。

时间段
平均结果平均的时间量(以毫秒为单位)。默认值是60000(60秒,一分钟)。较长的时间周期需要更多时间用于延迟或丢失以触发警报,但不易受Ping结果中不稳定行为的影响。时间段必须大于探测间隔和损耗间隔总和的两倍,否则可能至少有一个探测未完成。

警报间隔
守护进程检查警报条件的时间间隔(以毫秒为单位)。默认值是1000(1秒)。该值必须大于或等于探测间隔,因为探测之间不可能发生警报。

使用非本地网关

通过接口特定路由选项使用非本地网关允许网关IP地址存在于接口子网之外的非标准配置。有些提供商为了减少IPV4地址的供应,不把网关放到每个客户子网上,而采取了这种措施。除非上游供应商要求,否则不要激活此选项。

网关组

网关组定义了用于故障转移或负载平衡的网关组。网关组还可以在GUI的某些区域用作服务故障转移的接口值,例如OpenVPN、IPsec和动态DNS。

有关设置这些功能的信息,请参阅多个WAN连接。

静态路由

当主机或网络通过默认网关以外的其他路由器可达时必须使用静态路由。pfSense知道直接连接到它的网络,并按照路由表的指示到达所有其他网络。在内部路由器连接其他内部子网的网络中,必须为该网络定义一条静态路由才能到达。通过这些其他网络的路由器必须先添加为网关。

静态路由在系统 > 路由管理,静态路由选项卡上设置。

管理静态路由

添加路由:

  1. 导航到系统 > 路由管理,静态路由选项卡
  2. 单击 添加 一条静态路由
  3. 填写如下配置:

    • 目标网络:指定使用此路由可达的网络和子网掩码。
    • 网关:定义通过该网络到达的路由器。
    • 禁用:设置是否不使用静态路由。
    • 描述:输入描述性文字供管理员参考。
  4. 单击 保存
  5. 单击 应用更改

管理一个已经存在的静态路由:

  • 导航到系统 > 路由管理,静态路由选项卡
  • 在现有条目右侧单击 编辑 编辑该静态路由
  • 在现有条目右侧单击 删除 删除该静态路由
  • 在现有条目右侧单击 禁用 禁用该静态路由
  • 在现有条目右侧单击 启用 启用该静态路由
  • 单击 应用更改

静态路由设置实例

下图是网络拓扑:

静态路由拓扑示例

由于上图中的192.168.2.0/24网络不在直接连接到pfSense的接口上,因此需要使用静态路由,以便防火墙知道如何到达该网络。如前所述,在添加静态路由之前,必须首先定义网关。

编辑静态路由配置

防火墙规则调整也可能是必须的。如果使用自定义LAN规则,则必须允许通过LAN上的静态路由访问网络。

绕过相同接口上的流量的防火墙规则

在很多情况下,当使用静态路由时,通信将不对称地结束。这意味着流量在一个方向上将沿着不同的路径而不是在相反方向上进行传递。如下图所示:

非对称路由示意图

从PC1到PC2的流量将经过pfSense,因为它是PC1的默认网关,但是相反方向的流量将直接从路由器到PC1。由于pfSense是一个有状态的防火墙,它必须看到整个连接的流量才能正确地过滤流量。在这种非对称路由的情况下,任何有状态的防火墙都会丢弃合法的流量,因为它不能在两个方向都看不到流量的情况下保持正常状态。这通常只影响TCP,因为其他协议没有正式的连接握手供防火墙识别以用于状态跟踪。

在非对称路由场景中,有一个选项可用于防止合法流量被丢弃。该选项添加了防火墙规则,允许使用更宽松的一组规则选项和状态处理来定义在静态路由中定义的网络之间的所有流量。要激活这个选项:

  1. 单击系统 > 高级设置
  2. 单击防火墙/NAT选项卡
  3. 选中 在同一接口上绕过流量的防火墙规则
  4. 单击 保存

或者,可以手动添加防火墙规则以允许类似的流量。需要两个规则,一个在流量进入的接口选项卡上(例如局域网),另一个在“浮动”选项卡上:

  1. 导航到防火墙 > 规则策略
  2. 单击流量将进入的接口的选项卡 (如 LAN)
  3. 单击 添加 在列表顶部添加新的规则
  4. 进行如下设置:
设置项
协议TCP
源地址本地系统利用静态路由的地址 (如 LAN Net)
目的地址路由的另一端的网络
TCP 标识设置为任意标识 (在高级选项下)
状态类型Sloppy 状态 (在高级选项下)
  1. 单击 保存
  2. 单击浮动选项卡
  3. 单击 添加 在列表顶部添加新的规则
  4. 进行如下设置:
设置项
接口流量来源的接口 (如 LAN)
方向Out
协议TCP
源地址本地系统利用静态路由的地址 (如 LAN Net)
目的地址路由的另一端的网络
TCP 标识设置为任意标识 (在高级选项下)
状态类型Sloppy 状态 (在高级选项下)
  1. 单击 保存

如果来自其他来源或目的地的其他流量在防火墙日志中显示TCP标志(例如“TCP:SA”或“TCP:PA”)被阻止,则可以调整或复制规则以匹配该流量。

注意:如果需要在静态路由子网之间进行流量过滤,则必须在路由器上进行过滤,而不是在防火墙上完成,因为防火墙不在网络中,这样可以有效控制流量。

路由公共IP地址

本节介绍在单个防火墙部署中将公有IP子网分配给内部接口的公共IP地址的路由。

IP 分配

ISP至少需要分配两个公共IP子网。一个用于防火墙的WAN,另一个用于内部接口。这通常是WAN的一个/30子网,为内部接口分配第二个子网。WAN和内部IP分配示例如下。

WAN IP 范围

IP 地址分配
198.51.100.65ISP路由器(pfSense默认网关)
198.51.100.66pfSense WAN接口IP地址

内部IP 范围

IP 地址分配
192.0.2.129pfSense OPT1接口
192.0.2.130内部主机
192.0.2.131内部主机
192.0.2.132内部主机
192.0.2.133内部主机
192.0.2.134内部主机

接口配置

首先配置WAN和OPT接口。如果需要,LAN接口也可用于公共IP地址。在本例中,LAN是专用IP子网,OPT1是公用IP子网。

WAN接口配置

相应地添加IP地址和网关。如下图所示。

WAN接口IP配置

OPT1接口配置

现在启用OPT1,可以选择更改其名称,并配置IP地址和子网掩码。如下图所示。

启用OPT1接口

配置OPT1 IP地址

配置NAT

在内部接口上使用公共IP地址时,必须修改默认的将内部通信转换为WAN IP的设置。

  1. 导航到防火墙 > NAT
  2. 单击出站选项卡
  3. 选择混合出站NAT规则生成
  4. 单击 保存

单击 添加 在列表顶部添加新规则,然后设置如下:

设置项
不执行NAT选中,这样NAT将被禁用
接口WAN
协议Any
源地址输入本地公网IP子网,如192.0.2.128/29
目的地址Any
  1. 单击 保存

这将覆盖默认的自动规则,该规则将从本地接口离开WAN接口的所有流量转换为WAN IP地址。来自OPT1网络192.0.2.128/29的流量不会被转换,因为手动添加的规则将其排除在NAT之外。此配置保持其他内部接口的自动行为,以便自动出站NAT规则的优点不会丢失。下图显示了此配置。

如果在所有本地接口上使用公共IP地址,请设置禁用出站NAT,而不是使用混合模式。

出站NAT规则配置

防火墙规则配置

NAT和IP地址配置现在已完成。需要添加防火墙规则以允许出站和入站流量。下图显示了类似DMZ的配置,其中所有去往LAN子网的流量都被拒绝,允许DNS和ping到OPT1接口IP地址,并允许HTTP出站。

OPT1防火墙规则示例

要允许来自Internet的流量到达内部接口上的公共IP地址,请使用公共IP地址作为目标在WAN上添加规则。下图显示了一个允许HTTP到192.0.2.130的规则,这是内部接口上的公共IP地址之一。

WAN入站规则示例

注意: 在没有NAT的情况下,流量将从LAN流向这个公共子网。如果不需要这种行为,请相应地调整LAN防火墙和NAT规则。此外,策略路由可能需要绕过以允许从LAN到该接口。

路由协议

pfSense目前支持三种路由协议:

  • RIP (路由信息协议)
  • BGP (边界网关协议)
  • OSPF (开放最短路径优先)

本节详细介绍了这些内容,并假定了解路由协议是一项先决条件。关于路由协议的深入讨论超出了本书的范围。

RIP

RIP是路由插件的一部分。要安装它:

  1. 导航到系统 > 插件管理
  2. 点击可用插件
  3. 在列表中找到 routed
  4. 单击右侧的 安装,安装 routed
  5. 点击 确认
  6. 等待安装完成
  7. 导航到系统服务 > RIP

配置RIP:

  • 选中启用RIP框
  • 选择将侦听并发送路由更新的接口
  • 选择RIP版本
  • 如果RIPv2正在使用并且需要网络密码,请输入RIPv2密码
  • 单击 保存

RIP将立即启动并开始在指定的接口上发送和接收路由更新。

BGP

要使用OpenBSD的OpenBGPD插件,必须先安装它:

  1. 导航到系统 > 插件管理
  2. 点击可用插件
  3. 在列表中找到OpenBGPD
  4. 单击右侧的 安装,安装OpenBGPD
  5. 点击 确认
  6. 等待安装完成
  7. 导航到系统服务 > OpenBGPD

BGP是一个复杂的协议,详细描述它不在本书的讨论范围之内。对于那些了解BGP的人来说,在pfSense上配置OpenBGPD是直接的。在开发这个插件的过程中,我们参考了O’Reilly的BGP书籍,并推荐给任何想要部署BGP的人。

OpenBGPD插件的一般配置形式是:

  • 使用远程AS在组选项卡上配置组
  • 在邻居选项卡上配置一个或多个邻居作为定义的组的成员
  • 在设置选项卡上根据需要配置本地AS和网络通告

OSPF

在pfSense中有一个使用Quagga路由守护程序的OSPF插件。要安装它:

  1. 导航到系统 > 插件管理
  2. 点击可用插件
  3. 在列表中找到Quagga_OSPF
  4. 单击右侧的 安装,安装 Quagga_OSPF
  5. 点击 确认
  6. 等待安装完成
  7. 导航到系统服务 > Quagga OSPF

OSPF也是一个相当复杂的路由协议,虽然不像BGP那样复杂。配置OSPFD的细节也超出了本书的范围,但对于习惯了OSPF的人来说,在GUI中找到的配置选项将会很熟悉。

Quagga OSPF插件的一般配置形式是:

  • 根据需要添加接口,将本地接口子网标记为被动,并将其他OSPF路由器作为活动对象
  • 根据需要配置路由器ID、区域ID等常规设置

故障排查

在诊断通信流量问题时,首先要检查pfSense已知的路由。

查看路由

有两种方式查看路由:通过WebGUI和通过命令行。

要在WebGUI中查看路由,请导航至系统诊断 > 路由,如下图所示。

路由表显示

命令行输出与WebGUI中的输出类似:

# netstat -rWn
Routing tables

Internet:
Destination        Gateway            Flags       Use    Mtu      Netif Expire
default            198.51.100.1       UGS        1822   1500       igb1
10.2.0.0/24        link#2             U             0   1500       igb0
10.2.0.1           link#2             UHS           0  16384        lo0
127.0.0.1          link#11            UH          204  16384        lo0
198.51.100.0/24    link#3             U          1181   1500       igb1
198.51.100.1       00:08:a2:09:95:b6  UHS        2789   1500       igb1
198.51.100.2       link#3             UHS           0  16384        lo0

这些页面上显示的列表示路由的各种属性,将在本节后面进行解释。

路由表列说明

Destination(目的地)
该列包含目标主机或网络。系统的默认路由显示为default。否则,主机按IP地址列出,网络列出IP地址和CIDR子网掩码。

Gateway(网关)
网关是通过其发送到特定目的地的分组路由器。如果此列显示链接(如link#1),则该网络可通过该接口直接访问,并且不需要特殊路由。如果一台主机可以看到一个MAC地址,那么它是一个本地可达的主机,在ARP表中有一个条目,并且数据包直接发送到那里。

Flags(标志)
有很多标志,所有这些标志都在FreeBSD的netstat(1)手册页中进行了介绍,如下表所示:

代表字符标志含义
1RTF_PROTO1协议特定路由标志 #1
2RTF_PROTO2协议特定路由标志 #2
3RTF_PROTO3协议特定路由标志 #3
BRTF_BLACKHOLE在更新期间丢弃数据包
bRTF_BROADCAST代表广播地址
DRTF_DYNAMIC通过重定向动态创建
GRTF_GATEWAY目的地需要中介转发
HRTF_HOST主机输入(否则为网络)
LRTF_LLINFO链接地址转换的有效协议
MRTF_MODIFIED动态修改(通过重定向)
RRTF_REJECT主机或网络无法访问
SRTF_STATIC手动添加
URTF_UP可用路由
XRTF_XRESOLVE外部守护进程将协议转换为链接地址

例如,标记为UGS的路由是可用的路由,数据包通过列出的网关发送,并且是静态路由。

Refs
此列计算给定路由的当前活动使用次数。

Use
通过此路由发送的数据包总数。这有助于确定路由是否实际使用,因为随着数据包利用路由它将不断增加。

Netif
用于此路由的网络接口。

Expire
对于动态条目,此字段显示直到此路由过期且不再被使用为止的时间。

使用跟踪路由

Traceroute是一个非常有用的工具,用于测试和验证路由和多WAN功能。它显示了数据包从一端到另一端的路径中的每个“跳”,以及到达该中间点时遇到的延迟。在pfSense上,可以通过导航到系统诊断 > 跟踪路由或通过在命令行上使用traceroute来执行跟踪路由。在Windows上,该程序名称为tracert

每个IP数据包都包含一个生存时间(TTL)值。当路由器传递一个数据包时,它将TTL递减1。当路由器收到TTL为1的数据包,并且目标不是本地连接的网络时,路由器会返回ICMP错误消息“超出生存时间”并丢弃数据包。这是为了限制路由环路的影响,否则会导致每个数据包无限循环。

Traceroute利用这个TTL来将路径映射到特定的网络目的地。它通过发送TTL为1的第一个数据包开始。第一个路由器(通常是默认网关)将发回ICMP超时生存时间错误。发送数据包和接收ICMP错误之间的时间是显示的时间,与发送错误的IP地址及其反向DNS(如果有)一起列出。在发送三个TTL为1的数据包并显示它们的响应时间后,它将TTL增加到2并发送三个数据包,注意第二跳的相同信息。Traceroute递增TTL并重复该过程,直到达到指定的目的地,或超过最大跳数。

Traceroute在Windows和类Unix操作系统(BSD、Linux、Mac OS X、Unix等)上的功能稍有不同。Windows使用ICMP回应请求数据包(ping),而类Unix系统默认使用UDP数据包。ICMP和UDP是第4层协议,并且traceroute在第3层完成,因此除了考虑策略路由配置时,所使用的协议在很大程度上是不相关的。来自Windows客户端的Traceroute将根据哪个规则允许ICMP回应请求进行策略路由,而类Unix客户端将按照与正在使用的UDP端口相匹配的规则进行路由。

在本例中,使用traceroute来查看到www.google.com的路由:

# traceroute www.google.com
traceroute: Warning: www.google.com has multiple addresses; using 74.125.95.99
traceroute to www.l.google.com (74.125.95.99), 64 hops max, 40 byte packets
 1  core (172.17.23.1)  1.450 ms  1.901 ms  2.213 ms
 2  172.17.25.21 (172.17.25.21)  4.852 ms  3.698 ms  3.120 ms
 3  bb1-g4-0-2.ipltin.ameritech.net (151.164.42.156)  3.275 ms  3.210 ms  3.215 ms
 4  151.164.93.49 (151.164.93.49)  8.791 ms  8.593 ms  8.891 ms
 5  74.125.48.117 (74.125.48.117)  8.460 ms  39.941 ms  8.551 ms
 6  209.85.254.120 (209.85.254.120)  10.376 ms  8.904 ms  8.765 ms
 7  209.85.241.22 (209.85.241.22)  19.479 ms  20.058 ms  19.550 ms
 8  209.85.241.29 (209.85.241.29)  20.547 ms  19.761 ms
    209.85.241.27 (209.85.241.27)  20.131 ms
 9  209.85.240.49 (209.85.240.49)  30.184 ms
    72.14.239.189 (72.14.239.189)  21.337 ms  21.756 ms
10  iw-in-f99.google.com (74.125.95.99)  19.793 ms  19.665 ms  20.603 ms

输出结果表明,它需要10跳才能到达目的地,并且每次跳跃的延迟一般都会增加。

注意
在利用策略路由(如多WAN)时,防火墙本身可能不会在traceroute中显示为1跳。使用策略路由时,pf在转发数据包时不会减少TTL,因此traceroute无法将其检测为中间路由器。

路由和VPN

根据所使用的VPN,路由可能不会显示在远端的表中。IPsec不使用路由表,而是使用IPsec安全策略数据库(SPD)条目在内核中进行内部处理。静态路由永远不会导致流量通过IPsec连接。OpenVPN使用系统路由表,因此对于通过OpenVPN隧道可访问的网络,存在这样的条目,如下例所示:

# netstat -rWn
Routing tables

Internet:
Destination        Gateway            Flags       Use    Mtu      Netif Expire
default            198.51.100.1       UGS       92421   1500        em0
10.6.0.0/16        10.6.203.1         UGS           0   1500     ovpnc2
10.6.203.0/24      10.6.203.2         UGS           0   1500     ovpnc2
10.6.203.1         link#9             UH            0   1500     ovpnc2
10.6.203.2         link#9             UHS           0  16384        lo0
10.7.0.0/24        link#2             U       1260771   1500        em1
10.7.0.1           link#2             UHS           0  16384        lo0
127.0.0.1          link#7             UH          866  16384        lo0
198.51.100.0/24    link#1             U       1251477   1500        em0
198.51.100.7       link#1             UHS           0  16384        lo0

OpenVPN接口为10.6.203.2,网关为10.6.203.1,接口为ovpnc2。在这个例子中使用OpenVPN可以访问的网络是10.6.0.0/16。

对于IPsec,由于IPsec隧道本身没有IP地址,因此跟踪路由不如OpenVPN这样的路由设置有用。当通过IPsec将路由跟踪运行到目标时,作为IPsec隧道的跳跃将显示超时。

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~