kaliping不通外网
kaliping这个项目,不通我盯了整整三天三夜。外网日志刷了上万行,不通从内核参数到iptables规则,外网从DNS解析到路由表,不通全查了个遍。外网结果呢?不通外网就是不通。ping百度,外网超时;curl谷歌,不通超时;连个最简单的外网TCP握手都建立不起来。但内网访问一切正常,不通局域网里互相传文件、外网调接口,不通快得跟闪电似的外网。这问题邪门就邪门在,不通它不像一般网络故障那样有迹可循——不是防火墙误拦,不是IP冲突,更不是网线松动。
我最初怀疑是默认网关配错了。cat /etc/network/interfaces一看,gateway 192.168.1.1,没错啊。又查了route -n,default路由确实指向网关。但traceroute到8.8.8.8,第一跳就卡住了,网关压根不回应。这就怪了,网关是通的,因为内网机器能ping通它。难道是网关的NAT规则出问题了?跑过去看那台破旧的路由器,指示灯全绿,配置页面也能打开,但就是转发不出去。
换了根网线,不行。重启路由器,没用。甚至把kaliping的网卡驱动重装了一遍,还是老样子。我开始怀疑是不是运营商封了端口,但同一台路由器下另一台Windows机器上网冲浪毫无压力。那问题一定出在kaliping自身的网络栈上。我蹲在机房角落里,对着屏幕发呆,忽然想起之前给这台机器装过一个叫“网络优化”的第三方内核模块——那家伙号称能加速TCP连接,实际上可能篡改了路由决策逻辑。
赶紧lsmod查模块列表,果然有个可疑的nf_nat_optimize。rmmod卸载掉,再ping外网,通了。操,就这破玩意儿,让路由表里的默认网关被标记成不可达。它自作聪明地修改了fib_lookup的优先级,把所有非本地流量都导向了一个不存在的黑洞接口。
这事让我憋了一肚子火。优化模块的名字听着挺美,实际干的事是把系统往死里坑。你永远不知道第三方内核补丁会在哪一层埋雷。之后我给kaliping重装了纯净内核,把所有非官方仓库的模块全禁了。现在它跑得稳得很,外网延迟稳定在20ms以内。
但回头想想,这类问题在真实运维里太常见了。不是每个故障都有清晰的报错日志,很多时候就是某个不起眼的配置或模块在背后捅刀子。你翻遍文档查遍社区,最后发现凶手就是当初图省事装的那个小工具。网络调试最怕的就是“看起来全对,实际全错”的状态——所有参数都符合预期,但数据就是到不了该去的地方。
后来我把这次排障过程写成了内部wiki,标题就叫《kaliping不通外网》。同事看了直乐,说这标题起得跟段子似的。但我知道,下次再遇到类似玄学问题,至少有个参考案例能少走弯路。网络世界没有魔法,只有还没被发现的逻辑漏洞。
(责任编辑:综合)














