diff --git a/cmd/main_fakedns.go b/cmd/main_fakedns.go index 79c5862..0c48813 100644 --- a/cmd/main_fakedns.go +++ b/cmd/main_fakedns.go @@ -9,24 +9,26 @@ import ( ) func init() { - args.EnableFakeDns = flag.Bool("fakeDns", false, "Enable fake DNS") - args.DnsCacheSize = flag.Int("dnsCacheSize", 100, "Size of DNS LRU Cache") - args.FakeDnsAddr = flag.String("fakeDnsAddr", ":53", "Listen address of fake DNS") + args.EnableFakeDNS = flag.Bool("fakeDNS", false, "Enable fake DNS") + args.DNSCacheSize = flag.Int("dnsCacheSize", 100, "Size of DNS LRU Cache") + args.FakeDNSAddr = flag.String("fakeDNSAddr", ":53", "Listen address of fake DNS") args.FakeIPRange = flag.String("fakeIPRange", "198.18.0.1/16", "Fake IP CIDR range for DNS") - args.FakeDnsHosts = flag.String("fakeDnsHosts", "", "DNS hosts mapping, e.g. 'example.com=1.1.1.1,example.net=2.2.2.2'") + args.FakeDNSHosts = flag.String("fakeDNSHosts", "", "DNS hosts mapping, e.g. 'example.com=1.1.1.1,example.net=2.2.2.2'") addPostFlagsInitFn(func() { - if *args.EnableFakeDns { - fakeDnsServer, err := fakedns.NewServer(*args.FakeIPRange, *args.FakeDnsHosts, *args.DnsCacheSize) + if *args.EnableFakeDNS { + fakeDNSServer, err := fakedns.NewServer(*args.FakeIPRange, *args.FakeDNSHosts, *args.DNSCacheSize) if err != nil { panic("create fake dns server error") } - if err := fakeDnsServer.StartServer(*args.FakeDnsAddr); err != nil { + + fakedns.ServeAddr = *args.FakeDNSAddr + if err := fakeDNSServer.Start(); err != nil { panic("cannot start fake dns server") } - fakeDns = fakeDnsServer + fakeDNS = fakeDNSServer } else { - fakeDns = nil + fakeDNS = nil } }) } diff --git a/common/dns/dns.go b/common/dns/dns.go index bcdb79d..95cc045 100644 --- a/common/dns/dns.go +++ b/common/dns/dns.go @@ -4,15 +4,9 @@ import ( "net" ) -const CommonDnsPort = 53 - -type FakeDns interface { - // GenerateFakeResponse generates a fake dns response for the specify request. - // GenerateFakeResponse(request []byte) ([]byte, error) - +type FakeDNS interface { + Start() error + Stop() error // IPToHost returns the corresponding domain for the given IP. IPToHost(ip net.IP) (string, bool) - - // IsFakeIP checks if the given ip is a fake IP. - // IsFakeIP(ip net.IP) bool } diff --git a/proxy/tcp.go b/proxy/tcp.go index 06747fc..b3d28d0 100644 --- a/proxy/tcp.go +++ b/proxy/tcp.go @@ -19,15 +19,15 @@ type tcpHandler struct { proxyHost string proxyPort int - fakeDns dns.FakeDns + fakeDNS dns.FakeDNS sessionStater stats.SessionStater } -func NewTCPHandler(proxyHost string, proxyPort int, fakeDns dns.FakeDns, sessionStater stats.SessionStater) core.TCPConnHandler { +func NewTCPHandler(proxyHost string, proxyPort int, fakeDNS dns.FakeDNS, sessionStater stats.SessionStater) core.TCPConnHandler { return &tcpHandler{ proxyHost: proxyHost, proxyPort: proxyPort, - fakeDns: fakeDns, + fakeDNS: fakeDNS, sessionStater: sessionStater, } } @@ -86,7 +86,7 @@ func (h *tcpHandler) Handle(conn net.Conn, target *net.TCPAddr) error { var localConn = conn // Lookup fakeDNS host record - targetHost, err := lookupHost(h.fakeDns, target) + targetHost, err := lookupHost(h.fakeDNS, target) if err != nil { log.Warnf("lookup target host error: %v", err) return err diff --git a/proxy/udp.go b/proxy/udp.go index c28f992..97c9288 100644 --- a/proxy/udp.go +++ b/proxy/udp.go @@ -23,15 +23,15 @@ type udpHandler struct { remoteAddrMap sync.Map remoteConnMap sync.Map - fakeDns dns.FakeDns + fakeDNS dns.FakeDNS sessionStater stats.SessionStater } -func NewUDPHandler(proxyHost string, proxyPort int, timeout time.Duration, fakeDns dns.FakeDns, sessionStater stats.SessionStater) core.UDPConnHandler { +func NewUDPHandler(proxyHost string, proxyPort int, timeout time.Duration, fakeDNS dns.FakeDNS, sessionStater stats.SessionStater) core.UDPConnHandler { return &udpHandler{ proxyHost: proxyHost, proxyPort: proxyPort, - fakeDns: fakeDns, + fakeDNS: fakeDNS, sessionStater: sessionStater, timeout: timeout, } @@ -64,7 +64,7 @@ func (h *udpHandler) fetchUDPInput(conn core.UDPConn, input net.PacketConn, addr func (h *udpHandler) Connect(conn core.UDPConn, target *net.UDPAddr) error { // Lookup fakeDNS host record - targetHost, err := lookupHost(h.fakeDns, target) + targetHost, err := lookupHost(h.fakeDNS, target) if err != nil { log.Warnf("lookup target host error: %v", err) return err diff --git a/proxy/utils.go b/proxy/utils.go index b5bca45..e0ef4d7 100644 --- a/proxy/utils.go +++ b/proxy/utils.go @@ -13,7 +13,7 @@ import ( ) // DNS lookup -func lookupHost(fakeDns dns.FakeDns, target net.Addr) (targetHost string, err error) { +func lookupHost(fakeDNS dns.FakeDNS, target net.Addr) (targetHost string, err error) { var targetIP net.IP switch addr := target.(type) { case *net.TCPAddr: @@ -27,8 +27,8 @@ func lookupHost(fakeDns dns.FakeDns, target net.Addr) (targetHost string, err er targetHost = targetIP.String() // Replace with a domain name if target address IP is a fake IP - if fakeDns != nil { - if host, exist := fakeDns.IPToHost(targetIP); exist { + if fakeDNS != nil { + if host, exist := fakeDNS.IPToHost(targetIP); exist { targetHost = host } } diff --git a/scripts/run_socks_linux.sh b/scripts/run_socks_linux.sh index dc3a655..f4ddc08 100644 --- a/scripts/run_socks_linux.sh +++ b/scripts/run_socks_linux.sh @@ -11,4 +11,4 @@ config_route() { } config_route & -sudo ./build/tun2socks -tunAddr 240.0.0.2 -tunGw 240.0.0.1 -proxyServer 192.168.1.1:1080 -fakeDns -loglevel info -stats +sudo ./build/tun2socks -tunAddr 240.0.0.2 -tunGw 240.0.0.1 -proxyServer 192.168.1.1:1080 -fakeDNS -loglevel info -stats diff --git a/scripts/run_socks_macos.sh b/scripts/run_socks_macos.sh index a973e08..c26d6a4 100644 --- a/scripts/run_socks_macos.sh +++ b/scripts/run_socks_macos.sh @@ -7,4 +7,4 @@ config_route() { } config_route & -sudo ./build/tun2socks -tunAddr 240.0.0.2 -tunGw 240.0.0.1 -proxyServer 192.168.1.1:1080 -fakeDns -loglevel info -stats +sudo ./build/tun2socks -tunAddr 240.0.0.2 -tunGw 240.0.0.1 -proxyServer 192.168.1.1:1080 -fakeDNS -loglevel info -stats