Linux networkmanager
我们开发的网络,出于保密,只能叫XXX网络,或者我更倾向于称之为WTF-network
由于经常处于封闭的环境,刚一接触新一点的世界,总是有那么一点猝不及防。最近发现配置的静态路由经常消失,经发现是networkmanager在删除无效路由:
1、暴露了俺们对它的无知;
2、未出于安全考虑,共享使用了ip栈的路由表空间(终端兼容);
下面是扫盲用的连接了。
https://wiki.gnome.org/Projects/NetworkManager
没有仔细去探索NM的源码,不过搜索了一下路由更新的事件,有一种我良辰自有一百方法让你(可怜的路由)呆不下去,而你却无可奈何的感觉。。。
/* if @cur_ipx_route is not equal to @plat_route, the route must be deleted. */ if ( !cur_ipx_route || route_dest_cmp_result != 0 || *p_effective_metric != cur_plat_route->rx.metric) vtable->vt->route_delete (priv->platform, ifindex, cur_plat_route); cur_plat_route = _get_next_plat_route (plat_routes_idx, FALSE, &i_plat_routes);
再往下就是netlink消息了,可见linux下并无秘密,真是如此,可能异构网络并不能真正安全,或许知此知彼,各凭本事,也能一搏。
1 nlmsg = _nl_msg_new_route (RTM_DELROUTE, 2 0, 3 AF_INET, 4 ifindex, 5 NM_IP_CONFIG_SOURCE_UNKNOWN, 6 RT_SCOPE_NOWHERE, 7 &network, 8 plen, 9 NULL, 10 metric, 11 0, 12 NULL);