dns.go 545 B

123456789101112131415161718192021222324252627282930313233
  1. //go:build android
  2. package tun
  3. import (
  4. "github.com/metacubex/mihomo/dns"
  5. D "github.com/miekg/dns"
  6. "net"
  7. )
  8. func shouldHijackDns(dns net.IP, target net.IP, targetPort int) bool {
  9. if targetPort != 53 {
  10. return false
  11. }
  12. return net.IPv4zero.Equal(dns) || target.Equal(dns)
  13. }
  14. func relayDns(payload []byte) ([]byte, error) {
  15. msg := &D.Msg{}
  16. if err := msg.Unpack(payload); err != nil {
  17. return nil, err
  18. }
  19. r, err := dns.ServeDNSWithDefaultServer(msg)
  20. if err != nil {
  21. return nil, err
  22. }
  23. r.SetRcode(msg, r.Rcode)
  24. return r.Pack()
  25. }