76 lines
2.2 KiB
Markdown
76 lines
2.2 KiB
Markdown

|
|
|
|
# fwlnx
|
|
|
|
Firewall Linux - A small and simple Busybox/Linux Firewall Distribution
|
|
|
|
It combines an optimized Linux Kernel, Busybox and a simple Webinterface and API to configure. It is not meant to be a replacement to far superiour Appliances but as an alternative solution for typical home use.
|
|
|
|
## Target platforms
|
|
|
|
- QEMU/KVM
|
|
- [PCEngines APU2](https://www.pcengines.ch/apu2.htm)
|
|
|
|
## Planned initial features
|
|
|
|
- Firewall
|
|
- [ ] NAT
|
|
- [ ] Rules
|
|
- [ ] UPnP
|
|
- [ ] DynDNS
|
|
- VPN
|
|
- [ ] OpenVPN
|
|
- [ ] Wireguard
|
|
- [ ] NTP
|
|
- [ ] DHCP
|
|
- [ ] DNS
|
|
- [ ] Auto config backup
|
|
- [ ] Cron/Timers
|
|
|
|
## Design
|
|
|
|
### Partitioning
|
|
|
|
MBR/BIOS:
|
|
|
|
```
|
|
/dev/disk:
|
|
/dev/disk1 ext4 /boot
|
|
/dev/disk2 swap [SWAP]
|
|
/dev/disk3 btrfs@home /home
|
|
/dev/disk3 btrfs@root-2021-04-01 /
|
|
/dev/disk3 btrfs@root-2021-04-20 /
|
|
/dev/disk3 btrfs@conf-2021-04-01 /config
|
|
/dev/disk3 btrfs@conf-2021-04-20 /config
|
|
```
|
|
|
|
- Every installed release has it's own subvolume for rootfs and config in case a configuration changes with an update
|
|
- The user can choose which one to boot into
|
|
|
|
### Update flow
|
|
|
|
State before the update:
|
|
|
|
- boot entry `last` is set to version 1 (last known working version)
|
|
- boot entry `current` is also set to version 1
|
|
- on every boot the default boot entry is set to `last` automatically in early boot
|
|
|
|
Update process:
|
|
|
|
- a new version is downloaded as a btrfs snapshot and put into place as version 2
|
|
- `current` boot entry is modified to boot the new version
|
|
- `current` is set as default boot entry
|
|
|
|
- device reboots into new version 2 via `current` boot entry
|
|
- early boot sets `last` as default boot entry
|
|
- after successful boot:
|
|
- the user marks the system as functional which sets the `last` boot entry to the current version
|
|
- if something goes wrong:
|
|
- the system reboots, now with the `last` entry being the default booting into the last known working system
|
|
- the user gets displayed an error because `last` and `current` is not the pointing to the same version and `last` is booted indicating an error
|
|
|
|
---
|
|
|
|
Made with ❤️ and 🪄✨.
|
|
|
|
Icon partly from [stockio](https://www.stockio.com/free-icon/nature-icons-penguin)
|