https://github.com/fcshark-org/openwrt-fchomo
FullCombo Shark! supplies maximum customization of mihomo on OpenWrt
https://github.com/fcshark-org/openwrt-fchomo
clash fullcone immortalwrt luci luci-app mihomo openwrt openwrt-package workflow
Last synced: about 2 months ago
JSON representation
FullCombo Shark! supplies maximum customization of mihomo on OpenWrt
- Host: GitHub
- URL: https://github.com/fcshark-org/openwrt-fchomo
- Owner: fcshark-org
- License: gpl-2.0
- Created: 2024-08-29T06:07:12.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2025-04-08T10:37:38.000Z (about 2 months ago)
- Last Synced: 2025-04-09T16:04:57.315Z (about 2 months ago)
- Topics: clash, fullcone, immortalwrt, luci, luci-app, mihomo, openwrt, openwrt-package, workflow
- Language: JavaScript
- Homepage: https://wiki.metacubex.one/
- Size: 10.5 MB
- Stars: 79
- Watchers: 2
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FullCombo Shark!

[](./LICENSE)

[](https://github.com/fcshark-org/openwrt-fchomo/discussions)
[](https://t.me/fc_shark)## Features
- Gateway level Transparent proxy
- Gateway level FullCone NAT
- Access control Whitelist/Blacklist
- Routing control based on Port/IP/FQDN
- Complete DNS hijacking prevents any 53 port query behavior that bypasses the gateway
- DNS requests intelligent routing based on EDNS-Client-Subnet/Policy
- Based on mihomo documentation, fully visual configuration GUI## Requirements
- OpenWrt >= 23.05
- firewall4## Known issues
- The **Routing rule** and **Sub rule** of the LuCI app have been migrated from `mihomo` format to `json` format.\
If find `option oldentry` in `/etc/config/fchomo` file, the selected config may not be migrated correctly.\
You need to manually reset the selected config and remove the `oldentry` option when you are done.## Screenshots

## Simplified architecture diagram
Expand/Collapse
``` mermaid
flowchart TD
subgraph Firewall
direction TB
subgraph fw_inpot[Input]; rawin[Raw traffic]; end
subgraph fw_outpot[Output]; lo; direct[Direct]; mihomoin[Mihomo in]; end
rawin --firewall--> flow{Subnet/Local traffic ?}
flow --Subnet--> acl_listen
flow --Local--> proxy_router{Proxy routerself ?}
proxy_router --Yes--> acl_dst
proxy_router --No --> direct
subgraph acl[Access Control]
direction TB
acl_listen{Src-interface filter} --> dns_hijack
acl_listen --> direct
dns_hijack{dport is 53 ?} --Redirect to dnsmasq--> lo
dns_hijack --No --> acl_src
acl_src{Src-address filter} --> acl_dst
acl_src --> direct
acl_dst{Dst-address filter} --> acl_dport
acl_dst --> direct
acl_dport{Dst-port filter
Always redirect port 53} --> mihomoin
acl_dport --> direct
end
end
subgraph DNS
direction TB
subgraph dns_inpot[Input]; dnsreq[Any DNS request to **local:53**]; end
subgraph dns_outpot[Output]; mihomodns[Minomo DNS]; otherdns[Other DNS]; end
dnsreq <--> dnsmasq[DNSmasq]
dnsmasq <--Upstearm--> mihomodns
dnsmasq <--Upstearm--> otherdns
dnsmasq-full --Set ipset--> e[NFTables direct/proxy/cn/gfw ipset]
end
```## Releases
You can find the prebuilt-ipks [here](https://fantastic-packages.github.io/packages/)
## Compatibility with Nikki
- FullCombo Shark! and Nikki can be installed on the same device, but cannot be started as clients at the same time.
## Installation
If you have trouble downloading resource files after initial installation, you can upload the [initial resource pack][].
## Example
[bypasscn](./luci-app-fchomo/docs/example/bypasscn.config)
[gfwlist](./luci-app-fchomo/docs/example/gfwlist.config)## Build
``` bash
# Take the x86_64 platform as an example
tar xjf openwrt-sdk-23.05.3-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz
# Go to the SDK root dir
cd openwrt-sdk-*-x86_64_*
# First run to generate a .config file
make menuconfig
./scripts/feeds update -a
./scripts/feeds install -a
# Get Makefile
git clone --depth 1 --branch master --single-branch --no-checkout https://github.com/fcshark-org/openwrt-fchomo.git package/openwrt-fchomo
pushd package/openwrt-fchomo
umask 022
git checkout
popd
# Select the package LuCI -> Applications -> luci-app-fchomo
make menuconfig
# Start compiling
make package/luci-app-fchomo/compile V=s BUILD_LOG=y -j$(nproc)
```[initial resource pack]: https://github.com/fcshark-org/openwrt-fchomo/raw/refs/heads/initialpack/initial.tgz