当有多个wan口时,有线的wan口与ppp拨号形成的wan口,在域名解析文件/tmp/resolv.conf.auto会有冲突。导致某个网卡无法正确解析域名。
为了解决此问题,在pppd文件夹下的ipcp.c,修改pppd拨号成功后,不仅向resolv.conf.ppp,也向resolv.conf.auto中写nameserver,并且是继续写入,而非覆盖。
找到下面的函数,其中,_PATH_RESOLV代表前者,_PATH_RESOLV_AUTO1代表后者。
fprintf的参数为w,表示写入覆盖,为a表示继续写入,不覆盖。
/*
* create_resolv - create the replacement resolv.conf file
*/
static void
create_resolv(peerdns1, peerdns2)
u_int32_t peerdns1, peerdns2;
{
FILE *f;
f = fopen(_PATH_RESOLV, "w");
if (f == NULL) {
error("Failed to create %s: %m", _PATH_RESOLV);
return;
}
fprintf