You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -10,42 +11,48 @@ Dealdoh is a simple DNS over HTTPS proxy to deal with DOH built with PHP.
10
11
11
12
Dealdoh go a little beyond what a simple proxy should do:
12
13
13
-
-[x]Can use multiple upstreams
14
-
-[x]Can use different DNS protocol: standard udp/tcp, DoH
15
-
-[x] Attempt to provide a DNS abstraction layer (from https://tools.ietf.org/html/rfc1035) to allow development on top of it and customization
14
+
-[x]It can use multiple upstreams at once and provide a fallback mechanism.
15
+
-[x]It can use different DNS protocol: RFC-1035 (TCP/UDP), RFC-8484 (DoH)
16
+
-[x] Attempt to provide a DNS abstraction layer to allow easy development on top of it.
16
17
17
18
## Roadmap
18
19
19
-
-[ ]Add full unit test coverage
20
-
-[ ]Improve current DNS clients
21
-
-[ ] Ability to choose a DNS upstream strategy
22
-
-[ ] Dockerized app
20
+
-[ ]Improve the current DNS clients
21
+
-[ ]Add Google DOH API client (https://developers.google.com/speed/public-dns/docs/dns-over-https)
22
+
-[ ] Ability to choose a DNS upstream fallback/selection strategy
23
+
-[ ] Dockerized application
23
24
-[ ] Good documentation
24
25
25
26
## Why Dealdoh?
26
27
27
-
Dealdoh was created for development purpose: I wanted to reach my Docker containers from the browser by their hostnames.
28
-
But let's give some context:
28
+
Dealdoh was created for development purpose. I wanted to reach my Docker containers from the browser by their hostnames.
29
+
So I started to use a [Docker image who discover services and register their hostname into a DNS](https://github.com/mageddo/dns-proxy-server) exposed on port 53.
30
+
But I encountered the following issues:
29
31
- I could not change the /etc/hosts file
30
-
- I could not change the DNS for the machine
31
-
- My Docker container domain names were well registered in a custom DNS docker container (thanks to: https://github.com/mageddo/dns-proxy-server)
32
-
So, I ended up with the following solution: use the DOH client from Mozilla Firefox and proxy every DNS query to Dealdoh.
33
-
32
+
- I could not change the DNS for my computer (restrictions issue)
33
+
34
+
I ended up with the following solution: use the DoH client from Firefox and proxy every DNS query to a DoH proxy: Dealdoh.
34
35
35
36
## Getting started
36
37
38
+
### Requirements
39
+
40
+
- A web server
41
+
- HTTPS enabled (self-signed certificates can do depending on the DOH client)
42
+
37
43
### Installation
38
44
39
-
- Install dependencies
40
-
`composer require noglitchyo/dealdoh`
45
+
-`composer require noglitchyo/dealdoh`
41
46
42
-
- You need a PSR-7 ServerRequest if you wish to directly use the `HttpProxy::forward()` method. Please check some cool implementations below:
47
+
- You need a PSR-7 ServerRequest if you wish to directly use the `HttpProxy::forward()` method.
(Tips: pass the --insecure option to doh-client if you are using self-signed certificates **#notDocumented**)
101
+
Please, check [how to use the client](https://github.com/facebookexperimental/doh-proxy#doh-client).
102
+
103
+
* Using your client browser
104
+
105
+
Firefox provides a [Trusted Recursive Resolver](https://wiki.mozilla.org/Trusted_Recursive_Resolver) who can be configured to query DoH servers.
106
+
I advise you to read [this really good article from Daniel Stenberg](https://daniel.haxx.se/blog/2018/06/03/inside-firefoxs-doh-engine/) which will give you lot of details about this TRR and how to configure lik a pro.
80
107
81
108
## License
82
109
83
110
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
84
111
85
112
## Acknowledgments
86
113
87
-
* Thanks to https://github.com/reactphp/dns for their really good DNS wire format codec
88
-
* Thanks to https://github.com/mageddo/dns-proxy-server for its amazing container hostname discovery & DNS image
89
-
* Thanks to https://github.com/facebookexperimental/doh-proxy, because their doh-client rocks!
114
+
*https://github.com/reactphp/dns for their really good DNS wire format codec.
115
+
*https://github.com/mageddo/dns-proxy-server for its amazing container hostname discovery & DNS Docker image.
116
+
Combined with Dealdoh it is amazing.
117
+
*https://github.com/facebookexperimental/doh-proxy, because their doh-client rocks!
0 commit comments