ProtonVPN / ios-mac-app

Official ProtonVPN iOS and macOS app
GNU General Public License v3.0
316 stars 76 forks source link

Kill Switch blocks Gradle sync because of localhost use #8

Open aormsby opened 1 year ago

aormsby commented 1 year ago

I think the Kill Switch is be blocking localhost connections on my Mac, and I'm not sure it should be. I've come for some advice about it. I'm not too well-versed in managing networks, so please bear with me as I ask.

I'm an Android developer using Android Studio and Gradle build tools. I often need to run the gradle sync command to pull code dependencies. (I know Xcode uses different build tools, but your Android team will know what I'm referring to if it's necessary.)

With Kill Switch off, the gradle sync completes normally. With Kill Switch on, it immediately fails. (log below)

(It might be worth noting that I always have Allow LAN Connections disabled.)

Gradle runs a daemon on localhost to help with its processes, and what I think I've figured out is that the connection to that daemon is blocked by the Kill Switch. But this is just a process running on my local machine. Is this expected? I'm not making any outside connections to other devices so it seems weird to me that localhost is having issues, but again - I'm not a network expert.

**EXPAND FOR LOG OUTPUT** ``` Starting a Gradle Daemon, 15 stopped Daemons could not be reused, use --status for details FAILURE: Build failed with an exception. * What went wrong: Could not connect to the Gradle daemon. Daemon uid: dfa58bf1-9dc8-41b2-9e05-1d3c2b6487ac with diagnostics: Daemon pid: 47724 log file: /Users/[username]/.gradle/daemon/7.5.1/daemon-47724.out.log ----- Last 20 lines from daemon log file - daemon-47724.out.log ----- 2022-09-26T21:26:25.088-0500 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? false 2022-09-26T21:26:25.088-0500 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /192.168.0.4 2022-09-26T21:26:25.089-0500 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface lo0 2022-09-26T21:26:25.089-0500 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? true 2022-09-26T21:26:25.089-0500 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Ignoring remote address on loopback interface /fe80:0:0:0:0:0:0:1%lo0 2022-09-26T21:26:25.089-0500 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding loopback address /0:0:0:0:0:0:0:1%lo0 2022-09-26T21:26:25.089-0500 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding loopback address /127.0.0.1 2022-09-26T21:26:25.091-0500 [DEBUG] [org.gradle.internal.remote.internal.inet.TcpIncomingConnector] Listening on [77f01216-b83a-4c7f-8b6f-90a4be42dfe6 port:51410, addresses:[localhost/127.0.0.1]]. 2022-09-26T21:26:25.094-0500 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] Daemon starting at: Mon Sep 26 21:26:25 CDT 2022, with address: [77f01216-b83a-4c7f-8b6f-90a4be42dfe6 port:51410, addresses:[localhost/127.0.0.1]] 2022-09-26T21:26:25.094-0500 [INFO] [org.gradle.launcher.daemon.server.DaemonRegistryUpdater] Advertising the daemon address to the clients: [77f01216-b83a-4c7f-8b6f-90a4be42dfe6 port:51410, addresses:[localhost/127.0.0.1]] 2022-09-26T21:26:25.095-0500 [DEBUG] [org.gradle.launcher.daemon.server.DaemonRegistryUpdater] Advertised daemon context: DefaultDaemonContext[uid=dfa58bf1-9dc8-41b2-9e05-1d3c2b6487ac,javaHome=/Library/Java/JavaVirtualMachines/temurin-18.jdk/Contents/Home,daemonRegistryDir=/Users/[username]/.gradle/daemon,pid=47724,idleTimeout=10800000,priority=NORMAL,daemonOpts=--add-opens,java.base/java.util=ALL-UNNAMED,--add-opens,java.base/java.lang=ALL-UNNAMED,--add-opens,java.base/java.lang.invoke=ALL-UNNAMED,--add-opens,java.base/java.util=ALL-UNNAMED,--add-opens,java.prefs/java.util.prefs=ALL-UNNAMED,--add-opens,java.prefs/java.util.prefs=ALL-UNNAMED,--add-opens,java.base/java.nio.charset=ALL-UNNAMED,--add-opens,java.base/java.net=ALL-UNNAMED,--add-opens,java.base/java.util.concurrent.atomic=ALL-UNNAMED,-Xmx2048m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant] 2022-09-26T21:26:25.095-0500 [DEBUG] [org.gradle.launcher.daemon.registry.PersistentDaemonRegistry] Storing daemon address: [77f01216-b83a-4c7f-8b6f-90a4be42dfe6 port:51410, addresses:[localhost/127.0.0.1]], context: DefaultDaemonContext[uid=dfa58bf1-9dc8-41b2-9e05-1d3c2b6487ac,javaHome=/Library/Java/JavaVirtualMachines/temurin-18.jdk/Contents/Home,daemonRegistryDir=/Users/[username]/.gradle/daemon,pid=47724,idleTimeout=10800000,priority=NORMAL,daemonOpts=--add-opens,java.base/java.util=ALL-UNNAMED,--add-opens,java.base/java.lang=ALL-UNNAMED,--add-opens,java.base/java.lang.invoke=ALL-UNNAMED,--add-opens,java.base/java.util=ALL-UNNAMED,--add-opens,java.prefs/java.util.prefs=ALL-UNNAMED,--add-opens,java.prefs/java.util.prefs=ALL-UNNAMED,--add-opens,java.base/java.nio.charset=ALL-UNNAMED,--add-opens,java.base/java.net=ALL-UNNAMED,--add-opens,java.base/java.util.concurrent.atomic=ALL-UNNAMED,-Xmx2048m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant] 2022-09-26T21:26:25.100-0500 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire exclusive lock on daemon addresses registry. 2022-09-26T21:26:25.101-0500 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry. 2022-09-26T21:26:25.103-0500 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry. 2022-09-26T21:26:25.103-0500 [LIFECYCLE] [org.gradle.launcher.daemon.server.Daemon] Daemon server started. 2022-09-26T21:26:25.104-0500 [DEBUG] [org.gradle.launcher.daemon.bootstrap.DaemonStartupCommunication] Completed writing the daemon greeting. Closing streams... 2022-09-26T21:26:25.106-0500 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] stopOnExpiration() called on daemon 2022-09-26T21:26:25.106-0500 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] awaitExpiration() called on daemon 2022-09-26T21:26:25.106-0500 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] daemon is running. Sleeping until state changes. ----- End of the daemon log ----- ```

I guess I'd like to know if there's any way to make this sync work with Kill Switch enabled, or if it's even supposed to be working already. I've looked into proxying (though I barely know what's up there), and I saw that for Windows and Android (ironically), split tunneling is supported that I could maybe use, except it's not supported on Mac. Not sure.

Worst case, maybe I just disable Kill Switch? But I like the idea of no leaks, and I don't have this issue on other VPNs. But like... I like Proton, so I'm interested in figuring this out.

tejas-n commented 9 months ago

I am facing the same issue, any updates on this?