Go to file
wwqgtxx aa51b9faba chore: replace using internal batch package to x/sync/errgroup
In the original batch implementation, the Go() method will always start a new goroutine and then wait for the concurrency limit, which is unnecessary for the current code. x/sync/errgroup will block Go() until the concurrency limit is met, which can effectively reduce memory usage.
In addition, the original batch always saves the return value of Go(), but it is not used in the current code, which will also waste a lot of memory space in high concurrency scenarios.
2025-04-28 10:28:45 +08:00
.github actions: fix pacman build 2025-04-25 12:36:28 +08:00
adapter chore: replace using internal batch package to x/sync/errgroup 2025-04-28 10:28:45 +08:00
common chore: rebuild fingerprint and keypair handle 2025-04-25 10:34:34 +08:00
component chore: replace using internal batch package to x/sync/errgroup 2025-04-28 10:28:45 +08:00
config feat: tun add exclude-src-port,exclude-src-port-range,exclude-dst-port and exclude-dst-port-range on linux 2025-04-08 19:07:39 +08:00
constant chore: cleanup metadata code 2025-04-09 18:02:13 +08:00
context chore: hello mihomo 2023-11-03 21:58:21 +08:00
dns chore: update quic-go to 0.51.0 2025-04-21 22:58:08 +08:00
docker chore: hello mihomo 2023-11-03 21:58:21 +08:00
docs feat: inbound support shadow-tls 2025-04-22 21:16:56 +08:00
hub chore: rebuild fingerprint and keypair handle 2025-04-25 10:34:34 +08:00
listener chore: rebuild fingerprint and keypair handle 2025-04-25 10:34:34 +08:00
log chore: add singMux inbound test for shadowsocks/trojan/vless/vmess 2025-04-17 21:07:35 +08:00
ntp fix(ntp): simplify NTP service initialization and error handling 2024-01-17 16:14:25 +08:00
rules chore: complete classical rule parse error log (#1839) 2025-02-13 17:25:45 +08:00
test chore: drop support of eBPF 2024-08-16 14:15:36 +08:00
transport fix: alpn apply on shadowtls 2025-04-22 23:44:55 +08:00
tunnel chore: modify UDPSniff's function signature to prepare for its ability to handle multiple packets. 2025-03-13 08:52:27 +08:00
.gitignore chore: update gitignore 2023-01-14 18:10:22 +08:00
.golangci.yaml chore: hello mihomo 2023-11-03 21:58:21 +08:00
android_tz.go chore: Replace android timezone implementation 2024-03-10 02:24:28 +08:00
check_amd64.sh chore: add docker workflow 2022-04-28 14:18:54 +08:00
Dockerfile chore: reduce image size 2024-07-31 13:04:30 +08:00
flake.lock chore: update flake lock 2022-12-15 13:25:18 +08:00
flake.nix chore: hello mihomo 2023-11-03 21:58:21 +08:00
go.mod chore: dynamic fetch remoteAddr in hysteria2 service 2025-04-23 12:25:42 +08:00
go.sum chore: dynamic fetch remoteAddr in hysteria2 service 2025-04-23 12:25:42 +08:00
LICENSE License: use GPL 3.0 2019-10-18 11:12:35 +08:00
main.go feat: inbound support vless 2025-02-04 00:44:18 +08:00
Makefile chore: drop support of eBPF 2024-08-16 14:15:36 +08:00
Meta.png [readme] 2021-12-09 17:54:53 +08:00
README.md license: any downstream projects not affiliated with MetaCubeX shall not contain the word mihomo in their names 2025-02-08 23:37:04 +08:00

Meta Kennel
Meta Kernel

Another Mihomo Kernel.

Features

  • Local HTTP/HTTPS/SOCKS server with authentication support
  • VMess, VLESS, Shadowsocks, Trojan, Snell, TUIC, Hysteria protocol support
  • Built-in DNS server that aims to minimize DNS pollution attack impact, supports DoH/DoT upstream and fake IP.
  • Rules based off domains, GEOIP, IPCIDR or Process to forward packets to different nodes
  • Remote groups allow users to implement powerful rules. Supports automatic fallback, load balancing or auto select node based off latency
  • Remote providers, allowing users to get node lists remotely instead of hard-coding in config
  • Netfilter TCP redirecting. Deploy Mihomo on your Internet gateway with iptables.
  • Comprehensive HTTP RESTful API controller

Dashboard

A web dashboard with first-class support for this project has been created; it can be checked out at metacubexd.

Configration example

Configuration example is located at /docs/config.yaml.

Docs

Documentation can be found in mihomo Docs.

For development

Requirements: Go 1.20 or newer

Build mihomo:

git clone https://github.com/MetaCubeX/mihomo.git
cd mihomo && go mod download
go build

Set go proxy if a connection to GitHub is not possible:

go env -w GOPROXY=https://goproxy.io,direct

Build with gvisor tun stack:

go build -tags with_gvisor

IPTABLES configuration

Work on Linux OS which supported iptables

# Enable the TPROXY listener
tproxy-port: 9898

iptables:
  enable: true # default is false
  inbound-interface: eth0 # detect the inbound interface, default is 'lo'

Debugging

Check wiki to get an instruction on using debug API.

Credits

License

This software is released under the GPL-3.0 license.

In addition, any downstream projects not affiliated with MetaCubeX shall not contain the word mihomo in their names.