diff --git a/net/portmapper/portmapper.go b/net/portmapper/portmapper.go index 5ed6ea8c6efb7..32752881b208c 100644 --- a/net/portmapper/portmapper.go +++ b/net/portmapper/portmapper.go @@ -752,10 +752,14 @@ func (c *Client) Probe(ctx context.Context) (res ProbeResult, err error) { } return res, err } + ip, ok := netaddr.FromStdIP(addr.(*net.UDPAddr).IP) + if !ok { + continue + } port := uint16(addr.(*net.UDPAddr).Port) switch port { case c.upnpPort(): - if mem.Contains(mem.B(buf[:n]), mem.S(":InternetGatewayDevice:")) { + if ip == gw && mem.Contains(mem.B(buf[:n]), mem.S(":InternetGatewayDevice:")) { meta, err := parseUPnPDiscoResponse(buf[:n]) if err != nil { c.logf("unrecognized UPnP discovery response; ignoring")