Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于docker下用host模式部署mihomo后无法访问宿主机ip的问题 #1312

Open
bonnyandsky opened this issue Feb 14, 2025 · 0 comments

Comments

@bonnyandsky
Copy link

bonnyandsky commented Feb 14, 2025

尝试了各种办法,实在无解了。也不确定是mihomo的问题还是宿主机的问题,只能过来碰碰运气了。

试了2个环境,分别是群晖和飞牛nas,mihomo均部署在host模式下
nas的ip地址假设都是192.168.0.100
mihomo的代理端口7890(使用mixed-port)
ui的端口是2080
同一台宿主机上其他docker部署在bridge模式下的服务有端口号3000
1:群晖
客户端win11电脑设置系统代理为192.168.0.100:7890后无法访问群晖docker下的任何服务(网页打不开,不管是host还是bridge的服务),也打不开群晖的管理界面(端口号5000)
2:飞牛
可以访问bridge模式下的服务,能打开网页。能打开飞牛的管理界面(端口号5000),但是打不开host下的任何服务,包括UI的20808端口和其他部署在host模式下的服务。

临时解决办法:
把mihomo部署在bridge模式下,客户端win11电脑通过连接mihomo的代理,打开群晖或者飞牛下的任何服务都正常。

问了一天GPT和deepseek,能想到的办法都试过了。均没有改善
尝试过的办法如下:
1:开关mihomo的tun模式(没任何变化)
2:指定192.168.0.100的ip地址走直连,或者走梯子代理(没任何变化)
3:确认宿主机的端口监听是正常的0.0.0.0:9090(客户端挂代理不能访问,不挂就可以访问,应该也不是拦截的问题了)
4:检查宿主机的iptables ,确认没有拦截端口(客户端挂代理不能访问,不挂就可以访问,应该也不是拦截的问题了)
5:从下图日志看,挂代理的情况下ip地址是被mihomo捕获成功的,但是最终是超时了。感觉有点想环回的问题。mihomo捕获后走直连,然后数据发给宿主机192.168.0.100:2020。但是不知道为什么就超时了。而且从第二张图能看到宿主机的本地地址访问UI也一样超时了。

Image

贴一下部署的配置文件
host模式
Image

桥接模式

services:
mihomo:
image: docker.io/metacubex/mihomo:Alpha
container_name: mihomo_bridge
restart: always
pid: host
ipc: host
network_mode: bridge
ports:
- target: 9090
published: 9090
protocol: tcp
- target: 9090
published: 9090
protocol: udp
- target: 7890
published: 7890
protocol: tcp
- target: 7890
published: 7890
protocol: udp
cap_add:
- ALL
security_opt:
- apparmor:unconfined
volumes:
- /volume1/docker/mihomo:/root/.config/mihomo
- /dev/net/tun:/dev/net/tun
- /etc/TZ:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant