Update Changelog v2.0.0
Update Changelog

--- a/Changelog.md
+++ b/Changelog.md
@@ -3,6 +3,13 @@
 This Changelog records major changes between versions.
 
 Not all changes are recorded. Please check git log for details.
+
+## Version 2.0.0
+
+**This is a breaking change!** Please update the configuration file after upgrading.
+
+- Implemented two upstream server selector algorithms: `weighted_round_robin` and `lvs_weighted_round_robin`.
+- Add a configuration option for doh-server: `log_guessed_client_ip`.
 
 ## Version 1.4.2
 

--- a/doh-client/doh-client.conf
+++ b/doh-client/doh-client.conf
@@ -8,12 +8,6 @@
 
 # HTTP path for upstream resolver
 
-# CloudFlare's resolver for Tor, available only with Tor
-# Remember to disable ECS below when using Tor!
-# Blog: https://blog.cloudflare.com/welcome-hidden-resolver/
-#"https://dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion/dns-query",
-
-
 [upstream]
 
 # available selector: random or weighted_round_robin or lvs_weighted_round_robin
@@ -21,35 +15,42 @@
 
 # weight should in (0, 100], if upstream_selector is random, weight will be ignored
 
-# Google's productive resolver, good ECS, bad DNSSEC
-[[upstream.upstream_google]]
-    url = "https://dns.google.com/resolve"
-    weight = 50
+## Google's productive resolver, good ECS, bad DNSSEC
+#[[upstream.upstream_google]]
+#    url = "https://dns.google.com/resolve"
+#    weight = 50
 
-# CloudFlare's resolver, bad ECS, good DNSSEC
-[[upstream.upstream_google]]
-    url = "https://cloudflare-dns.com/dns-query"
-    weight = 50
+## CloudFlare's resolver, bad ECS, good DNSSEC
+#[[upstream.upstream_google]]
+#    url = "https://cloudflare-dns.com/dns-query"
+#    weight = 50
 
-# CloudFlare's resolver, bad ECS, good DNSSEC
-[[upstream.upstream_google]]
-    url = "https://1.1.1.1/dns-query"
-    weight = 50
-
-# Google's experimental resolver, good ECS, good DNSSEC
-[[upstream.upstream_ietf]]
-    url = "https://dns.google.com/experimental"
-    weight = 50
+## CloudFlare's resolver, bad ECS, good DNSSEC
+#[[upstream.upstream_google]]
+#    url = "https://1.1.1.1/dns-query"
+#    weight = 50
 
 # CloudFlare's resolver, bad ECS, good DNSSEC
 [[upstream.upstream_ietf]]
     url = "https://cloudflare-dns.com/dns-query"
     weight = 50
 
-# CloudFlare's resolver, bad ECS, good DNSSEC
-[[upstream.upstream_ietf]]
-    url = "https://1.1.1.1/dns-query"
-    weight = 50
+## CloudFlare's resolver, bad ECS, good DNSSEC
+#[[upstream.upstream_ietf]]
+#    url = "https://1.1.1.1/dns-query"
+#    weight = 50
+
+## Google's experimental resolver, good ECS, good DNSSEC
+#[[upstream.upstream_ietf]]
+#    url = "https://dns.google.com/experimental"
+#    weight = 50
+
+## CloudFlare's resolver for Tor, available only with Tor
+## Remember to disable ECS below when using Tor!
+## Blog: https://blog.cloudflare.com/welcome-hidden-resolver/
+#[[upstream.upstream_ietf]]
+#    url = "https://dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion/dns-query"
+#    weight = 50
 
 
 [others]

file:a/go.mod -> file:b/go.mod
--- a/go.mod
+++ b/go.mod
@@ -5,11 +5,10 @@
 require (
 	github.com/BurntSushi/toml v0.3.1
 	github.com/gorilla/handlers v1.4.0
-	github.com/miekg/dns v1.1.4
-	golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 // indirect
-	golang.org/x/net v0.0.0-20190301231341-16b79f2e4e95
+	github.com/miekg/dns v1.1.6
+	golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a // indirect
+	golang.org/x/net v0.0.0-20190311183353-d8887717615a
 	golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6 // indirect
-	golang.org/x/sys v0.0.0-20190308023053-584f3b12f43e // indirect
-	golang.org/x/text v0.3.0 // indirect
+	golang.org/x/sys v0.0.0-20190312061237-fead79001313 // indirect
 )
 

file:a/go.sum -> file:b/go.sum
--- a/go.sum
+++ b/go.sum
@@ -4,15 +4,23 @@
 github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
 github.com/miekg/dns v1.1.4 h1:rCMZsU2ScVSYcAsOXgmC6+AKOK+6pmQTOcw03nfwYV0=
 github.com/miekg/dns v1.1.4/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
+github.com/miekg/dns v1.1.6 h1:jVwb4GDwD65q/gtItR/lIZHjNH93QfeGxZUkzJcW9mc=
+github.com/miekg/dns v1.1.6/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a h1:YX8ljsm6wXlHZO+aRz9Exqr0evNhKRNe5K/gi+zKh4U=
+golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/net v0.0.0-20190301231341-16b79f2e4e95 h1:fY7Dsw114eJN4boqzVSbpVHO6rTdhq6/GnXeu+PKnzU=
 golang.org/x/net v0.0.0-20190301231341-16b79f2e4e95/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6 h1:bjcUS9ztw9kFmmIxJInhon/0Is3p+EHBKNgquIzo1OI=
 golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190308023053-584f3b12f43e h1:K7CV15oJ823+HLXQ+M7MSMrUg8LjfqY7O3naO+8Pp/I=
 golang.org/x/sys v0.0.0-20190308023053-584f3b12f43e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190312061237-fead79001313 h1:pczuHS43Cp2ktBEEmLwScxgjWsBSzdaQiKzUyf3DTTc=
+golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=