The point that appears to be the problem is the GFW.
No, I'm not guessing at what is going on, I'm guessing at the point where the changes occur.
I run my own DNS servers, hidden unlisted inaccessible master, and 3 slaves that are listed as NS records for the DNS for domains e.g. of course kano.is
The other day, after this started, I changed the kano.is NS records by removing the DNS that was in china - down to 2 NS records (in usa)
The TTL for an NS record on *.is is required to be 86400 (or more)
*.com is typically a lot lower (I always set it a lot lower) but being lower also means an outage can fail DNS resolution more easily if your DNS servers are not reliable (not my problem
)
I've since also added a new DNS server (in germany) and added it to kano.is thus again mean kano.is has 3 NS records
These changes of course have also been done at the domain registrar in Reykjavík as is required for it to actually work.
Now to see what is actually going on I can run some dig commands from inside and outside china and compare them.
i.e. this is actual data, no guesses at what is being done.
I'll just repeat this one command since it's good enough to show it:
dig @104.238.158.242 la6.kano.is
What it does is directly ask my new DNS server what is the address of la6.kano.is
It's 'supposed' to be a direct IP connection to 104.238.158.242 for the answer.
(yes anyone can lookup those values to work out that command)
So from outside the GFW, the correct and consistent answer is:
# dig @104.238.158.242 la6.kano.is
; <<>> DiG 9.16.1-Ubuntu <<>> @104.238.158.242 la6.kano.is
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60263
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 15796e8f400f631f0100000061a2b483af1b5fa2fac05f07 (good)
;; QUESTION SECTION:
;la6.kano.is. IN A
;; ANSWER SECTION:
la6.kano.is. 600 IN A 149.28.75.193
;; Query time: 248 msec
;; SERVER: 104.238.158.242#53(104.238.158.242)
;; WHEN: Sat Nov 27 22:43:15 UTC 2021
;; MSG SIZE rcvd: 84
However, from inside the GFW (Beijing) the answer (which changes every time I run it, I've give: two results) is:
# dig @104.238.158.242 la6.kano.is
; <<>> DiG 9.16.1-Ubuntu <<>> @104.238.158.242 la6.kano.is
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9846
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;la6.kano.is. IN A
;; ANSWER SECTION:
la6.kano.is. 102 IN A 108.160.172.1
;; Query time: 4 msec
;; SERVER: 104.238.158.242#53(104.238.158.242)
;; WHEN: Sat Nov 27 22:45:28 UTC 2021
;; MSG SIZE rcvd: 45
and
# dig @104.238.158.242 la6.kano.is
; <<>> DiG 9.16.1-Ubuntu <<>> @104.238.158.242 la6.kano.is
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23882
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;la6.kano.is. IN A
;; ANSWER SECTION:
la6.kano.is. 248 IN A 128.242.240.29
;; Query time: 8 msec
;; SERVER: 104.238.158.242#53(104.238.158.242)
;; WHEN: Sat Nov 27 22:46:17 UTC 2021
;; MSG SIZE rcvd: 45
Now you can see firstly that the answers are wrong but state that they are from the correct DNS IP
The answers are clearly random, those two answers are Dropbox CA and NTT America, Inc. CO
i.e. it appears that either the GFW or Aliyun or both are randomly screwing with DNS requests.
However, when I lookup some of my other domains, the answers are correct.
So it appears to be directed at mining/bitcoin DNS lookups.
(e.g. it happens looking up bitcointalk.org as a straight dig and no server specified)