如题,最近在一台很旧的笔记本上安装了Arch2013.11.01基本系统。遇到了一个关于DNS的问题:
房东提供的是拨号服务器,各住户通过PPPOE上网。
我的笔记本在XP下可以拨号成功,正常上网;
在Arch下,如果用带拨号功能的路由器,也能正常上网,Arch会取得正确的DNS,自动生成 resolv.conf。
但在Arch里面直接pppoe-start拨号却得不到DNS服务器的IP,只能在每次拨号后手工填写 resolv.conf,才能正常上网。
详情如下:
实验一:使用拨号路由器上网,正常
-----------------------------------------------------------------------------------------------------------------------
接线完毕,路由器开机,稍候片刻,笔记本就可以正常上网了。
查看 /etc/resolv.conf ,有正常的 nameserver 记录。将此文件备份。
(断开网线上,此文件变成空白,只有一行注释,# Generated by resolvconf)
实验二:笔记本自行拨号上网,不能自动获得DNS
-----------------------------------------------------------------------------------------------------------------------
0. 撤掉路由器,而把房东的网线直接连到笔记本。
1. pppoe-setup,填写了正确的网络接口(不是eth0,而是类似于enp1s0f0)、账号、密码,DNS填的是server,无防火墙,保存。
2. systemctl enable adsl
3. pppoe-connect 或 systemctl start adsl 都显示
. Connected
此时,ping 8.8.8.8 是通的,但 ping www.baidu.com 却显示 unknown host 。
查看 /etc/resolv.conf,该文件空白,只有一行注释,# Generated by resolvconf
手工将之前备份的resolv.conf恢复过来,可以正常上网。
实验三:Windows XP,笔记本自行拨号上网,正常
------------------------------------------------------------------------------------------------------------------------
这个就不细说了。
离线
我倒是希望 pppd 不要改我的 DNS 配置呢……
离线
删掉 /etc/resolv.conf 然后手动新建这个文件,里面写两行 nameserver
它不是个 symlink 就不会被覆盖了。以后会自动用你写的两个DNS。
离线
我倒是希望 pppd 不要改我的 DNS 配置呢……
正是,我亦如此
离线
删掉 /etc/resolv.conf 然后手动新建这个文件,里面写两行 nameserver
它不是个 symlink 就不会被覆盖了。以后会自动用你写的两个DNS。
它本来不是个symlink。如果我用路由器来上网,它就是个实体文件。我就是用它做备份的。
换成 pppoe-start 拨号上网,拨通后,它就变成了symlink;pppoe-stop 后的情况,我倒是不记得它有没有变回去了。晚上下班回去瞧瞧。
对 /etc/resolv.conf 的修改,好像发生在 /etc/ppp/ip-up 以及 /etc/ppp/ip-up.d/ 目录下的脚本中。我昨晚上稍稍分析了一下里面的脚本,发现有 ln -s 以及 rm 还有调用 resolvconf 等等。
你的办法我会试一试。如果实在没辙,我就像别人说的,写个脚本来 拨号 & 设置resolv.conf 了。
刚才在 ArchLinux Wiki 中仔细读了 Network Configuration ,发现可以配置 /etc/dhcpcd.conf 叫dhcp不要动我的 resolv.conf:
nohook resolv.conf
晚上回去一并试试。
最近编辑记录 xxf_cz (2013-11-27 16:46:34)
离线
要用下这个命令
sudo route add default dev ppp0
离线
nohook resolv.conf 这个我早写了。
实在搞不定你可以 chattr +i /etc/resolv.conf 就 OK 了。
离线
谢谢各位提供的办法,晚上回去马上试!
先前本来想装一个Gentoo,用Gentoo的LiveCD启动,pppoe-start 就完全OK了,可以多开几个控制台上网边看文档边安装。
但是后面做本机编译要花很多时间,我那个十年前的本本肯定吃不消,就作罢了,然后找到了Arch。
有点好奇,Gentoo的LiveCD 拨号上网怎么就正常呢?
而 archlinux-2013.11.01-dual.iso 启动后,pppoe-start 也是有DNS的问题。
离线
试过了,结果如下:
1. chattr +i /etc/resolv.conf 也挡不住被自动修改的命运
2. nohook resolv.conf 是默认的配置,所以看来本就无效或者无关
3. 最终还是自己写了个小脚本 /usr/local/bin/adsl,先 pppoe-start ,再 cp 备份文件为 /etc/resolv.conf ,解决。
虽然还想继续一探究竟,但是暂时不想把时间继续耗在这上面了,后面还有很多重要的事情等着呢。只要找到了简单的办法解决就最好了。
离线
要用下这个命令
sudo route add default dev ppp0
唉呀,这个办法不记得试了!
不过,之前在网上好像看到过这个办法,然后我 route 查了一下,发现有 ppp0 有一条 default 的记录。
最近编辑记录 xxf_cz (2013-11-28 09:52:19)
离线
呜
crontab里每分钟执行一次 echo 'nameserver 8.8.8.8' > /etc/resolv.conf && echo 'nameserver 8.8.4.4' >> /etc/resolv.conf
酱紫?
离线