Skip to content
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

Add network troubleshooting guide #16

Merged
merged 8 commits into from
Mar 19, 2020
Merged

Conversation

eloquence
Copy link
Member

@eloquence eloquence commented Feb 14, 2020

Status

Ready for a first round review.

Description

This adds a step-by-step troubleshooting how-to for resolving network issues with SecureDrop Workstation. It starts with the basics (is the Internet working) and goes all the way to restarting Tor, restarting VMs, etc.

The step-by-step format imposes some constraints, but it seems to me most suitable for this guide. Per this good blog post on documentation best practices (thanks to @ninavizz for the link), I've offloaded explanatory content to a separate chapter about architecture.

Screenshots are deliberately omitted for now so we can take those still a little closer to the release date.

@eloquence eloquence force-pushed the network-troubleshooting branch from 30f27c9 to 0ebb6b6 Compare February 14, 2020 07:05
@eloquence eloquence marked this pull request as ready for review February 28, 2020 01:59
@rocodes rocodes self-assigned this Mar 2, 2020
@conorsch conorsch self-requested a review March 11, 2020 16:18
Copy link
Contributor

@conorsch conorsch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great guide! Left some comments throughout, mostly with subjective impressions, with a few suggested edits for clarity. Setting review as a "comment" so as not to block merge, since several of the recommendations may not require an edit. Happy to take another look, just ping for re-review, @eloquence !

1. Click the "Q" icon in the in the system tray (top right area).
2. A list of running VMs should appear. Select ``sys-net`` from the list, and
click **Run Terminal**.
3. In the terminal window, type the command ``ping google.com``.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider using -c 5 in the command to save the trouble of explaining ctrl+c to stop the forever-ping command.

Copy link
Member Author

@eloquence eloquence Mar 13, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@@ -2,3 +2,218 @@ Troubleshooting network issues
==============================
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The document is titled "Troubleshooting network issues", but really it strikes me as a "Troubleshooting connection issues" guide, given that step 1 is debugging network, and step 2 is debugging client-login. Sounds like splitting hairs, but on a full read-through, when I reached the end of "Step 1: Verify you are connected to the internet," it felt like I was done "Troubleshooting network issues", when of course there are additional steps that will almost certainly be relevant to Admins.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, "connection issues" is friendlier and encompasses more, will use that.

Not all VMs in Qubes OS have Internet access. For example, opening the Qubes
menu (top left) and clicking **Terminal Emulator** opens a ``dom0`` terminal
without Internet access. See our :ref:`networking architecture <Networking Architecture>`
overview for additional background.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "important" box is great info, feels a bit too late here, since I've already finished debugging. Consider moving between paragraphs beginning:

  • "Common causes for lost connections" and
  • "If the network manager shows"

Placed there, it's a helpful primer for why I'm using sys-net specifically to debug.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

.. important::

After a failed login, wait for a new two-factor code from your app before
trying again.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

You can reveal the passphrase by clicking the "eye" icon next to it in the login
dialog (ensure you are in a fully private setting before doing so). Check for
extra characters at the beginning at the end, or subtle differences like
capitalization.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider "like capitalization or whitespace". Given that we've been automatically generated diceware passphrases for SD accounts for some time now, perhaps mentioning whitespace is too confusing.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added "Note that the spaces between words in SecureDrop passphrases are part of the passphrase" to make it super explicit.

If you have narrowed down the problem to ``sd-whonix``, try restarting Tor.

To do so, right-click the Tor icons in the top right corner of your Qubes
desktop. They look like this:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It'd be a shame not to reference the GUI icons, but given that we were using the terminal in sd-whonix in Step 4, it might simpler for an Admin to run sudo systemctl restart tor. We can take a closer look once the screenshots are proposed, but on my system, the sd-whonix / sys-whonix combination makes for a very confusing tooltray experience. If I were following the instructions, I might end up bouncing tor in sys-whonix rather than sd-whonix without realizing it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right, it's a massive simplification in this context to just do it on the terminal. If Tor issues are frequent it'd be great to be able to teach journalists how to use the widget, but given the current UX issues with it, we may just want to steer clear for now, also pending a final decision whether we'll continue to use Whonix.

Cross-ref:

4. Right-click ``sd-proxy`` in the list of VMs. Click **Shutdown qube**.
5. Right-click ``sd-whonix`` in the list of VMs. Click **Shutdown qube**.
6. Right-click ``sd-proxy`` in the list of VMs. Click **Start/Resume qube**.
The ``sd-whonix`` VM should start automatically.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Super clear.

By design, the Qubes OS host domain, ``dom0``, also does not have Internet
access.

.. note:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/:/::/, doesn't display as written

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍, good catch :)

connect to the network, which is provided via ``sys-net``. All four VMs must be
running for the client to successfully connect to the server.

.. important:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As above, s/:/::/, doesn't display as written

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


Like all networked VMs, ``sd-whonix`` uses the ``sys-firewall`` service to
connect to the network, which is provided via ``sys-net``. All four VMs must be
running for the client to successfully connect to the server.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: s/client/Client/ for consistency with the rest of the doc.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to SecureDrop Client (client is IMO correct but I don't think we should ever use it as a technical term, only as an application name we can change globally)

1. Click the "Q" icon in the in the system tray (top right area).
2. A list of running VMs should appear. Select ``sys-net`` from the list, and
click **Run Terminal**.
3. In the terminal window, type the command ``ping google.com``.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe ping 8.8.8.8 to avoid DNS gotchas? 🤔

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that's a great additional step we can suggest here, will add.


You can reveal the passphrase by clicking the "eye" icon next to it in the login
dialog (ensure you are in a fully private setting before doing so). Check for
extra characters at the beginning at the end, or subtle differences like
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"at the beginning at the and end"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


Because the SecureDrop Client must connect to the SecureDrop
*Application Server* in order to send or retrieve messages, documents, and
replies, it can communicate through Qubes-internal system calls with another
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider:

"...it can communicate through Qubes' internal Remote Procedure Call (RPC) mechanism with another..."

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@eloquence
Copy link
Member Author

I believe I've addressed this first round of comments, thank you for the thorough review @conorsch and @pierwill. Ready for re-review or another pair of eyes.

Copy link
Contributor

@rocodes rocodes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just one tiny nit (sorry) and I will approve/merge.

to only connect to work servers, and a personal VM that always uses Tor.

In the context of SecureDrop Workstation, these capabilities are used to
minimize the risk that an adversary who is able to exploit a security
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: "minimize the risk of an adversary who [...]" or "minimize the risk that an adversary who [...] can exfiltrate documents"

Copy link
Member Author

@eloquence eloquence Mar 18, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, that was also very inaccessible writing, let me know what you think of the new wording in 3e082f9

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Copy link
Contributor

@rocodes rocodes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM Erik, thanks for your work. Merging [edit: lost merge permissions, investigating]

@rocodes rocodes merged commit cc9db5f into master Mar 19, 2020
@rocodes rocodes deleted the network-troubleshooting branch March 19, 2020 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants