MultiOBX

Protection

How the protection works

What is closed, what makes it hold, and what MultiOBX cannot do.

The main rule

With the firewall on, until you press "Disconnect", packets leave the computer in only two ways: inside the tunnel or to the address of our server.

The firewall is a setting, and it is off by default. That is deliberate: until you know the program, a mistake of ours should not leave you without a network. Turn it on in the app: Settings, Protection, "Firewall". While it is off, a dropped tunnel means traffic goes out directly, and the app says so with a red mark on the main screen.

With the firewall on, this is the order in which the service acts. First the rules "close everything except the server address" are set. Then the network adapter is created. Then the service waits for the handshake. Then it configures DNS. Only after that does it allow traffic through the adapter. Between the first and the last step nothing leaves the machine.

If the tunnel drops, the internet goes away until it reconnects. That is by design. The alternative, letting traffic go direct on failure, would mean that at the moment of failure you are unprotected and unaware of it.

States

The column describes the service with the firewall on. While it is off, traffic outside the tunnel is not closed in any state.

StateTraffic outside the tunnel (firewall on)
Disconnectedallowed (or closed if "lock" is on)
Connectingclosed
Protectedclosed, all traffic goes into the tunnel
Disconnectingclosed
Errorclosed

From any closed state there is one way to an open one: the "Disconnect" button. A failure, a lost server or a tunnel restart do not open the network.

DNS

The "Local network" permission opens access to the home router. A DNS query to it leaves the machine legitimately, the router forwards it to the ISP, and the ISP ends up with the list of sites you visited. That is why all traffic to port 53 is handled in a separate layer of rules where only the tunnel resolver and the local address 127.0.0.1 are allowed.

Keys

The WireGuard key pair is generated on the device. Only the public half goes to the server. The sign-in key is 24 characters, about 114 bits. The server stores an HMAC of it, not the key itself. Without the secret file the database is useless, and the key cannot be recovered from it.

What MultiOBX cannot do

Hyper-V and WSL
Hyper-V virtual machines have their own network stack, and Windows rules do not extend to it. Traffic from WSL may bypass the tunnel.
The first seconds after boot
Until the service has started, there are no rules. Persistent rules that apply from system boot are not implemented yet.
A crash of the service
If the service process crashes, Windows removes its rules and the network opens. This is a deliberate trade-off. Otherwise a computer would be left without network after a crash with no way to fix it.
Android
Even with the system setting that forbids connections without a tunnel, Android lets connectivity checks, network time and traffic to hotspot clients bypass it. This applies to every app.
iOS
The "all traffic" mode brings the behaviour close to the desktop, but system exceptions exist there too. With it on, AirDrop and some Apple services stop working.
Anonymity
MultiOBX hides from your ISP where you go, and from the site your address. It does not make you anonymous: signing in to a personal account through the tunnel identifies you more precisely than any IP address.

How to check

The "Diagnostics" section in the app shows the current state: whether the service has the rights to set rules, how many rules are in place and which ones, which DNS is in use, and when the last handshake happened. From the command line, multiobx doctor gives the same.

The list of rules, using Windows itself:

netsh wfp show filters file=filters.xml

Our rules are labelled with the provider "MultiOBX VPN". The file opens in any text editor.