-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Split validation #235
base: master
Are you sure you want to change the base?
Split validation #235
Conversation
@@ -129,7 +129,15 @@ CREATE TEMP FUNCTION OutcomeString(domain_name STRING, | |||
WHEN (SELECT LOGICAL_OR(answer.matches_control.asn) | |||
FROM UNNEST(answers) answer) | |||
THEN "✅answer:matches_asn" | |||
ELSE CONCAT("❓answer:not_validated:", AnswersSignature(answers)) | |||
# TODO: delete, this case is covered by all the cert cases above | |||
WHEN (SELECT LOGICAL_OR(NOT (a.https_response_status IS NULL)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we tell whether we are able to establish a TCP connection to port 443?
I would suggest to create a "{error}:{AS}", and move it to right after matches:ip
. Possible errors: connection_timeout, address_unreachable, network_unreachable, connection_refused.
Example: connection_timeout:TWITTER
or maybe answer:TWITTER:connection_refused
We would still keep the not_validated as an unexpected catch all in that case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW, you can find the syscall error strings from Go at https://cs.opensource.google/go/go/+/master:src/syscall/zerrors_linux_amd64.go
WHEN (SELECT LOGICAL_OR(NOT (a.https_response_status IS NULL)) | ||
FROM UNNEST(answers) a) | ||
THEN CONCAT("❗️answer:unvalidated_https_connection:", AnswersSignature(answers)) | ||
WHEN (SELECT LOGICAL_OR(NOT (a.http_response_status IS NULL)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I also suggest we drop the HTTP test. It makes it harder to reason about the methodology by involving another port and another fetch.
So @fortuna the overall thought here is:
I also looked some into the remaining cases of http blockpages here which makes me think they still have some value |
623b7ee
to
a407948
Compare
I made a sample dashboard that does something like this here I'm not yet convinced that having the errors allows you to make any better analysis decisions, but it's interesting to be able to see. |
This splits
answer:not_validated
intoanswer:unvalidated_http_connection
andanswer:no_tcp_connection
(when we were not able to connect to the answer ip at all.I'd like suggestions about:
not_validated
further is useful, since it's 60% of our unexpected outcomes. But I don't have a full theory of how this new information is actionable.answer:no_tcp_connection
further, by splitting along different types of connection errors? (timeout, no route, etc)dashboard with this data: here
Here's the new outcome breakdown
![image](https://private-user-images.githubusercontent.com/1127209/237406960-c6ce3c5f-4d45-4580-9ac8-0d60ee362650.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0OTgyMjQsIm5iZiI6MTczOTQ5NzkyNCwicGF0aCI6Ii8xMTI3MjA5LzIzNzQwNjk2MC1jNmNlM2M1Zi00ZDQ1LTQ1ODAtOWFjOC0wZDYwZWUzNjI2NTAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTRUMDE1MjA0WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YjI3N2ZlZDU0MDAyZGMxNTZkYmYzMWNhYjFhYTBlNTYxYmVkOGZkNTA1ZDEzYjY4MWZmM2MxODc4MWFhMDE2MyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.xPSKi16jjL1jVa6kiCzZ5m-g6fpamTbVsyKZ06JE4ZU)