Skip to content

Lihatoo/mh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mh (mihomo wrapper)

基于 mihomo 的纯ubuntu终端控制梯子工具,适合简单全局控制与。

mihomo: https://github.com/mihomo/mihomo

部署

将目录下的mh复制到/usr/local/bin下,并添加执行权限。

sudo chmod +x mh   # 给予执行权限
sudo setcap cap_net_admin,cap_net_raw+ep  /home/lht/bfile/mihomo/mihomo # 给予网络tun权限

然后在任何终端都可以使用mh命令。

使用

导入

支持两种导入方法

mh add name path
mh add name url
mh select name #  选择一个配置

分别是订阅链接或者是某个已配置好的yaml文件 得到如下的项目结构

tnt
├── cache.db
├── config.yaml  # 这是mh生成的配置文件,用于启动mihomo
├── geoip.metadb # 这是运行中生成的文件
├── mihomo.log # 这是日志,可以用config.yaml 的log_file 指定error,warning,info,debug
└── providers
    └── tnt.yaml  # 这是提供节点的文件,来自你的订阅链接,tnt为你输入的名称
current.profile # 保存是否需要tun配置
run.pid  # 运行时保存的进程id,目前只能支持起一个mihomo

换节点

mh -l # 列出搜索可选择节点
mh name # 搜索并列表选择节点

其他操作

mh tun on/off # 开启/关闭tun,可能需要sudo权限
mh env # 输出当前 shell 可用的代理 export 片段
mh mode rule/global/direct # 切换运行模式
mh rules show/reset # 查看或重置内建基础规则
mh -h # 帮助
mh  # 快速预览信息
mh db # 一些测试,debug专用
sudo -E apt install ...#如果下载没有网络,则是环境没有导入 

如果要让当前 shell 立刻走代理,不能只执行 mh,因为它是子进程,没法反向修改你的父 shell 环境。要这样用:

eval "$(mh env)"

默认输出的是 127.0.0.1:7897,和常见 GUI 代理端口保持一致。也可以把 mh env 的输出写进 ~/.bashrc / ~/.zshrc

基础规则

现在新建的 profile 默认走一套很简单的规则:

  • 局域网、本地回环直连
  • 其他流量走 Final
  • Final 默认选择 Proxy

可以直接调整:

mh mode rule    # 规则模式
mh mode global  # 全局代理
mh mode direct  # 全局直连

mh rules show   # 查看当前规则
mh rules reset  # 重置成内建基础规则

错误

主要错误都可以看看mihomo.log文件,从其中分析

网络dns解析失败

节点正常搜索,测速正常,可是无法使用(浏览器,网站) 查看日志,前面下载正常,就是网络解析不了

mh db选择7 ,看看有几个dns!

问我这里显示有两个dns,也就是说错误的ip解析可能来自另一个干扰的tailscale0(我这里是这个)

About

A small Bash wrapper around `mihomo` to manage profiles, start/stop the service, switch nodes, and toggle TUN.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages