367 lines
No EOL
14 KiB
Markdown
367 lines
No EOL
14 KiB
Markdown
# AFWall+ (Android Firewall+)
|
|
|
|
[](https://github.com/ukanth/afwall/actions) [](https://crowdin.net/project/afwall)    
|
|
|
|
> **Your Privacy, Your Control** - AFWall+ gives you complete control over which apps can access the internet on your Android device.
|
|
|
|
---
|
|
|
|
## 💝 Support AFWall+ Development
|
|
|
|
AFWall+ is developed and maintained by volunteers in their free time. If you find it useful, consider supporting the project:
|
|
|
|
### 💰 **Making Donations**
|
|
|
|
**Why Donate?** AFWall+ is completely free and open-source. Your donations help:
|
|
- 🔧 **Continue development** - Fund new features and maintenance
|
|
- 🐛 **Bug fixes and testing** - Keep the app stable and secure
|
|
- 📱 **Device compatibility** - Support more Android versions and devices
|
|
- 🌍 **Community support** - Help users and maintain documentation
|
|
|
|
**Donation Options:**
|
|
- **PayPal**: [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6E4VZTULRB8GU)
|
|
- **Google Play**: Purchase the [unlocker key](https://play.google.com/store/apps/details?id=dev.ukanth.ufirewall.donate) for additional features
|
|
- **Amazon Gift Cards**: `cumakt+amazon@gmail.com`
|
|
- **Bitcoin**: `bc1q54nf3y9zmdcpasxx9sywkprd6309rfhav3mape`
|
|
- **Ethereum**: `0x5e65649C2B26eD816fCeD25a8E507C90D4b1D697`
|
|
|
|
### 🌟 **Other Ways to Help**
|
|
- ⭐ Star this repository
|
|
- 🐛 Report bugs and test new features
|
|
- 🌐 Contribute translations on [Crowdin](http://crowdin.net/project/afwall)
|
|
- 📝 Improve documentation
|
|
- 💬 Help other users in forums
|
|
|
|
---
|
|
|
|
<p align="center">
|
|
<img src="https://raw.githubusercontent.com/ukanth/afwall/0502e6f17ceda08069720ff2f260902690e65e9b/screenshots/Main_2.0.png" width="300" alt="AFWall+ Screenshot">
|
|
</p>
|
|
|
|
## 🔥 What is AFWall+?
|
|
|
|
**AFWall+ (Android Firewall+)** is a powerful, open-source firewall application for rooted Android devices. Built on Linux's robust `iptables` framework, AFWall+ provides **granular network control** at the system level - something impossible with standard Android permissions.
|
|
|
|
### 🎯 **Core Purpose**
|
|
- **Block unwanted network access** by apps, even when they have internet permission
|
|
- **Prevent data leaks** and unauthorized background connections
|
|
- **Monitor network activity** with comprehensive logging
|
|
- **Save battery and data** by controlling which apps can connect when
|
|
- **Enhance privacy** by blocking tracking and analytics
|
|
|
|
### 🛡️ **How It Works**
|
|
AFWall+ operates at the **Linux kernel level** using `iptables` rules to:
|
|
1. **Intercept all network requests** before they leave your device
|
|
2. **Apply custom firewall rules** based on your preferences
|
|
3. **Allow or block connections** per app, per network type (WiFi, mobile, VPN)
|
|
4. **Log blocked attempts** for monitoring and analysis
|
|
|
|
This approach is **far more powerful** than app-level solutions because it works regardless of how apps try to connect to the internet.
|
|
|
|
---
|
|
|
|
## 🌟 Key Features
|
|
|
|
### 🔐 **Granular Control**
|
|
- **Per-app network rules** - Allow/block individual apps
|
|
- **Network type filtering** - Different rules for WiFi, mobile data, VPN, tethering
|
|
- **IPv4 & IPv6 support** - Complete protocol coverage
|
|
- **Custom rule scripting** - Advanced users can write custom iptables rules
|
|
|
|
### 🎛️ **User Experience**
|
|
- **Clean, intuitive interface** - Easy to understand app list with clear allow/block controls
|
|
- **Quick search & filtering** - Find apps instantly, sort by name, install date, or permissions
|
|
- **Bulk operations** - Enable/disable rules for multiple apps at once
|
|
- **Profile management** - Switch between different rule sets (home, work, travel)
|
|
|
|
### 📊 **Monitoring & Logging**
|
|
- **Real-time network monitoring** - See which apps are trying to connect
|
|
- **Detailed connection logs** - Track blocked attempts with timestamps and destinations
|
|
- **Notification system** - Get alerts for blocked connection attempts
|
|
- **Export/import rules** - Backup your configuration or share with others
|
|
|
|
### 🔧 **Advanced Features**
|
|
- **Boot protection** - Apply rules before apps start (prevents data leaks during startup)
|
|
- **Startup delay management** - Robust boot rule application with network change handling
|
|
- **Multi-user support** - Different profiles for different Android users
|
|
- **Tasker/Locale integration** - Automate firewall based on conditions
|
|
- **Password protection** - Secure your firewall settings
|
|
- **Tor and VPN detection** - Special handling for privacy networks
|
|
|
|
### 🌐 **Network Types Supported**
|
|
- 📶 **Mobile Data** (3G/4G/5G) - including roaming detection
|
|
- 📡 **WiFi** - home, work, public hotspots
|
|
- 🔗 **VPN** - all VPN types and providers
|
|
- 🔄 **Tethering** - WiFi hotspot, USB, Bluetooth
|
|
- 🧅 **Tor** - onion routing support
|
|
- 🏠 **LAN** - local network access
|
|
|
|
---
|
|
|
|
## 📋 System Requirements
|
|
|
|
### ✅ **Compatibility**
|
|
- **Android versions**: 5.0 (API 21) to 14+ (actively maintained)
|
|
- Legacy support: Android 4.x (version 2.9.9), Android 2.x (version 1.3.4.1)
|
|
- **Root access**: Required (Magisk, SuperSU, LineageOS su)
|
|
- **Architectures**: ARM, ARM64, x86, x86_64
|
|
- **Storage**: ~15MB app + ~5MB for binaries
|
|
|
|
### 🔧 **Root Methods Supported**
|
|
- ✅ **Magisk** (recommended)
|
|
- ✅ **LineageOS built-in su**
|
|
- ✅ **SuperSU** (legacy)
|
|
- ✅ **KingRoot** (not recommended)
|
|
|
|
### 🚫 **Limitations**
|
|
- **Requires root access** - No root = no functionality
|
|
- **Not an antivirus** - Doesn't scan files for malware
|
|
- **Not an ad-blocker** - Blocks network access, not ads within allowed connections
|
|
- **VPN conflicts** - Some VPN apps may interfere with firewall rules
|
|
- **System-level apps** - Some system processes may bypass rules if they have root access
|
|
|
|
---
|
|
|
|
## 🚀 Quick Start Guide
|
|
|
|
### 1. **Pre-Installation**
|
|
```bash
|
|
# Verify root access
|
|
su -c "id"
|
|
# Should return: uid=0(root) gid=0(root)
|
|
```
|
|
|
|
### 2. **Installation**
|
|
- Install AFWall+ from your preferred source
|
|
- Grant root permission when prompted
|
|
- Enable firewall in main screen
|
|
|
|
### 3. **Basic Configuration**
|
|
1. **Enable the firewall** - Toggle the main switch
|
|
2. **Configure apps** - Tap apps to allow WiFi (green) or mobile data (orange)
|
|
3. **Apply rules** - Tap the apply button (firewall icon)
|
|
4. **Test connectivity** - Verify apps work as expected
|
|
|
|
### 4. **Essential Settings**
|
|
- **Boot startup delay**: Prevents rule conflicts during boot
|
|
- **Notification settings**: Control alert behavior
|
|
- **Log settings**: Enable if you want connection monitoring
|
|
|
|
---
|
|
|
|
## 🔧 Advanced Configuration
|
|
|
|
### 📝 **Custom Rules**
|
|
AFWall+ supports custom iptables rules for advanced users:
|
|
|
|
```bash
|
|
# Example: Allow specific IP range
|
|
-A afwall-wifi -d 192.168.1.0/24 -j ACCEPT
|
|
|
|
# Example: Block specific port
|
|
-A afwall -p tcp --dport 443 -j REJECT
|
|
```
|
|
|
|
### 🔄 **Profiles**
|
|
Create different rule sets for different scenarios:
|
|
- **Home**: Relaxed rules for trusted network
|
|
- **Work**: Restrictive rules for corporate network
|
|
- **Public**: Maximum security for public WiFi
|
|
- **Travel**: Balanced rules for mobile use
|
|
|
|
### 📊 **Logging Configuration**
|
|
- **Packet logging**: Uses nflog for detailed connection tracking
|
|
- **Log rotation**: Automatic cleanup of old logs
|
|
- **Export options**: Save logs for external analysis
|
|
|
|
---
|
|
|
|
## 🌍 Language Support
|
|
|
|
AFWall+ is available in **40+ languages** thanks to our community translators:
|
|
|
|
🇺🇸 English • 🇪🇸 Español • 🇫🇷 Français • 🇩🇪 Deutsch • 🇮🇹 Italiano • 🇷🇺 Русский • 🇨🇳 中文 • 🇯🇵 日本語 • 🇰🇷 한국어 • 🇵🇹 Português • 🇳🇱 Nederlands • 🇵🇱 Polski • 🇹🇷 Türkçe • 🇸🇦 العربية • 🇮🇳 हिंदी • And many more!
|
|
|
|
**Want to help translate?** Join our [Crowdin translation project](http://crowdin.net/project/afwall).
|
|
|
|
---
|
|
|
|
## 🛠️ Development
|
|
|
|
### 🏗️ **Building from Source**
|
|
|
|
#### **Prerequisites**
|
|
- Android SDK (API level 21+)
|
|
- Java 17+
|
|
- Git
|
|
- Android NDK (for native binaries)
|
|
|
|
#### **Quick Build**
|
|
```bash
|
|
git clone https://github.com/ukanth/afwall.git
|
|
cd afwall
|
|
./gradlew clean assembleDebug
|
|
```
|
|
|
|
#### **Native Binaries**
|
|
To compile iptables, busybox, and other native components:
|
|
```bash
|
|
# Requires Android NDK
|
|
export NDK=/opt/android-ndk-r25
|
|
make -C external NDK=$NDK
|
|
```
|
|
|
|
### 📁 **Project Structure**
|
|
```
|
|
afwall/
|
|
├── app/src/main/java/dev/ukanth/ufirewall/
|
|
│ ├── Api.java # Core iptables interface
|
|
│ ├── MainActivity.java # Main UI
|
|
│ ├── InterfaceTracker.java # Network state monitoring
|
|
│ ├── util/BootRuleManager.java # Boot rule application
|
|
│ ├── service/ # Background services
|
|
│ ├── broadcast/ # System event receivers
|
|
│ └── log/ # Logging subsystem
|
|
├── app/src/main/res/raw/ # Native binaries (iptables, busybox)
|
|
├── external/ # Native binary sources
|
|
└── scripts/ # Build scripts
|
|
```
|
|
|
|
### 🧪 **Testing**
|
|
```bash
|
|
# Run lint checks
|
|
./gradlew lint
|
|
|
|
# Run unit tests
|
|
./gradlew test
|
|
|
|
# Install debug build
|
|
./gradlew installDebug
|
|
```
|
|
|
|
---
|
|
|
|
## 🤝 Contributing
|
|
|
|
We welcome contributions! Here's how you can help:
|
|
|
|
### 🐛 **Bug Reports**
|
|
- Check [existing issues](https://github.com/ukanth/afwall/issues) first
|
|
- Follow our [bug report guide](https://github.com/ukanth/afwall/wiki/HOWTO-Report-Bug)
|
|
- Include device info, Android version, and logs
|
|
|
|
### 💡 **Feature Requests**
|
|
- Open an issue with the "enhancement" label
|
|
- Describe the use case and expected behavior
|
|
- Consider if it fits AFWall+'s scope and philosophy
|
|
|
|
### 👨💻 **Code Contributions**
|
|
```bash
|
|
# Standard GitHub workflow
|
|
1. Fork the repository
|
|
2. Create a feature branch: git checkout -b feature-name
|
|
3. Make your changes and test thoroughly
|
|
4. Submit a pull request with clear description
|
|
```
|
|
|
|
### 🌐 **Translations**
|
|
- Join our [Crowdin project](http://crowdin.net/project/afwall)
|
|
- No technical knowledge required
|
|
- Help make AFWall+ accessible worldwide
|
|
|
|
---
|
|
|
|
## 📞 Community & Support
|
|
|
|
### 💬 **Discussion Forums**
|
|
- **XDA Thread**: [Official community discussion](http://forum.xda-developers.com/showthread.php?t=1957231)
|
|
- **GitHub Issues**: Technical problems and feature requests
|
|
- **Wiki**: [Comprehensive documentation](https://github.com/ukanth/afwall/wiki)
|
|
|
|
### ❓ **Frequently Asked Questions**
|
|
Before reporting issues, check our [FAQ](https://github.com/ukanth/afwall/wiki/FAQ) for common solutions.
|
|
|
|
### 🆘 **Getting Help**
|
|
1. Check the FAQ and wiki
|
|
2. Search existing GitHub issues
|
|
3. Ask on XDA forums
|
|
4. Create a new GitHub issue (last resort)
|
|
|
|
---
|
|
|
|
## 📖 Technical Details
|
|
|
|
### 🔧 **Architecture**
|
|
AFWall+ uses a **layered architecture**:
|
|
|
|
1. **UI Layer**: Android activities and fragments for user interaction
|
|
2. **Service Layer**: Background services for rule application and monitoring
|
|
3. **Core Layer**: iptables rule generation and management
|
|
4. **System Layer**: Native binaries and root shell interface
|
|
|
|
### 🏗️ **Key Components**
|
|
- **BootRuleManager**: Robust boot-time rule application with race condition prevention
|
|
- **InterfaceTracker**: Network interface monitoring and change detection
|
|
- **Api.java**: Central iptables command generation and execution
|
|
- **FirewallService**: Background service for continuous monitoring
|
|
- **LogService**: Network packet logging and analysis
|
|
|
|
### 📱 **Android Integration**
|
|
- **Broadcast Receivers**: Monitor system events (boot, network changes, app installs)
|
|
- **Content Providers**: Share configuration data securely
|
|
- **Notification System**: User alerts for blocked connections
|
|
- **Quick Settings Tile**: Fast firewall toggle (Android 7+)
|
|
|
|
---
|
|
|
|
## 🏆 Acknowledgements
|
|
|
|
AFWall+ builds upon the work of many open-source projects and contributors:
|
|
|
|
### 🌟 **Origins**
|
|
- **Original concept**: Derived from [DroidWall](http://code.google.com/p/droidwall) by Rodrigo Rosauro
|
|
- **Current maintainer**: [Umakanthan Chandran](https://github.com/ukanth)
|
|
|
|
### 📚 **Libraries & Dependencies**
|
|
| Component | License | Purpose |
|
|
|-----------|---------|---------|
|
|
| [iptables](http://netfilter.org/projects/iptables/) | GPL v2 | Linux firewall framework |
|
|
| [BusyBox](http://www.busybox.net) | GPL v2 | Unix utilities |
|
|
| [libsuperuser](https://github.com/Chainfire/libsuperuser) | Apache 2.0 | Root access management |
|
|
| [libsu](https://github.com/topjohnwu/libsu) | Apache 2.0 | Modern root interface |
|
|
| [Material Dialogs](https://github.com/afollestad/material-dialogs) | MIT | UI components |
|
|
| [DBFlow](https://github.com/Raizlabs/DBFlow) | MIT | Database ORM |
|
|
| [PrettyTime](https://github.com/ocpsoft/prettytime) | Apache 2.0 | Human-readable timestamps |
|
|
|
|
### 👥 **Contributors**
|
|
Thanks to all contributors who have helped improve AFWall+ over the years!
|
|
|
|
---
|
|
|
|
## 📄 License
|
|
|
|
AFWall+ is released under the **GNU General Public License v3.0**.
|
|
|
|
```
|
|
Copyright (C) 2009-2011 Rodrigo Zechin Rosauro
|
|
Copyright (C) 2011-2024 Umakanthan Chandran
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
```
|
|
|
|
**Full license text**: [LICENSE](LICENSE) file or [gnu.org/licenses/gpl-3.0](https://www.gnu.org/licenses/gpl-3.0.html)
|
|
|
|
---
|
|
|
|
<p align="center">
|
|
<i>Made with ❤️ for Android privacy and security</i><br>
|
|
<strong>AFWall+ - Your Network, Your Rules</strong>
|
|
</p> |