diff --git a/adapter/outbound/util.go b/adapter/outbound/util.go index 2c85c7c8c1..c2891021be 100644 --- a/adapter/outbound/util.go +++ b/adapter/outbound/util.go @@ -11,6 +11,7 @@ import ( "strconv" "sync" + "github.com/metacubex/mihomo/component/dialer" "github.com/metacubex/mihomo/component/resolver" C "github.com/metacubex/mihomo/constant" "github.com/metacubex/mihomo/transport/socks5" @@ -108,6 +109,10 @@ func resolveUDPAddrWithPrefer(ctx context.Context, network, address string, pref } } + if ip.Is6() && dialer.IP4PEnable { + ip, port = dialer.LookupIP4P(ip, port) + } + if !ip.IsValid() && fallback.IsValid() { ip = fallback } diff --git a/component/dialer/dialer.go b/component/dialer/dialer.go index 54a1aa6ac7..68ff346ccd 100644 --- a/component/dialer/dialer.go +++ b/component/dialer/dialer.go @@ -408,3 +408,7 @@ func lookupIP4P(addr netip.Addr, port string) (netip.Addr, string) { } return addr, port } + +func LookupIP4P(addr netip.Addr, port string) (netip.Addr, string) { + return lookupIP4P(addr, port) +}