问题描述
容器化哪吒面板V1在后台编辑电报通知时,浏览器后台报错,无法连接
问题排查
家里是有全局科学的,出现这个问题,我也很纳闷,用宿主机排查都是正常的可以连接的
一度使用bridge,host都试过解决不了
科学环境
网络测试时,使用的ping命令,在宿主机解析api.telegram.org是11.0.0.4,但是在容器中解析是104.244.46.57,怀疑跟这个有关系
科学方式
我家科学的方式使用的dns解析墙外使用clash网关,墙内就用正常网络请求,所以想到跟dns解析有关
解决问题
尝试在docker compose命令中添加extra_hosts:‘api.telegram.org:11.0.0.4’,再次尝试后果然可以正常发送电报测试消息了
后续
但是问题没这么简单,之前我也在论坛询问过fake-ip的缓存问题,我个人浅显的理解域名和fake-ip的对应不是一成不变的,今天重启路由器后果然通知失效了,怎么解决呢,既然指定host不行,那么干脆替换掉dns文件吧!
说干就干,添加映射/etc/resolv.conf:/etc/resolv.conf
—
你别说,你还真别说,嘿嘿
没用!
这不应该啊,然后好家伙dc exec -it nezha cat /etc/resolv.conf
根本没变化,可是映射去哪了呢?查看宿主机的/etc/resolve.conf,居然变得跟容器一样了…
真是偷鸡不成蚀把米…还好宿主机的文件之前有备份,看来nezha的官方应该在容器启动后对resolve文件做了覆盖,好吧,既然如此只能:ro
了,改成/etc/resolv.conf:/etc/resolv.conf:ro
问题解决
这个问题,一般人应该遇不到,我是因为家里的科学方式走的是dns解析,所以哪吒面板的dns强制走原始的
nameserver 127.0.0.11
nameserver 8.8.4.4
nameserver 223.5.5.5
就行不通了,记录一下,有缘遇到的盆友可以借鉴一下,文中不足之处希望大家支出