diff --git a/route/rule_item_ip_is_private.go b/route/rule_item_ip_is_private.go index d7341645..6592a9d3 100644 --- a/route/rule_item_ip_is_private.go +++ b/route/rule_item_ip_is_private.go @@ -27,9 +27,11 @@ func (r *IPIsPrivateItem) Match(metadata *adapter.InboundContext) bool { if destination.IsValid() { return !N.IsPublicAddr(destination) } - for _, destinationAddress := range metadata.DestinationAddresses { - if !N.IsPublicAddr(destinationAddress) { - return true + if !r.isSource { + for _, destinationAddress := range metadata.DestinationAddresses { + if !N.IsPublicAddr(destinationAddress) { + return true + } } } return false