A cross-platform Flutter application to easily change your DNS settings on Android, iOS, Windows, and Linux. Enhance your privacy and security by using trusted public DNS providers like Cloudflare, Google, AdGuard, and more.
- Cross-Platform Support: Runs on Android, iOS, Windows, and Linux.
- Adaptive UI: Automatically switches between Material Design (Android/Desktop) and Cupertino (iOS) for a native feel.
- No Root Required (Android): Works on non-rooted devices by guiding users to system settings (Android 9+). Supports direct changes on rooted devices.
- Secure DNS: Supports DNS-over-HTTPS (DoH) and DNS-over-TLS (DoT) where applicable.
- State Management: Built with
flutter_riverpodfor robust and testable state management. - Extensible: Easily add custom DNS providers.
- Flutter SDK (3.10.0 or later)
- Dart SDK
- Platform-specific development tools (Android Studio, Xcode, Visual Studio, etc.)
-
Clone the repository:
git clone https://github.com/Erengun/jetlag_dns_manager.git cd jetlag_dns_manager -
Install dependencies:
flutter pub get
-
Run the code generator (for Riverpod):
dart run build_runner build --delete-conflicting-outputs
- Non-Rooted: The app uses a
MethodChannelto open the Android Private DNS settings. No special permissions required. - Rooted: Requires root access to execute
sucommands for direct DNS setting.
- Entitlements: This app requires the Network Extension entitlement (
com.apple.developer.networking.networkextension) to manage DNS settings programmatically. - Provisioning: You must have a paid Apple Developer account to use this entitlement.
- Configuration: The
NEDNSSettingsManageris implemented inAppDelegate.swift.
- Permissions: The app executes PowerShell scripts to change DNS settings. This triggers a UAC prompt for Administrator privileges when connecting.
- Dependencies: Relies on
resolvectl(part ofsystemd-resolved). Ensure your distribution usessystemd-resolved.
This project is licensed under the MIT License - see the LICENSE file for details.