细节决定成败啊~~EdgeRouter大破恢复中的一个细节坑了我2天..
EdgeRouter Lite 3(后面简称ERL3)在最近的一次系统升级后再起不能…
连上console去查看,发现是U盘内的系统引导不起来了,所以就一直在不停重启…
得,拆机器确认下内置U盘是不是还活着…U盘还能读…那就用恢复系统重新引导重做系统吧….
重做完了开始恢复所有配置, 因为备份的存在所以基础配置是没有悬念的….然而问题是….后台用Linux命令完成的Shadowsocks出问题了..
转发无法工作…
可以确认的是, 服务器是没有问题的..那么问题就只能在本地了..
本地的ss代理一共有4大部分组成:
- DNSMASQ +IPSet,组成本地的DNS解析功能以及翻墙需要功能的IP列表记录.
- ChinaDNS作为非国内IP的DNS解析工具
- Shadowsocks-Libev 作为透明代理
- iptables作为流量分离工具
其中1跟4其实都是系统已经自带的功能, 基本不太可能出问题, 唯一的区别是, 1是可以简单验证的, 而iptables我不知道怎么确定他把识别到了正确的组而把流量转发到需要的端口去了.
所以,故障排除顺序是
- 确认dns正常工作, dnsmasq没问题, chinadns也没问题, ipset正常记录IP一样很正常,所以1跟2没问题
- 确认ss工作正常. 启动-v的诊断模式, ss的log没有任何异常
然后我就没想法了…因为iptables我不知道怎么确认..
然后查了各种地方测试了不同版本的ss,不同的服务器,不同的iptables配置方式,不同的本地端口, 都无法解决问题…很尴尬啊..心态略崩溃…
不过在最后, 发现之前已经灭了的onlyOS博客又能看了…..所以爬了下评论…发现一个之前完全不知道的config.json的点..
因为之前其实调整过很多次config文件…主要就集中在本地端口跟本地的IP配置上….所以本着死马当作活马医的态度,再试了一下..nice啊..
所以问题的关键还在于…细节啊..
这个细节就是…本地的config.json..local_address是要用0.0.0.0的,不配置local_address或者配置127.0.0.1,都是没用的..
至少后面的telnet很明确验证了这个情况….唉…不过好歹救回来了…我现在要纠结的事情变成了….我要不要换个U盘给路由呢…有点抖啊…怕再出点什么幺蛾子…