跳过正文
mihomo 【入门篇】
  1. 运维日记/

mihomo 【入门篇】

·822 字·2 分钟·
目录
mihomo - 这篇文章属于一个选集。
§ 1: 本文

虚空终端 是一个基于开源项目 原神 的二次开发版本.

mihomo 【入门篇】
#

网络架构
#

部署文档
#

一、linux vlan 子接口
#

  1. Trunk接口

虚拟机增加一块 ens224 接口,类型 Trunk ,允许多个 vlan

  1. 子接口
# ens224.1168
ip link add link ens224 name ens224.1168 type vlan id 1168
ip link set ens224.1168 up
# 查看
ip -d link show ens224.1168
# ens224.1169
ip link add link ens224 name ens224.1169 type vlan id 1169
ip link set ens224.1169 up
# 查看
ip -d link show ens224.1169

二、docker macvlan network
#

  1. 创建 macvlan 网络
# macvlan_1168
docker network create -d macvlan --subnet 10.64.68.0/24 --gateway 10.64.68.1 -o parent=ens224.1168 macvlan_1168
# macvlan_1169
docker network create -d macvlan --subnet 10.64.69.0/24 --gateway 10.64.69.1 -o parent=ens224.1169 macvlan_1169

三、compose
#

  1. compose.yml 容器文件
services:
  mihomo:
    image: metacubex/mihomo:v1.19.12
    container_name: mihomo
    hostname: mihomo
    restart: unless-stopped
    cap_add:
      - ALL
    security_opt:
      - apparmor=unconfined
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /dev/net/tun:/dev/net/tun
      - /usr/local/src/mihomo/mihomo:/root/.config/mihomo
    environment:
      - TZ=Asia/Shanghai
    mem_limit: "512m"
    cpus: "0.5"
    networks:
      macvlan_1168:
        ipv4_address: 10.64.68.254
      macvlan_1169:
        ipv4_address: 10.64.69.254

networks:
  macvlan_1168:
    external: true
  macvlan_1169:
    external: true
  1. 启动容器
docker compose up -d
  1. 代理规则【必配】

部署完成mihomo, 有些网络并不一定可以访问,原因是没有配置 代理;默认配置文件定义需要手动选择!如下配置:

proxy-groups:

  - name: 默认
    type: select
    proxies: [自动选择,直连,香港,台湾,日本,新加坡,美国,其它地区,全部节点]

  - name: Google
    type: select
    proxies: [默认,香港,台湾,日本,新加坡,美国,其它地区,全部节点,自动选择,直连]

此处可以使用 METACUBE 面板进行配置,参数部署:

选择代理

四、验证
#

  1. 创建2台虚拟机,1台使用 vlan 1168 、1台使用 vlan 1169

  2. 网络配置

# 主机1
ip addr add 10.46.68.200/24 dev ens33
ip link set dev ens33 up
ip route add default via 10.46.68.1 dev ens33

# 主机2
ip addr add 10.46.69.200/24 dev ens33
ip link set dev ens33 up
ip route add default via 10.46.69.1 dev ens33
  1. 测试
# 访问百度
root@toor:~# curl -I https://www.baidu.com
HTTP/1.1 200 OK
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Content-Length: 0
Content-Type: text/html
Pragma: no-cache
Server: bfe
Date: Fri, 12 Dec 2025 08:24:17 GMT

# 访问Github
root@toor:~# curl -I https://github.com
HTTP/2 200
date: Fri, 12 Dec 2025 08:24:37 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, Accept-Language,Accept-Encoding, Accept, X-Requested-With
content-language: en-US
etag: W/"8336b469ada578e9699e4becb8c34608"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff

策略路由【可选】
#

策略路由作用是将流量路由到不同的网络接口或子网。此处经过测试,不配置策略路由,也可以进行多网络容器进行流量路由。

# 多网络容器路由

# 定义网络参数
VLAN1168_IP="10.64.68.254"
VLAN1168_GW="10.64.68.1"
VLAN1168_DEV="eth1"

VLAN1169_IP="10.64.69.254" 
VLAN1169_GW="10.64.69.1"
VLAN1169_DEV="eth0"

# 删除现有默认路由
ip route del default 2>/dev/null || true

# 为VLAN 1168流量创建路由表
ip rule add from $VLAN1168_IP lookup 100
ip route add default via $VLAN1168_GW dev $VLAN1168_DEV table 100
ip route add 10.64.68.0/24 dev $VLAN1168_DEV scope link table 100

# 为VLAN 1169流量创建路由表  
ip rule add from $VLAN1169_IP lookup 200
ip route add default via $VLAN1169_GW dev $VLAN1169_DEV table 200
ip route add 10.64.69.0/24 dev $VLAN1169_DEV scope link table 200

# 设置主路由表(用于未知源IP的流量)
ip route add default via $VLAN1168_GW dev $VLAN1168_DEV

echo "Multi-homed routing configuration completed"
echo "VLAN1168: $VLAN1168_IP -> $VLAN1168_GW"
echo "VLAN1169: $VLAN1169_IP -> $VLAN1169_GW"

结语
#


参考:

mihomo - 这篇文章属于一个选集。
§ 1: 本文

相关文章


微信赞赏
微信赞赏
关注公众号
关注公众号
支付宝赞赏
支付宝赞赏