我有一台 CISCO ASA 5506-X,配置了 4 个接口和一组访问列表等。它是通过 CLI 配置的,并且以路由模式运行,而不是透明模式。一切运行良好,但现在我遇到了一个尚无法解决的问题:
其中一个接口包含一个子网 (192.168.2.*),其中的设备会发出 UDP 广播来发现另一种设备。其他设备位于另一个子网中的另一个接口 (192.168.3.*)。UDP 广播在某个端口上是全局的 (255.255.255.255)。
我希望 192.168.2.* 发出的全局 UDP 广播也能发送到 192.168.3.* - 当然,也允许返回。
在其他思科设备上,我已经发现可以使用ip helper-address
和ip forward-protocol
命令来做到这一点 - 但据我所知,ASA 型号不支持这些。
那么,如何获取跨接口的全局 UDP 广播?
答案1
我认为这里的问题在于你误解了 255.255.255.255 的含义。它不是“全局广播”。RFC 中的定义(https://www.rfc-editor.org/rfc/rfc919):
“地址 255.255.255.255 表示本地硬件网络上的广播,不得转发。例如,不知道其网络号并向某个服务器请求网络号的主机可能会使用此地址。因此,例如,网络 36 上的主机可以:
- 使用 255.255.255.255 向所有近邻广播
- 使用 36.255.255.255 向所有 36 号网络广播
在您的例子中,主机 192.168.3.0/24 向 255.255.255.255 发送广播,表示请将此广播发送给 192.168.3.0/24 中的所有主机。这与向 192.168.3.255 发送数据包相同。如果 .3 中的主机想要向 .2 发送广播,则需要向 192.168.2.255 发送数据包。将来自 .3 的广播重新广播到 .2 本质上是说您希望将它们设为同一子网,同时将它们保留为不同的子网。(子网的常见其他名称是“广播域”)
ip helper
和ip forward-protocol
ASA命令的作用dhcprelay
是捕获播送数据包并将其作为单播数据包到特定主机。通常是远程 DHCP 服务器,但也有其他用途。这在上一个答案中链接的 Checkpoint 文档的第一段中明确说明了。它可以被认为是一种 NAT。即目标地址(255.255.255.255)更改为指定的单播 IP,192.168.3.10。然后作为普通单播数据包路由。这对 DHCP 非常有效,并允许 DHCP 服务器位于远程网络中并仍然接收和响应 DHCP 请求,但不幸的是,即使 ASA 支持ip helper
和ip forward-protocol
命令,它仍然无法解决您的问题。您的要求违反了 RFC 和子网的定义。
这里最简单的解决方案是将 2 个子网合并到 192.168.2.0/23,然后桥接 2 个接口,并使用透明模式下的 ASA 过滤 2 组主机之间的流量。
如果您无法做到这一点,那么您需要制定一种更具可扩展性的方法,让您的设备相互找到对方。要么向其子网各自的广播地址(192.168.3.255 和 192.168.2.255)发送广播,要么使用其他发现方法。255.255.255.255 不是可扩展或灵活的解决方案。
答案2
当前版本中没有此功能(可能出于安全原因)。Cisco 改为实施“dhcprelay”,并且没有提供更通用的广播转发方法。
我建议在 ASA FW 之外添加另一个可以执行相同角色的设备(可能是 Cisco 路由器或 Linux 机器)。您需要允许通过 ASA 进行“定向广播”。
您可能还考虑使用支持广播中继的其他防火墙平台,例如 Checkpoint 防火墙。
看这里看看它的配置
答案3
我知道我来晚了,但我在其他地方找不到可以接受的答案。我最近为 Sonos 使用的 SSDP 实现解决了这个问题。它确实在网络之间留下了几个开放的端口,但我能够使用 nat 规则将其余端口屏蔽。
Sonos 控制器向 239.255.255.250:1900 发送 UDP 多播消息以发现 Sonos 设备。Sonos 设备回复该消息。然后控制器在端口 1400/tcp 上向设备发出 http 请求以发出命令。设备在端口 3400/tcp 上直接向控制器发送 http 通知。
您需要根据您的具体情况进行定制,因此您的里程可能会有所不同。
-焊接000
配置:
启用多播路由
multicast-routing
接口参考
interface GigabitEthernet1/1
nameif wan
security-level 0
no pim
# sonos are here
interface GigabitEthernet1/2
nameif insecure_lan
security-level 33
# rest of net here
interface GigabitEthernet1/8
nameif secure_lan
security-level 100
规则使用的各种对象
# network objects
object network net_secure
subnet 192.168.2.0 255.255.255.0
object network net_insecure
subnet 192.168.20.0 255.255.255.0
# blackhole ip, this should be an unused IP
object network obj_secure_blackhole
host 192.168.2.7
# SSDP related objects
object service SSDP
service udp destination range 1900 1901
description Simple Service Discovery Protocol
object service bidir-ephemeral
service udp source range 32768 65535 destination range 32768 65535
description bidir ephemeral port range
object network obj_ssdp
host 239.255.255.250
object network net_multicast
range 224.0.0.0 239.255.255.255
# sonos service objects
object service sonos-3400-tcp
service tcp destination range 3400 3401
description Sonos App Control TCP/3400-3401
object-group service sonos-control
service-object object sonos-3400-tcp
service-object object bidir-ephemeral
# sonos network objects
object network obj_sonos_arc
host 192.168.20.131
description Sonos Arc
object network obj_sonos_move
host 192.168.20.199
description Sonos Move
object-group network sonos
network-object object obj_sonos_arc
network-object object obj_sonos_move
ACL(顺序很重要)
# interface group definitions
access-group insecure_lan_access_in in interface insecure_lan
access-group secure_lan_access_in in interface secure_lan
# allow Sonos devices to communicate back to secure networks
access-list insecure_lan_access_in extended deny ip object-group sonos object obj_secure_blackhole
access-list insecure_lan_access_in extended permit object-group sonos-control object-group sonos object net_secure
# block the rest of the traffic from insecure to secure
access-list insecure_lan_access_in extended deny ip any object net_secure
# block insecure multicast traffic
access-list insecure_lan_access_in extended deny ip any object net_multicast
# allow ssdp traffic in from the secure net
access-list secure_lan_access_in extended permit object SSDP any object obj_ssdp
# block the rest of the multicast nets
access-list secure_lan_access_in extended deny ip any object net_multicast
多播路由
# route the multicast outbound from secure to insecure
mroute 192.168.2.0 255.255.255.0 secure_lan dense insecure_lan
NAT
# secure lan dynamic nat'd to insecure (allows multicast to function correctly)
# this can be limited to just the SSDP service, if desired
nat (secure_lan,insecure_lan) source dynamic any interface
# allow sonos devices on insecure network to send to port 3400 on secure network
nat (insecure_lan,secure_lan) source static sonos sonos destination static
net_secure net_secure service sonos-3400-tcp sonos-3400-tcp no-proxy-arp
# any other traffic that the sonos might send to secure network is sent to the blackhole
nat (insecure_lan,secure_lan) source static sonos sonos destination static net_secure obj_secure_blackhole unidirectional no-proxy-arp