armv7/arm64/amd64 架構的 Yacd-meta 面板,構建基於 MetaCubex 源碼最新分支master
2.2K

macvlan網路用ip link show指令查看宿主機物理網卡名稱,比如eth0
在 Docker 中創建一个macvlan網路,假設家庭網段是192.168.66.0/24,主路由是192.168.66.1
docker network create -d macvlan \
--subnet=192.168.66.0/24 \
--gateway=192.168.66.1 \
-o parent=eth0 \
macnet
docker-compose.yml文件: 用於設定 mihomo 和 yacd-meta 啟用參數setup-tproxy.shshell指令碼: 用於修改 iptable 路由轉發規則mihomo(名稱隨意,compose 裡的掛載記得改就好)Geosite.dat、Geoip.dat和congfig.yaml等文件宿主機檔案結構
.
├── docker-compose.yml
├── setup-tproxy.sh
└── mihomo/
├── config.yaml
├── geoip.dat
└── geosite.dat
docker-compose.yml 內容
# docker-compose.yml
networks:
macnet:
external: true # 使用已存在的 macvlan 網路
services:
mihomo:
image: metacubex/mihomo:latest
container_name: mihomo
restart: unless-stopped
networks:
macnet:
ipv4_address: 192.168.66.10 # 指定給 mihomo 的ip
volumes:
- ./mihomo:/root/.config/mihomo # 掛載 mihomo 資料夾
- ./setup-tproxy.sh:/setup-tproxy.sh # 掛載 setup-tproxy 指令碼
cap_add:
- NET_ADMIN
- NET_RAW
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.route_localnet=1
yacd-meta:
image: edalia/yacd-meta:latest
container_name: yacd-meta
restart: unless-stopped
networks:
macnet:
ipv4_address: 192.168.66.11 # 指定給 yacd-meta 的ip
setup-tproxy.sh shell指令碼
#!/bin/sh
# 建立策略路由:fwmark=1 的封包走 table 100,從 lo 出
ip rule add fwmark 1 table 100 2>/dev/null || true
ip route add local default dev lo table 100 2>/dev/null || true
# 建立 MIHOMO chain
iptables -t mangle -N MIHOMO 2>/dev/null || iptables -t mangle -F MIHOMO
# 跳過私有/保留網段,避免迴圈
iptables -t mangle -A MIHOMO -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A MIHOMO -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A MIHOMO -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A MIHOMO -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A MIHOMO -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A MIHOMO -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A MIHOMO -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A MIHOMO -d 240.0.0.0/4 -j RETURN
# 將進入容器的 53 port DNS 請求,重定向到 mihomo 的 1053
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 1053
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 1053
# TCP/UDP 打 tproxy 標記,導向 7893
iptables -t mangle -A MIHOMO -p tcp -j TPROXY --on-port 7893 --tproxy-mark 1
iptables -t mangle -A MIHOMO -p udp -j TPROXY --on-port 7893 --tproxy-mark 1
# PREROUTING 掛上 MIHOMO chain(處理來自其他設備的流量)
iptables -t mangle -A PREROUTING -j MIHOMO
echo "TProxy rules applied successfully."
TCP/UDP 流量會被重定向到7893,即 mihomo 的 tproxy-port
DNS 請求會被劫持到1053,即 mihomo 的 DNS 監聽埠
docker compose up -ddocker exec mihomo sh /setup-tproxy.shhttp://192.168.66.11 ( compose 中分配給 yacd-meta 的 ip )修改方法分兩種,一種是侵入式的,一種是非侵入式的。
192.168.66.10(指向 mihomo 容器 ip )Android 設備要把網路設定中 私人DNS 設為 停用
一些瀏覽器 app 自帶的 DNS 設定也要停用,才會遵循 mihomo 配置中的 dns 分流或相關設定
Content type
Image
Digest
sha256:6579d98f8…
Size
27 MB
Last updated
2 months ago
docker pull edalia/yacd-meta