Yesterday, during some portion of the day connections between clients and resources were impossible. While I couldn't pinpoint the exact cause I found some issues with cleanup. This PR fixes those. Furthermore, I increased the default log level for tunnels in the clients so that if this happens again we have better logs to triage. ~~Furthermore, I found out about #2705 so, I removed the limit of relays from connlib since the portal already limits it to 2 (4 if you count per-ip), that way we make sure that we always use both ipv4 and ipv6. The connection start up time seems to slow down due to this but I think this is better. We might want to go to only 2 urls again later on to speed this up, if the portal can ensure it's a working relay load-balanced relay there might not be a point in using more than a single server~~. cc @AndrewDryga Edit: we always get an ipv4 and ipv6 address for the same relay as the first two relays in the relay list, save the case where only one of the ip types is supported. We should be safe limiting it to 2. --------- Signed-off-by: Gabi <gabrielalejandro7@gmail.com> Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
Firezone Apple Client
Firezone clients for macOS and iOS.
Pre-requisites
- Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - Request your Firezone email added to our Apple Developer Account
- Open Xcode, go to Settings -> Account and log in. Click "Download manual profiles" button.
- Install signing keys from 1password "Engineering" vault.
Automatic signing has been disabled because it doesn't easily work with our CI/CD pipeline.
Building
-
Clone this repo:
git clone https://github.com/firezone/firezone -
cdto the Apple clients codecd swift/apple -
Copy an appropriate xcconfig and edit as necessary:
cp Firezone/xcconfig/debug.xcconfig Firezone/xcconfig/config.xcconfig vim Firezone/xcconfig/config.xcconfig -
Open project in Xcode:
open Firezone.xcodeproj
- Build the Firezone target
Debugging
This Network Extension debugging guide is a great resource to use as a starting point.
Debugging on ios simulator
Network Extensions can't be debugged in the iOS simulator, so you'll need a physical iOS device or Mac to debug.
NetworkExtension not loading (macOS)
Try clearing your LaunchAgent db:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -delete
Note: You MUST reboot after doing this!
Outdated version of NetworkExtension loading
If you're making changes to the Network Extension and it doesn't seem to be reflected when you run/debug, it could be that PluginKit is still launching your old NetworkExtension. Try this to remove it:
pluginkit -v -m -D -i <bundle-id>
pluginkit -a <path>
pluginkit -r <path>
Cleaning up
Occasionally you might encounter strange issues where it seems like the artifacts being debugged don't match the code, among other things. In these cases it's good to clean up using one of the methods below.
Resetting Xcode package cache
Removes cached packages, built extensions, etc.
rm -rf ~/Library/Developer/Xcode/DerivedData
Removing build artifacts
To cleanup Swift build objects:
cd swift/apple
./cleanup.sh
To cleanup both Swift and Rust build objects:
cd swift/apple
./cleanup.sh all
Wiping connlib log directory
rm -rf $HOME/Library/Group\ Containers/47R2M6779T.group.dev.firezone.firezone/Library/Caches/logs/connlib