我不太确定如何ip directed broadcast
使用 FortiGate实现等效的效果。在这种情况下,FortiGate 60E 与 FortiOS 5.6.7。所以我开始挖一点。
问题:
任何人都可以确认,在 FortiGate 上,set broadcast-forward enable
在出口接口上确实将定向广播数据包作为广播(如: DstMAC ff:ff:ff:ff:ff:ff
)从该接口转发到给定子网?当然,假设合适的防火墙策略已经到位。
编辑:问题的那部分得到了回答:不,
set broadcast-forward enable
在出口接口上没有这种预期的效果。
附带问题:有没有其他方法可以在 FortiGate 上实现这一目标?
编辑 2020-07-21:是的,这是可能的。请参阅下面的“ADDON-2”。它基于 Lukas 的回答(见下文)。
请注意:我非常熟悉ip directed-broacast <someACL>
Cisco 路由设备,并且我已经多次成功部署了 WoL 支持。
另请注意:我也不想让广播助手或WoL 中继之类的东西在面向 WoL 魔术包发送主机的 FortiGate 接口上工作。该主机知道远程子网的定向广播地址并发送给它。
我一直在寻找提示(例如隔壁的serverfault),set broadcast-forward enable
这些提示将添加支持定向广播作为附加子网中的广播转发。
引用的文档(或 FortiOS 5.6 的等效文档)是这样说的:
ARP:默认情况下,ARP 广播和 ARP 回复包在属于同一转发域的所有端口或 VLAN 上进行泛洪/转发,无需端口之间的防火墙策略。此默认行为对于允许填充 FDB 并允许进一步的防火墙策略查找是必要的(有关更多详细信息,请参阅透明模式防火墙处理部分)。此选项可在接口设置级别使用参数 arpforward(默认启用)进行配置。
非 ARP:要转发非 ARP 广播,请使用以下 CLI 命令:
配置系统界面
编辑“端口 2”
设置广播转发使能
下一个
结束
但是这句话来自文档的透明模式网络部分(请参阅 -->数据包转发-->广播、多播、单播转发),我们没有在此处运行透明模式。
而且我确实觉得set broadcast-forward enable
它更像是一种入口而不是出口。Fortinet 社区的这个帖子中的“最佳答案”证实了这种直觉。
我还阅读了FortiNet KB 文章,该文章也在其他地方被引用和引用,但是...静态 ARP 条目?真的吗?我们在那个站点有几十个客户!(好吧,我仍然可以使用 ff:ff:ff:ff:ff:ff 为定向广播地址添加静态 ARP 条目,但这似乎有些错误。)
感谢您的回答、评论和指点。
[插件-1]:
正如zac67 的回答中所建议的那样,我尝试使用多播地址、多播策略以及窄单播策略(允许源进行定向广播)。没有一个达到预期的效果。
另外:set broadcast-forward enable
对出口接口没有影响。由于 ip 转发检查失败,数据包在入口处被丢弃。
id=20085 trace_id=35 func=fw_local_in_handler line=402 msg="iprope_in_check() check failed on policy 0, drop"
有趣的是,尽管事实上防火墙在路由表中有一个条目将 192.168.10.255/32 映射到正确的出口接口,但还是会发生这种情况。
RemoteFirewall # diag ip route list | grep 192.168.10
tab=255 vf=0 scope=253 type=3 proto=2 prio=0 0.0.0.0/0.0.0.0/0->192.168.10.0/32 pref=192.168.10.1 gwy=0.0.0.0 dev=8(internal1)
tab=255 vf=0 scope=254 type=2 proto=2 prio=0 0.0.0.0/0.0.0.0/0->192.168.10.1/32 pref=192.168.10.1 gwy=0.0.0.0 dev=8(internal1)
tab=255 vf=0 scope=253 type=3 proto=2 prio=0 0.0.0.0/0.0.0.0/0->192.168.10.255/32 pref=192.168.10.1 gwy=0.0.0.0 dev=8(internal1)
tab=254 vf=0 scope=253 type=1 proto=2 prio=0 0.0.0.0/0.0.0.0/0->192.168.10.0/24 pref=192.168.10.1 gwy=0.0.0.0 dev=8(internal1)
只有在最后一跳 Fortigateset broadcast-forward enable
的入口接口上(原文如此!只是不要让我开始了解这个的含义!)我看到行为发生了变化。
请注意:我的测试是使用 ICMP 完成的。在 WoL 发送方附近,我只能访问可以发送 ICMP 的系统,而不能访问 udp/9。应该没有关系,在这里。
filters=[host 192.168.115.1]
3.881184 WAN1 in 192.168.115.1 -> 192.168.10.255: icmp: echo request
3.881469 internal1 out 192.168.115.1 -> 192.168.10.255: icmp: echo request
3.882015 internal1 in 192.168.10.3 -> 192.168.115.1: icmp: echo reply
3.882016 internal1 in 192.168.10.2 -> 192.168.115.1: icmp: echo reply
3.882033 internal1 in 192.168.10.4 -> 192.168.115.1: icmp: echo reply
4.896689 WAN1 in 192.168.115.1 -> 192.168.10.255: icmp: echo request
4.896771 internal1 out 192.168.115.1 -> 192.168.10.255: icmp: echo request
4.897309 internal1 in 192.168.10.2 -> 192.168.115.1: icmp: echo reply
4.897325 internal1 in 192.168.10.3 -> 192.168.115.1: icmp: echo reply
4.899076 internal1 in 192.168.10.4 -> 192.168.115.1: icmp: echo reply
所以至少,有些事情正在发生。但是这些数据包(在第 2 层)不是真正的广播,而是被发送到 DstMac 00:00:00:00:00:00
(我期望的地方ff:ff:ff:ff:ff:ff
)
filters=[host 192.168.115.1]
4.492989 WAN1 in 192.168.115.1 -> 192.168.10.255: icmp: echo request
0x0000 0000 0000 0001 0000 0000 0000 0800 4500 ..............E.
0x0010 0054 2614 0000 4001 5544 c0a8 7301 c0a8 .T&...@.UD..s...
0x0020 0aff 0800 8984 5700 0000 13a2 c25c 0000 ......W......\..
0x0030 0000 3a7c 0700 0000 0000 0000 0000 0000 ..:|............
0x0040 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0050 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060 0000 ..
4.493277 internal1 out 192.168.115.1 -> 192.168.10.255: icmp: echo request
0x0000 0000 0000 0000 0009 0f09 0b01 0800 4500 ..............E.
0x0010 0054 2614 0000 3f01 5644 c0a8 7301 c0a8 .T&...?.VD..s...
0x0020 0aff 0800 8984 5700 0000 13a2 c25c 0000 ......W......\..
0x0030 0000 3a7c 0700 0000 0000 0000 0000 0000 ..:|............
0x0040 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0050 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060 0000 ..
无论是否存在任何多播配置位,以及是否存在窄单播防火墙策略,都可以看到此行为。
添加set broadcast-forward enable
到出口接口不会更改出口数据包中使用的 DstMAC 地址。尽管如此,本地子网上的一些系统似乎会做出反应DstMAC 00:00:00:00:00:00
并发送它们的 ping 回复。这些当然对防火墙来说是州外的并且会被丢弃 - 没有坏处。
我会让服务器团队尝试使用给定配置的 WoL - 如果这不起作用,我们将尝试将静态 ARP 条目映射 192.168.10.255 设置为 ff:ff:ff:ff:ff:ff
[/ADDON-1]:
[ADDON-2 2020-07-21]:
是的,Systems Managament 的人花了一段时间才回到这个话题上,并最终抽出时间通过 WAN 发送一些 WoL 魔术数据包。
测试是在装有 FortiOS 6.0.8 的 Fortigate 100E 上完成的。
有关配置示例,请参阅下面的 Lukas 回答。不需要任何形式broadcast-forward enable
。我知道 zac67 的回答是一样的,但包括broadcast-forward enable
.
这是定向广播离开 FG100 进入给定 LAN/子网时的样子。您会注意到正确的广播目标地址 (ffff.ffff.ffff)。
87.273480 port7 -- 192.168.35.9.54525 -> 192.168.37.255.7: udp 102
0x0000 ffff ffff ffff 0009 0f09 2012 0800 4500 ..............E.
0x0010 0082 185b 0000 7e11 59b7 c0a8 2309 c0a8 ...[..~.Y...#...
0x0020 25ff d4fd 0007 006e 5494 ffff ffff ffff %......nT.......
0x0030 f8b4 6a25 9dd7 f8b4 6a25 9dd7 f8b4 6a25 ..j%....j%....j%
0x0040 9dd7 f8b4 6a25 9dd7 f8b4 6a25 9dd7 f8b4 ....j%....j%....
0x0050 6a25 9dd7 f8b4 6a25 9dd7 f8b4 6a25 9dd7 j%....j%....j%..
0x0060 f8b4 6a25 9dd7 f8b4 6a25 9dd7 f8b4 6a25 ..j%....j%....j%
0x0070 9dd7 f8b4 6a25 9dd7 f8b4 6a25 9dd7 f8b4 ....j%....j%....
0x0080 6a25 9dd7 f8b4 6a25 9dd7 f8b4 6a25 9dd7 j%....j%....j%..
提示:FG100E 表现出与早期测试中的 FG60E 相似的行为。
随着diag sniffer packet any <someFilterString>
,目标 MAC 显示为0000.0000.0000
,但diag sniffer packet port7 <someFilterString>
显示为ffff.ffff.ffff
。这不是人们所期望的,并且不必要地扩展了故障排除。
[/ADDON-2]: