|
[size=+2](一)问题
PC:DELL 640m
网卡:Broadcom 4400 10/100BaseT Ethernet 00:15:c5:66:07:3f
Arch:Duke,xorg + fvwm2,没有装networkmanager,以/etc/rc.d/network启动eth0
时间:06/01/2007 白天
地点:公司
网络:LAN,static ip,电信
问题:pacman -Syu 之后更新了一堆包,内核升级到kernel26-2.6.21.3-2。reboot之前装了firestarter,使用默认配置,上网正常,因此_没_有_碰_其_他_配_置_文_件_。reboot之后,一切正常,除了不能上网。
时间:06/01/2007 晚上
地点:家里
网络:ADSL,pppoe,铁通
问题:pppoe-start,输出为:。查看/var/log/{error.log, everything.log},说是认证时用户名/密码错误。天地良心,这快乐的儿童节之前,2秒之内就拨号完毕,我用的好好绝对不可能吃饱了撑着乱改用户名/密码!
[size=+2](二)这些天来的尝试
[size=+1]1) 防火墙配置有误?
转到Arch之前一直在用firestarter,况且用的是默认安全策略,reboot之前也可以上网,排除是firestarter配置问题。
为了以防万一:
- 停了firestarter:/etc/rc.d/firestarter stop
- rc.conf里daemon部分把firestarter去掉
- 后来卸载了firestarter,连同iptables一起
没有用,不管是公司的LAN还是家里的ADSL仍然不能上网。
[size=+1]2) 内核的TCP window scaling问题?
查看了arch wiki上的《Configuring network》,文章提到2.6.17内核因为TCP window scaling导致无法上网。参照了《TCP window scaling and broken routers》(http://lwn.net/Articles/92727/)和《[arch] Odd network issue》(http://www.archlinux.org/piperma ... 跟《Configuring network》差不多。
修改/etc/sysctl.conf,加入一行:
- net.ipv4.tcp_window_scaling = 0
复制代码
sysctl -p,不能上网。
reboot,不能上网。
也试了tcp_rmem,没用。
[size=+1]3) 2.6.21.3-2的驱动bug?
如果是新的内核驱动出了问题,恢复到老内核应该有点希望。
根据arch wiki上的《Kernel Panics》,将内核恢复到2.6.21.3-1:
- 下载kernel26-2.6.21.3-1.pkg.tar.gz
- pacman -U kernel26-2.6.21.3-1.pkg.tar.gz
- reboot
还是不能上网。
换更老一点的内核,Voodoo安装盘上的kernel26-2.6.20.4-1.pkg.tar.gz!不能上网。
转眼折腾了一周,2.6.21.4-1也出来了。在http://www.archlinux.org/package ... 。下载,pacman -U kernel26-2.6.21.4-1.pkg.tar.gz,reboot,不能上网!
# 怀疑驱动有问题是因为dmesg | grep eth0的输出有这么一行:
# b44: eth0: BUG! Timeout waiting for bit 00000002 of register 42c to clear.
# 但是查看/var/log/kernel.log发现以前正常使用的2.6.20.4-1、2.6.21.3-1同样有这么一行log,2.6.20.4-1也会有这行log。
[size=+1]4) 配置文件设置不对?
/etc/{rc.conf, resolv.conf, host.conf, hosts},核对了以下文件:
- arch wiki上的《Configuring network》和《Official Install Guide》
- man
- 论坛上的贴子
哪怕照搬最傻瓜的设置,static ip和dhcp都不行。
[size=+1]5) 每换一次内核就交叉试验2) 3) 4),搞得整个系统出了问题?
用Voodoo盘重装Arch,base装完后:
- 设置为dhcp,/etc/rc.d/network start,启动网络失败。查看/var/log/error.log:
- Jun 11 16:33:14 mylaptop dhcpcd[3939]: timed out waiting for a valid DHCP server response
复制代码 。
- 设置为static ip,/etc/rc.d/network start,报告成功启动。pacman的current源和extra源用的是一直正常可用的ftp://mirror.pacific.net.au/linu ... 打开)但pacman -Sy之后:
- :: Synchronizing package databases...
- gethostbyname: Success
- error: cannot connect to mirror.pacific.net.au
- failed to synchronize current
- error: cannot connect to mirror.pacific.net.au
- failed to synchronize extra
- error: could not open sync database: extra
- have you used --refresh yet?
复制代码
# 更让我郁闷的是:用Ubuntu 6.10 Live CD启动,进GNOME后设置ip和DNS,不论设置为static ip还是dhcp,firefox都不能打开任何网页。
# 开始配置网络用的是图形化工具,够傻瓜了,不管用。后来手工编辑/etc/network/interface,去掉了eth1、eth2和wan0,sudo /etc/init.d/networking restart,输出告诉我重新配置网络成功,可是不能打开网页,也ping不通www.google.com。Ubuntu我从5.1 ... 有配置错误。
# 以前Ubuntu 6.10 Live CD启动之后就自动配置为dhcp并且网络可用,这次却默认为lo,并且只有lo。
[size=+1]6) DNS服务器歧视Linux?
找了北京、上海、广州的DNS服务器,在win下试验证明可用。但是,修改/etc/resolv.conf之后问题依旧。
[size=+2](三)“不能上网”的具体表现
- 设置为dhcp网络启动失败,ifconfig只看到lo;设置为static ip之后/etc/rc.d/network start可以启动网络。
- Arch + WindozeXP双系统,无论何时进win上网都没问题。ip、netmask、gateway、DNS都设置的一样,网线插上去就没动过。说明电信/网通的网络是通的,也不是网线或猫的问题。
- 网关、DNS都能ping通,貌似路由没问题。但是firefox只能打开内网的网页(http://192.168.1.xx/xx.html)。
- ping www.google.com,终端最终显示:
- ping: unknown host www.google.com
复制代码
ping的同时netstat -tunpav:
- Active Internet connections (servers and established)
- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
- udp 0 0 192.168.1.44:32780 218.2.135.1:53 ESTABLISHED 4180/ping
复制代码
如果在/etc/resolv.conf中设置了多个DNS,过2秒钟运行一次netstat -tunpav,可以看到尝试第一个DNS失败,再试第二个,最后无后文了:
- Active Internet connections (servers and established)
- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
- udp 0 0 192.168.1.44:32772 218.2.135.1:53 ESTABLISHED 4051/ping
- udp 0 0 192.168.1.44:32773 202.102.15.162:53 ESTABLISHED 4051/ping
- udp 0 0 192.168.1.44:32774 202.102.192.68:53 ESTABLISHED 4051/ping
复制代码
用firefox开网页,或是pacman -Sy,netstat -tunpav的输出与上面类似:State都是ESTABLISHED,停留在DNS解析这一步就不动了,直到最后报域名解析失败。
- 查到www.baidu.com的ip是220.181.37. ... 他网站一样。
[size=+2](四)当前配置文件
a) /etc/rc.conf
- MOD_AUTOLOAD="yes"
- MOD_BLACKLIST=(pcspkr)
- MODULES=(b44 mii)
- HOSTNAME="mylaptop"
- lo="lo 127.0.0.1"
- eth0="eth0 192.168.1.44 netmask 255.255.255.0 broadcast 192.168.1.255"
- INTERFACES=(lo eth0)
- gateway="default gw 192.168.1.1"
- ROUTES=(gateway)
复制代码
b) /etc/host.conf
- order hosts,bind
- multi on
复制代码
# 原始配置文件,没有动过
c) /etc/hosts
- 127.0.0.1 localhost.localdomain localhost
复制代码
# 原始配置文件,没有动过
d) /etc/sysctl.conf
- #
- # Kernel sysctl configuration
- #
- # Disable packet forwarding
- net.ipv4.ip_forward=0
- # Disable the magic-sysrq key
- kernel.sysrq = 0
- # Enable TCP SYN Cookie Protection
- net.ipv4.tcp_syncookies = 1
- #net.ipv4.tcp_syncookies = 0
- #net.ipv4.tcp_window_scaling = 0
复制代码
# 原始配置文件。最后两行的变更已经注释了
e) /etc/resolv.conf
- #
- # /etc/resolv.conf
- #
- #nameserver 202.96.199.133
- #nameserver 202.96.102.3
- #nameserver 202.102.24.35
- #search <yourdomain.tld>
- #nameserver <ip>
- nameserver 218.2.135.1
- nameserver 202.102.15.162
- nameserver 202.102.192.68
- #nameserver 202.96.209.133
- #nameserver 202.96.96.68
- # End of file
复制代码
[size=+2](五)相关输出
a) lsmod | grep b44
- b44 23308 0
- mii 4992 1 b44
复制代码
b) ifconfig
- eth0 Link encap:Ethernet HWaddr 00:15:C5:66:07:3F
- inet addr:192.168.1.44 Bcast:192.168.1.255 Mask:255.255.255.0
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:3225 errors:0 dropped:0 overruns:0 frame:0
- TX packets:127 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:481043 (469.7 Kb) TX bytes:10100 (9.8 Kb)
- Interrupt:18
- lo Link encap:Local Loopback
- inet addr:127.0.0.1 Mask:255.0.0.0
- UP LOOPBACK RUNNING MTU:16436 Metric:1
- RX packets:0 errors:0 dropped:0 overruns:0 frame:0
- TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:0
- RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
复制代码
c) route -n
- Kernel IP routing table
- Destination Gateway Genmask Flags Metric Ref Use Iface
- 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
- 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
复制代码
d) dmesg | tail
- ReiserFS: sda7: Using r5 hash to sort names
- ReiserFS: sda9: found reiserfs format "3.6" with standard journal
- ReiserFS: sda9: using ordered data mode
- ReiserFS: sda9: journal params: device sda9, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
- ReiserFS: sda9: checking transaction log (sda9)
- ReiserFS: sda9: Using r5 hash to sort names
- Adding 1180704k swap on /dev/sda5. Priority:-1 extents:1 across:1180704k
- b44: eth0: BUG! Timeout waiting for bit 00000002 of register 42c to clear.
- b44: eth0: Link is up at 100 Mbps, full duplex.
- b44: eth0: Flow control is off for TX and off for RX.
复制代码
e) dmesg | grep eth0
- eth0: Broadcom 4400 10/100BaseT Ethernet 00:15:c5:66:07:3f
- b44: eth0: BUG! Timeout waiting for bit 00000002 of register 42c to clear.
- b44: eth0: Link is up at 100 Mbps, full duplex.
- b44: eth0: Flow control is off for TX and off for RX.
复制代码 |
|