Commit Graph

147 Commits

Author SHA1 Message Date
Markus Linnala d14d78e648 fix: xtransport: Check 'fallback_resolver'
And also DefaultFallbackResolver.

As far a I could see, value needs to have port defined
too. dns.Exchange does seem to use address as such.
2019-10-21 18:12:49 +02:00
Markus Linnala 6ba2ff4fdc cleanup: config: rename static config as StaticsConfig
Naming similar as SourcesConfig.
2019-10-20 21:30:24 +02:00
Frank Denis 5c28950578 Bump the default timeout up
Because, yes, some networks have a lot of latency
2019-10-20 19:22:02 +02:00
Frank Denis 320197a00e Accept relay names in routes, improve documentation 2019-10-20 14:19:21 +02:00
Frank Denis 94cf37dacf Do the netprobe even in offline mode
This is likely to be required at least on Windows.
2019-10-18 20:34:26 +02:00
Markus Linnala 0d553a9fa7 cleanup: Drop ExtractPort ExtractHost, use ExtractHostAndPort instead 2019-10-18 20:24:11 +02:00
Markus Linnala 8c6a968e27 change: config: handle NetProbe fatal error and run only if not offline
All errors returned from NetProbe are managed as fatal later.
Decide, connection issues are not fatal but bad configuration is.
Without this configuration errors are silently ignored here.
2019-10-18 20:24:11 +02:00
Markus Linnala 32c387318a cleanup: config: drop duplicate code in showCerts setup 2019-10-18 20:24:11 +02:00
Markus Linnala 5e5d1059d7 change: config: cache_max_expire default value from 8600 to 86400 2019-10-18 20:24:11 +02:00
Frank Denis 322447aa91 Support multiple routes per destination 2019-10-14 12:08:47 +02:00
Frank Denis e9ec2aa801 Log anonymized DNS routes 2019-10-14 11:02:13 +02:00
Frank Denis 0e8ca9009e Implement Anonymized DNS 2019-10-14 01:45:38 +02:00
Frank Denis 6513818cb3 Continue if some (but not all) server entries are invalid
Diff by @alisonatwork -- thanks!

Fixes #949
2019-10-06 09:13:37 +02:00
Frank Denis 776e0d7ccc New feature: query_meta 2019-09-07 16:19:47 +02:00
Frank Denis 208c67b53b Print the version before the netprobe
Fixes #901
2019-09-07 11:30:46 +02:00
James Newell 5812cb2fe4 fold 'refused_code_in_responses' and 'respond_with_ip' options into a new option 'blocked_query_response' 2019-07-17 12:12:28 +02:00
James Newell 87bbfbfc10 add new option: 'respond_with_ip' 2019-07-17 12:12:28 +02:00
Frank Denis 0569c75596 Propagate mainProto to xTransport
Fixes #880
2019-07-10 13:13:28 +02:00
Frank Denis ad05fd6f21 Directly dlog.Fatalf() if an invalid static stamp is given 2019-07-06 18:04:02 +02:00
Frank Denis d2aa521369 Add a command-line option to print the server certificate hashes 2019-06-07 01:23:48 +02:00
Frank Denis a060407db1 Use a different address than 255.255.255.0 for netprobes
Windows doesn't seem to like this address.

Also default to the fallback resolver IP if there is one and
no netprobe_address option in the configuration file.

Fix netprobe_timeout = -1 by the way
2019-06-04 01:37:59 +02:00
Frank Denis 30f2a4fd6b Misc fixes
- Set LBEstimator to true by default
- Shuffle the servers list at startup
- Add the server name to the query log
2019-06-03 16:49:06 +02:00
Frank Denis 9e2a945fff Print the sorted list of latencies
Add an option to disable the load-balancing estimator
2019-06-03 13:04:59 +02:00
Frank Denis a417f0d282 Use 255.255.255.0 as the default netprobe address 2019-06-03 12:22:53 +02:00
Frank Denis 2e89c8da01 Rename LbStrategyFastest to LbStrategyFirst 2019-06-02 13:24:24 +02:00
Frank Denis b22d6dfc96 Send a byte to the netprobe IP only on Windows 2019-05-31 11:15:59 +02:00
Mathias Berchtold cf261da79a Fix netProbe write check
Write at least 1 byte. This ensures that sockets are ready to use for writing.
Windows specific: during the system startup, sockets can be created but the underlying buffers may not be setup yet. If this is the case Write fails with WSAENOBUFS: "An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full
This fixes: https://github.com/jedisct1/dnscrypt-proxy/issues/841
2019-05-31 11:05:22 +02:00
Mathias Berchtold 7c8e20a533 netProbe: Always log Network connectivity detected
In the netProb function, always log whether network connectivity is detected or not.
2019-05-30 22:28:57 +02:00
Frank Denis 578c090890 Send an empty packet to the probe
This seems to be required on Windows.

Also add the ability to wait for up to an hour.
2019-05-28 13:22:11 +02:00
Frank Denis d143ae5279 Set the main protocol to TCP when using a SOCKS proxy 2019-04-14 13:41:43 +02:00
Frank Denis 25ac94e7b2 Revert "Add Stretch-Hash-and-Truncate option for extreme DNS privacy"
This reverts commit 2d1dd7eaab.
2019-04-02 01:57:48 +02:00
Frank Denis 2d1dd7eaab Add Stretch-Hash-and-Truncate option for extreme DNS privacy
This works over DNSCrypt and DoH, but requires a specifically configured
server.

Instead of sending the actual DNS queries, the SH-T system works as follows:

Step 1: the client query is evaluated through Argon2id, a military-grade,
memory-hard, CPU-hard stretching function. This makes it very expensive
for an attacker to find the original query, even using GPUs and ASICs.
For post-quantum resistance, we use it to generate a 1024-bit key.

Step 2: in case the Argon2id algorithm has a vulnerability, or, since this
is a popular function used for hashing passwords and for cryptocurrencices,
and people may have built rainbow tables already, we use a hash function over
the result of the previous function. This immediately defeats rainbow tables.

Step 3: the output of the hash function is truncated to 64-bit.
Due to a property of this operation known as collision-misresistance, and even
if the previous steps fail due to a nation-state actor, it is impossible for a
server operator to prove what exact query was originally sent by a client.

This feature is experimental.
2019-04-01 09:36:56 +02:00
Frank Denis c10fbb2aa7 + disabled_server_names
Fixes #735
2019-02-23 14:54:22 +01:00
Frank Denis a726a40dc5 Add refused_code_in_responses
Fixes #737
2019-02-23 00:58:25 +01:00
Frank Denis c52b3ef124 Bump the netprobe timeout up to 60 seconds 2018-11-22 17:24:41 +01:00
Frank Denis 7174fdc8c8 Do not always override the netprobe_timeout option from config file
Fixes #641
2018-11-16 18:13:39 +01:00
Frank Denis 2e147364e9 Add support for HTTP/HTTPS proxies
Fixes #638
2018-11-15 18:47:33 +01:00
Frank Denis e48779c2eb Make the network timeout configuration via the command line
Fixes #619
2018-11-15 14:24:26 +01:00
Frank Denis 844057d9df Revert "Revert "Remove pledge(2) support""
This reverts commit a24cb0d900.
2018-08-23 00:44:32 +02:00
Frank Denis a24cb0d900 Revert "Remove pledge(2) support"
This reverts commit bc3215a8a6.
2018-08-15 17:56:33 +02:00
Frank Denis bc3215a8a6 Remove pledge(2) support
Fixes #571
2018-08-15 17:53:36 +02:00
Frank Denis dc602512ff Don't call PledgeChild() too early 2018-07-07 21:03:08 +02:00
Frank Denis 09baa3c40b Store the userName value again 2018-07-07 17:58:37 +00:00
Frank Denis 1019428ca0 username -> user_name
in case we want to add user_group and whatnot.

Remove the command-line option as it hides the caveats documented
in the configuration file.

Remove TODO. TODO statements always remain in that state forever.
2018-07-07 17:39:33 +02:00
Frank Denis c73e95256d Implement an offline mode
Fixes #528
2018-07-05 18:05:24 +02:00
Frank Denis 09e39c785a Keep the process running in foreground to avoid a breaking change/allow monitoring
This currently doesn't replace the previous process. Maybe there is a way to achieve
this in Go. Need to look closer at os.exec

Also start-child -> child
2018-06-13 17:24:16 +02:00
Sebastian Schmidt aab7e6380f Drop privileges with exec (#467)
* Drop privileges with exec and SysProcAttr

* Fix windows build

* Fix passing logfile fd
2018-06-13 16:52:41 +02:00
Frank Denis 0166f21b27 Add built-in support for Tor 2018-06-06 15:54:51 +02:00
Frank Denis 33537be040 Use a netprobe address less likely to be blocked/considered invalid 2018-05-19 00:06:28 +02:00
Frank Denis ce62981c44 Wait for network connectivity before starting the proxy 2018-05-10 21:59:25 +02:00