mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-08 02:00:43 +08:00
rename Dns to DNS
This commit is contained in:
@@ -9,24 +9,26 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
args.EnableFakeDns = flag.Bool("fakeDns", false, "Enable fake DNS")
|
args.EnableFakeDNS = flag.Bool("fakeDNS", false, "Enable fake DNS")
|
||||||
args.DnsCacheSize = flag.Int("dnsCacheSize", 100, "Size of DNS LRU Cache")
|
args.DNSCacheSize = flag.Int("dnsCacheSize", 100, "Size of DNS LRU Cache")
|
||||||
args.FakeDnsAddr = flag.String("fakeDnsAddr", ":53", "Listen address of fake DNS")
|
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.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() {
|
addPostFlagsInitFn(func() {
|
||||||
if *args.EnableFakeDns {
|
if *args.EnableFakeDNS {
|
||||||
fakeDnsServer, err := fakedns.NewServer(*args.FakeIPRange, *args.FakeDnsHosts, *args.DnsCacheSize)
|
fakeDNSServer, err := fakedns.NewServer(*args.FakeIPRange, *args.FakeDNSHosts, *args.DNSCacheSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("create fake dns server error")
|
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")
|
panic("cannot start fake dns server")
|
||||||
}
|
}
|
||||||
fakeDns = fakeDnsServer
|
fakeDNS = fakeDNSServer
|
||||||
} else {
|
} else {
|
||||||
fakeDns = nil
|
fakeDNS = nil
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@@ -4,15 +4,9 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
)
|
)
|
||||||
|
|
||||||
const CommonDnsPort = 53
|
type FakeDNS interface {
|
||||||
|
Start() error
|
||||||
type FakeDns interface {
|
Stop() error
|
||||||
// GenerateFakeResponse generates a fake dns response for the specify request.
|
|
||||||
// GenerateFakeResponse(request []byte) ([]byte, error)
|
|
||||||
|
|
||||||
// IPToHost returns the corresponding domain for the given IP.
|
// IPToHost returns the corresponding domain for the given IP.
|
||||||
IPToHost(ip net.IP) (string, bool)
|
IPToHost(ip net.IP) (string, bool)
|
||||||
|
|
||||||
// IsFakeIP checks if the given ip is a fake IP.
|
|
||||||
// IsFakeIP(ip net.IP) bool
|
|
||||||
}
|
}
|
||||||
|
@@ -19,15 +19,15 @@ type tcpHandler struct {
|
|||||||
proxyHost string
|
proxyHost string
|
||||||
proxyPort int
|
proxyPort int
|
||||||
|
|
||||||
fakeDns dns.FakeDns
|
fakeDNS dns.FakeDNS
|
||||||
sessionStater stats.SessionStater
|
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{
|
return &tcpHandler{
|
||||||
proxyHost: proxyHost,
|
proxyHost: proxyHost,
|
||||||
proxyPort: proxyPort,
|
proxyPort: proxyPort,
|
||||||
fakeDns: fakeDns,
|
fakeDNS: fakeDNS,
|
||||||
sessionStater: sessionStater,
|
sessionStater: sessionStater,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -86,7 +86,7 @@ func (h *tcpHandler) Handle(conn net.Conn, target *net.TCPAddr) error {
|
|||||||
var localConn = conn
|
var localConn = conn
|
||||||
|
|
||||||
// Lookup fakeDNS host record
|
// Lookup fakeDNS host record
|
||||||
targetHost, err := lookupHost(h.fakeDns, target)
|
targetHost, err := lookupHost(h.fakeDNS, target)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warnf("lookup target host error: %v", err)
|
log.Warnf("lookup target host error: %v", err)
|
||||||
return err
|
return err
|
||||||
|
@@ -23,15 +23,15 @@ type udpHandler struct {
|
|||||||
remoteAddrMap sync.Map
|
remoteAddrMap sync.Map
|
||||||
remoteConnMap sync.Map
|
remoteConnMap sync.Map
|
||||||
|
|
||||||
fakeDns dns.FakeDns
|
fakeDNS dns.FakeDNS
|
||||||
sessionStater stats.SessionStater
|
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{
|
return &udpHandler{
|
||||||
proxyHost: proxyHost,
|
proxyHost: proxyHost,
|
||||||
proxyPort: proxyPort,
|
proxyPort: proxyPort,
|
||||||
fakeDns: fakeDns,
|
fakeDNS: fakeDNS,
|
||||||
sessionStater: sessionStater,
|
sessionStater: sessionStater,
|
||||||
timeout: timeout,
|
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 {
|
func (h *udpHandler) Connect(conn core.UDPConn, target *net.UDPAddr) error {
|
||||||
// Lookup fakeDNS host record
|
// Lookup fakeDNS host record
|
||||||
targetHost, err := lookupHost(h.fakeDns, target)
|
targetHost, err := lookupHost(h.fakeDNS, target)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warnf("lookup target host error: %v", err)
|
log.Warnf("lookup target host error: %v", err)
|
||||||
return err
|
return err
|
||||||
|
@@ -13,7 +13,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// DNS lookup
|
// 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
|
var targetIP net.IP
|
||||||
switch addr := target.(type) {
|
switch addr := target.(type) {
|
||||||
case *net.TCPAddr:
|
case *net.TCPAddr:
|
||||||
@@ -27,8 +27,8 @@ func lookupHost(fakeDns dns.FakeDns, target net.Addr) (targetHost string, err er
|
|||||||
|
|
||||||
targetHost = targetIP.String()
|
targetHost = targetIP.String()
|
||||||
// Replace with a domain name if target address IP is a fake IP
|
// Replace with a domain name if target address IP is a fake IP
|
||||||
if fakeDns != nil {
|
if fakeDNS != nil {
|
||||||
if host, exist := fakeDns.IPToHost(targetIP); exist {
|
if host, exist := fakeDNS.IPToHost(targetIP); exist {
|
||||||
targetHost = host
|
targetHost = host
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -11,4 +11,4 @@ config_route() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
@@ -7,4 +7,4 @@ config_route() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
Reference in New Issue
Block a user