public String queryLocalIPAddress(final String fallbackValue) throws RuntimeException {
    if (isNatEnvironment()) {
      try {
        final NatManager natManager = getNatManager().orElseThrow();
        LOG.debug(
            "Waiting for up to {} seconds to detect local IP address...",
            NatManager.TIMEOUT_SECONDS);
        return Optional.ofNullable(
                natManager.queryLocalIPAddress().get(NatManager.TIMEOUT_SECONDS, TimeUnit.SECONDS))
            .orElseThrow();
      } catch (Exception e) {
        LOG.debug("Caught exception while trying to query NAT local IP address (ignoring)", e);
        LOG.warn(
            "Unable to query NAT local IP address. Using the fallback value : {} ", fallbackValue);
      }
    }
    return fallbackValue;
  }
Returns a {@link Optional} wrapping the local IP address.

@param fallbackValue the advertised IP address fallback value
@return The local IP address wrapped in a {@link Optional}.
@throws RuntimeException the runtime exception
nat/src/main/java/org/hyperledger/besu/nat/NatService.java