Cuong Manh Le and Cuong Manh Le
cebfd12d5c
internal/clientinfo: ensure RFC1918 address is chosen over others
2023-12-07 00:04:17 +07:00
Cuong Manh Le and Cuong Manh Le
874ff01ab8
cmd/cli: ensure log time field is formated with ms
2023-12-06 22:31:35 +07:00
Alex Paguis and Cuong Manh Le
0bb8703f78
Update document for new client_id_preference param
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
0bb51aa71d
cmd/cli: add loop guard for LAN/PTR queries
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
af2c1c87e0
cmd/cli: improve logging for new LAN/PTR flow
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
8939debbc0
cmd/cli: do not send test query to external upstreams
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
7591a0ccc6
all: add client id preference config param
...
So client can chose how client id is generated.
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
c3ff8182af
all: ignoring local interfaces RFC1918 IP for private resolver
...
Otherwises, the discovery may make a looping with new PTR query flow.
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
5897c174d3
all: fix LAN hostname checking condition
...
The LAN hostname in question is FQDN, "." suffix must be trimmed before
checking.
While at it, also add tests for LAN/PTR query checking functions.
2023-12-06 15:33:05 +07:00
Cuong Manh Le and Cuong Manh Le
f9a3f4c045
Implement new flow for LAN and private PTR resolution
...
- Use client info table.
- If no sufficient data, use gateway/os/defined local upstreams.
- If no data is returned, use remote upstream
2023-11-30 18:28:51 +07:00
Cuong Manh Le and Cuong Manh Le
a2cb895cdc
cmd/cli: watch changes to /etc/resolv.conf
...
On some routers, change to network may trigger re-rendering
/etc/resolv.conf file, causing requests from router itself stop using
ctrld.
Fixing this by watching changes to /etc/resolv.conf, then revert them.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
2bebe93e47
internal/router: do not disable cache on EdgeOS
...
The dnsmasq cache-size setting on EdgeOS could be re-generated anytime
by vyatta router/dhcp components. This conflicts with setting generated
by ctrld, causing dnsmasq fails to start.
It's better to keep dnsmasq cache enabled on EdgeOS, we can turn it off
again once we find a reliable way to control cache-size setting.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
28ec1869fc
internal/router/merlin: hardening pre-run condition
...
The postconf script added by ctrld requires all of these conditions to
work correctly:
- /proc, /tmp were mounted.
- dnsmasq is running.
Currently, ctrld is only waiting for NTP ready, which may not ensure
both of those conditions are true. Explicitly checking those conditions
is a safer approach.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
17f6d7a77b
cmd/cli: notice writing default config in local mode
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
9e6e647ff8
Use discover_ptr_endpoints for PTR resolver
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
a2116e5eb5
cmd/cli: do not substitute MAC if empty
...
Using IPv4 as hostname is enough to distinguish clients.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
564c9ef712
cmd/cli: use IP as hostname for ipv4 clients only
...
For Android devices, when it joins the network, it uses ctrld to resolve
its private DNS once and never reaches ctrld again. For each time, it uses
a different IPv6 address, which causes hundreds/thousands different client
IDs created for the same device, which is pointless.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
856abb71b7
cmd/cli: only notice reading config with "ctrld start"
...
While at it, also updating the documentation of related functions.
2023-11-27 22:19:16 +07:00
Cuong Manh Le and Cuong Manh Le
0a30fdea69
Add listener policy to default generated config
...
So technical user can figure thing out based on self-documented
commands, without referring to actual documentation.
2023-11-16 20:59:31 +07:00
Cuong Manh Le and Cuong Manh Le
4f125cf107
cmd/cli: notice users where config file is written/read
2023-11-16 20:59:12 +07:00
Cuong Manh Le and Cuong Manh Le
494d8be777
cmd/cli: skip router setup with "ctrld service start"
...
Either do magic stuff and make things work automatically (normal users),
or don't do any of it and just run ctrld as a service (power users).
2023-11-16 20:58:41 +07:00
Cuong Manh Le and Cuong Manh Le
cd9c750884
cmd/cli: do not run pre run on reload
2023-11-16 20:58:26 +07:00
Cuong Manh Le and Cuong Manh Le
91d319804b
cmd/cli: only use failover rcodes if defined
2023-11-16 20:58:10 +07:00
Cuong Manh Le and Cuong Manh Le
180eae60f2
all: allowing config defined discover ptr endpoints
...
The default gateway is usually the DNS server in normal home network
setup for most users. However, there's case that it is not, causing
discover ptr failed.
This commit add discover_ptr_endpoints config parameter, so users can
define what DNS nameservers will be used.
2023-11-16 20:57:52 +07:00
Cuong Manh Le and Cuong Manh Le
d01f5c2777
cmd/cli: do not stop listener when reloading
...
We could not do a reload if the listener config changes, so do not turn
them off to try updating new listener config.
2023-11-16 20:56:57 +07:00
Cuong Manh Le and Cuong Manh Le
294a90a807
internal/router/openwrt: ensure dnsmasq cache is disabled
...
Users may have their own dnsmasq cache set via LUCI web, thus ctrld
needs to delete the cache-size setting to ensure its dnsmasq config
works.
2023-11-16 20:56:42 +07:00
Ginder Singh and Cuong Manh Le
c3b4ae9c79
Older android missing certificate
2023-11-16 20:56:24 +07:00
Cuong Manh Le and Cuong Manh Le
09188bedf7
cmd/cli: fix wrong generated config for nextdns resolver
...
Generating nextdns config must happen after stopping current ctrld
process. Otherwise, config processing may pick wrong IP+Port.
While at it, also making logging better when updating listener config:
- Change warn to info, prevent confusing that "something is wrong".
- Do not emit info when generating working default config, which may
cause duplicated messages printed.
2023-11-16 20:55:39 +07:00
Cuong Manh Le and Cuong Manh Le
4614b98e94
internal/clientinfo: emit error once if ptr discovery failed
...
So it won't spam ctrld log unnecessary, prevent confusion. While at it,
also change the log level from Warn to Info, since this error is not
actionable by the user.
2023-11-09 00:30:56 +07:00
Cuong Manh Le and Cuong Manh Le
990bc620f7
cmd/cli: strip EDNS0_SUBNET for RFC 1918 and loopback address
...
Since passing them to upstream is pointless, these cannot be used by
anything on the WAN.
2023-11-09 00:23:38 +07:00
Cuong Manh Le and Cuong Manh Le
efb5a92571
Using time interval for probing ipv6
...
A backoff with small max time will flood requests to Control D server,
causing false positive for abuse mitiation system. While a big max time
will cause ctrld not realize network change as fast as possible.
While at it, also sync DoH3 code with DoH code, ensuring no others place
can trigger requests flooding for ipv6 probing.
2023-11-08 23:51:18 +07:00
Cuong Manh Le and Cuong Manh Le
8e0a96a44c
Fix panic dues to quic-go changes
...
quic.DialEarly requires separate UDP connection for each
quic.EarlyConnection instead of re-using the same one.
2023-11-08 23:51:18 +07:00
Cuong Manh Le and Cuong Manh Le
43ff2f648c
internal/router/dnsmasq: disable cache
...
So multiple upstreams config could work properly.
2023-11-08 23:51:18 +07:00
Cuong Manh Le and Cuong Manh Le
4816a09e3a
all: use private resolver for private IP address
...
These queries could not be resolved by Control D upstreams, so it's
useless and less performance to send them to servers.
2023-11-08 23:51:18 +07:00
Cuong Manh Le and Cuong Manh Le
3fea92c8b1
Bump golang.org/x/net to v0.17.0
2023-11-08 23:51:08 +07:00
Cuong Manh Le and Cuong Manh Le
63f959c951
all: spoof loopback ranges in client info
...
Sending them are useless, so using RFC1918 address instead.
2023-11-06 20:01:57 +07:00
Cuong Manh Le and Cuong Manh Le
44ba6aadd9
internal/clientinfo: do not complain about net.ErrClosed
...
The probeLoop may have closed the connection before readLoop return, and
we don't care about this error. So prevent it from annoying the log.
2023-11-06 20:01:42 +07:00
Cuong Manh Le and Cuong Manh Le
d88cf52b4e
cmd/cli: always rebootstrap when check upstream
...
Otherwise, network changes may not be seen on some platforms, causing
ctrld failed to recover and failing all requests.
While at it, also doing the check DNS in separate goroutine, prevent it
from blocking ctrld from notifying others that it "started". The issue
was seen when ctrld is configured as direct listener, requests are
flooded before ctrld started, causing the healtch process failed.
2023-11-06 20:01:25 +07:00
Cuong Manh Le and Cuong Manh Le
58a00ea24a
all: implement reload command
...
This commit adds reload command to ctrld for re-fetch new config from
ContorlD API or re-read the current config on disk.
2023-11-06 20:01:03 +07:00
Cuong Manh Le and Cuong Manh Le
712b23a4bb
cmd/cli: initialize upstream proto for mobile
2023-11-06 20:00:28 +07:00
Cuong Manh Le and Cuong Manh Le
baf836557c
cmd/cli: fix wrong checking condition in removeProvTokenFromArgs
...
The provision token is only used once, then do not have any effect after
Control D uid is fetched. So making it appears in "ctrld run" command is
useless.
2023-11-06 20:00:10 +07:00
Cuong Manh Le and Cuong Manh Le
904b23eeac
cmd/cli: add --proto flag to set upstream type in cd mode
2023-11-06 19:59:52 +07:00
Cuong Manh Le and Cuong Manh Le
6aafe445f5
cmd/cli: add nextdns mode
...
Adding --nextdns flag to "ctrld start" command for generating ctrld
config with nextdns resolver id, then use nextdns as an upstream.
2023-11-06 19:59:31 +07:00
Ginder Singh and Cuong Manh Le
ebd516855b
added safe return if error happens during resolver fetch.
2023-11-06 19:58:53 +07:00
Cuong Manh Le and Cuong Manh Le
df4e04719e
cmd/cli: relax service dependency on systemd-networkd-wait-online
...
ctrld wants systemd-networkd-wait-online starts before starting itself,
but ctrld should not be blocked waiting for it started.
2023-11-06 19:58:32 +07:00
Cuong Manh Le and Cuong Manh Le
2440d922c6
all: add MAC address base policy
...
While at it, also update the config doc to clarify the order of matching
preference, and the matter of rules order within each policy.
2023-11-06 19:57:50 +07:00
Yegor S and GitHub
f1b8d1c4ad
Merge pull request #93 from Control-D-Inc/release-branch-v1.3.1
...
Release branch v1.3.1
v1.3.1
2023-10-10 22:29:43 -04:00
Cuong Manh Le and Cuong Manh Le
79076bda35
scripts: fix wrong package path
2023-10-10 22:04:59 +07:00
Cuong Manh Le and Cuong Manh Le
9d2ea15346
internal/clientinfo: ignoring localhost entry for hostsfile mapping
...
Otherwise, actual hostname will be overriden with "localhost", which is
rather confusing/bad for UX.
2023-10-10 22:04:59 +07:00
Cuong Manh Le and Cuong Manh Le
77c1113ff7
Excluding nameservers from /etc/resolv.conf for private resolver
...
Since these ones are either ctrld itself or direct listener that ctrld
is being upstream for, which makes health check query always succeed.
2023-10-06 08:57:47 +07:00