Mac服务器报错处理 | No Route To Host

用Mac当服务器跑应用遇到了问题,陆陆续续解决了一个星期吧,把经验记录一下。

问题现象

我在Mac上跑了Web应用,应用内部需要访问内网IP,如192.168.1.101之类的。

这些IP有的是中间件比如MySQL、Redis、RabbitMQ之类的,有的是其他Web服务(部署在局域网内其他设备),都是域名+本地hosts方式访问的。

服务启动时没有问题,也能正常用,服务可以正常访问这些IP。

过了一段时间之后——大概就是晚上睡一觉起来的时间——服务就无法访问内网IP了。

日志显示No Route To Host,重连机制也失败,报同样的错。

最终解决方案

启服务用sudo启。

没错!就是这样!这是个权限问题!Fxxx Apple!

问题原因

通过检索,在这里这里找到了问题原因。

Mac在本地网络访问上是有权限控制的,8小时后(这个时长是检索的时候不知道在哪个讨论帖里看到的)就会拒绝服务的所有本地网络访问。

踩过的坑

DHCP问题

因为这个Mac买回来,DHCP一直有问题,详情在这里,所以刚开始以为是请求发不到路由器导致的,但最后DHCP问题解决了,这个问题也没好。

代码问题

中间还反复看了代码,加了各种重连机制,把三方库里的源码都改了,结果都没用,白费功夫。

Mac设置问题

帖子里说在系统设置>隐私和安全>本地网络里把权限打开,但我的服务是用命令行启动的,不是个标准的Mac OS服务,这个也没用。