LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4303|回复: 45

[已解决]winxp能上网,arch不能

[复制链接]
发表于 2007-6-12 12:04:54 | 显示全部楼层 |阅读模式
[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,输出为:
  1. ..........Time out
复制代码
。查看/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,加入一行:
  1. 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:
    1. 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之后:

    1. :: Synchronizing package databases...
    2. gethostbyname: Success
    3. error: cannot connect to mirror.pacific.net.au
    4. failed to synchronize current
    5. error: cannot connect to mirror.pacific.net.au
    6. failed to synchronize extra
    7. error: could not open sync database: extra
    8.        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,终端最终显示:
    1. ping: unknown host www.google.com
    复制代码

    ping的同时netstat -tunpav:

    1. Active Internet connections (servers and established)
    2. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
    3. udp        0      0 192.168.1.44:32780      218.2.135.1:53          ESTABLISHED 4180/ping
    复制代码

    如果在/etc/resolv.conf中设置了多个DNS,过2秒钟运行一次netstat -tunpav,可以看到尝试第一个DNS失败,再试第二个,最后无后文了:

    1. Active Internet connections (servers and established)
    2. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
    3. udp        0      0 192.168.1.44:32772      218.2.135.1:53          ESTABLISHED 4051/ping           
    4. udp        0      0 192.168.1.44:32773      202.102.15.162:53       ESTABLISHED 4051/ping           
    5. 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

  1. MOD_AUTOLOAD="yes"
  2. MOD_BLACKLIST=(pcspkr)
  3. MODULES=(b44 mii)
  4. HOSTNAME="mylaptop"
  5. lo="lo 127.0.0.1"
  6. eth0="eth0 192.168.1.44 netmask 255.255.255.0 broadcast 192.168.1.255"
  7. INTERFACES=(lo eth0)
  8. gateway="default gw 192.168.1.1"
  9. ROUTES=(gateway)
复制代码


b) /etc/host.conf

  1. order hosts,bind
  2. multi on
复制代码

# 原始配置文件,没有动过

c) /etc/hosts

  1. 127.0.0.1                localhost.localdomain        localhost
复制代码

# 原始配置文件,没有动过

d) /etc/sysctl.conf

  1. #
  2. # Kernel sysctl configuration
  3. #

  4. # Disable packet forwarding
  5. net.ipv4.ip_forward=0

  6. # Disable the magic-sysrq key
  7. kernel.sysrq = 0

  8. # Enable TCP SYN Cookie Protection
  9. net.ipv4.tcp_syncookies = 1
  10. #net.ipv4.tcp_syncookies = 0
  11. #net.ipv4.tcp_window_scaling = 0
复制代码

# 原始配置文件。最后两行的变更已经注释了

e) /etc/resolv.conf

  1. #
  2. # /etc/resolv.conf
  3. #
  4. #nameserver 202.96.199.133
  5. #nameserver 202.96.102.3
  6. #nameserver 202.102.24.35
  7. #search <yourdomain.tld>
  8. #nameserver <ip>
  9. nameserver 218.2.135.1
  10. nameserver 202.102.15.162
  11. nameserver 202.102.192.68
  12. #nameserver 202.96.209.133
  13. #nameserver 202.96.96.68

  14. # End of file
复制代码


[size=+2](五)相关输出

a) lsmod | grep b44

  1. b44                    23308  0
  2. mii                     4992  1 b44
复制代码


b) ifconfig

  1. eth0      Link encap:Ethernet  HWaddr 00:15:C5:66:07:3F  
  2.           inet addr:192.168.1.44  Bcast:192.168.1.255  Mask:255.255.255.0
  3.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  4.           RX packets:3225 errors:0 dropped:0 overruns:0 frame:0
  5.           TX packets:127 errors:0 dropped:0 overruns:0 carrier:0
  6.           collisions:0 txqueuelen:1000
  7.           RX bytes:481043 (469.7 Kb)  TX bytes:10100 (9.8 Kb)
  8.           Interrupt:18

  9. lo        Link encap:Local Loopback  
  10.           inet addr:127.0.0.1  Mask:255.0.0.0
  11.           UP LOOPBACK RUNNING  MTU:16436  Metric:1
  12.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  13.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  14.           collisions:0 txqueuelen:0
  15.           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
复制代码


c) route -n

  1. Kernel IP routing table
  2. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  3. 192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
  4. 0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
复制代码


d) dmesg | tail

  1. ReiserFS: sda7: Using r5 hash to sort names
  2. ReiserFS: sda9: found reiserfs format "3.6" with standard journal
  3. ReiserFS: sda9: using ordered data mode
  4. 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
  5. ReiserFS: sda9: checking transaction log (sda9)
  6. ReiserFS: sda9: Using r5 hash to sort names
  7. Adding 1180704k swap on /dev/sda5.  Priority:-1 extents:1 across:1180704k
  8. b44: eth0: BUG!  Timeout waiting for bit 00000002 of register 42c to clear.
  9. b44: eth0: Link is up at 100 Mbps, full duplex.
  10. b44: eth0: Flow control is off for TX and off for RX.
复制代码


e) dmesg | grep eth0

  1. eth0: Broadcom 4400 10/100BaseT Ethernet 00:15:c5:66:07:3f
  2. b44: eth0: BUG!  Timeout waiting for bit 00000002 of register 42c to clear.
  3. b44: eth0: Link is up at 100 Mbps, full duplex.
  4. b44: eth0: Flow control is off for TX and off for RX.
复制代码
 楼主| 发表于 2007-6-12 15:45:32 | 显示全部楼层
还有个贴子跟我的问题很像,没有解决:《装了archlinux的兄弟看看!郁闷了。网络就是搞不好!》(http://www.linuxsir.cn/bbs/showthread.php?t=105969)

难不成赶上疑难杂症了?

也许只是小问题,这些天改得头昏脑胀哪个地方疏漏了。

请大师指点迷津。
回复 支持 反对

使用道具 举报

发表于 2007-6-12 19:57:59 | 显示全部楼层
我认为最大的可能还是防火墙问题。
1,因为如果网络正常启动了的话,可以ping到自己的地址,公司的LAN连接上网都应该可以的(如果他只是根据静态ip地址判断上网的话)
2,
gethostbyname: Success
说明可以正常连接到DNS,得到地址解析的。
3,
Active Internet connections (servers and established)
特别是这句话,很直接的说明internet连接已经建立了。
回复 支持 反对

使用道具 举报

发表于 2007-6-12 21:11:09 | 显示全部楼层
楼主的机子和我一样,写了那么多我没看懂。菜鸟又不求甚解啊。
建议用networkmanager配置网络试试,可以参考这个:http://www.linuxsir.cn/bbs/showthread.php?t=299964

knetworkmanager好像是可以自动配置网络的。我用它时,KDE的网络配置提示没有配置文件的,但是就是能用,而且很好用,唯一遗憾的是用虚拟机时无法上网。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-13 13:48:55 | 显示全部楼层
感谢两位的热心帮助!贴子开始没用bb code,看得眼乱,我马上改一下。

to ganloo:
还想请教一下:

1. 防火墙
我认为最大的可能还是防火墙问题。

很有可能。
网关上的防火墙能将windoze和linux区别对待吗?如果是这样,需要怎样设置呢?google什么关键词可以找到文档呢?

背景:
a) 上午得到验证:切换到WindozeXP下,dhcp也不能用。可能是网关停掉了dhcp服务,前段时候公司在为员工乱改ip发愁。
b) 为了防止上班时间BT、xmule下载,还可能封了不少端口。
c) ping -f $网关ip,2秒后中断。5分钟不到,来了人问我是不是中毒了。实时监控~

目前我只装了Voodoo的base,就等着网络通后pacman -Sy。


2. 地址解析
说明可以正常连接到DNS,得到地址解析的。

为什么ping google输出为
  1. ping: unknown host www.google.com
复制代码

呢?



to zkyken:

呵呵,我不想太依赖GNOME或KDE才从Ubuntu转到Arch的,如果脚本不能解决问题不得已回到GUI配置,实在不甘心。我再试试吧,实在不行,只好装network manager了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-13 14:44:47 | 显示全部楼层
我还怀疑过,是不是网卡的IRQ与其它设备冲突。
cat /proc/interrupts
  1.            CPU0       CPU1      
  2.   0:      56485          0   IO-APIC-edge      timer
  3.   1:        736          0   IO-APIC-edge      i8042
  4.   8:          0          0   IO-APIC-edge      rtc
  5.   9:          1          0   IO-APIC-fasteoi   acpi
  6. 12:       2254          0   IO-APIC-edge      i8042
  7. 14:       8193        726   IO-APIC-edge      libata
  8. 15:        165          0   IO-APIC-edge      libata
  9. 18:        351          0   IO-APIC-fasteoi   eth0
  10. 19:          2          0   IO-APIC-fasteoi   uhci_hcd:usb1, ehci_hcd:usb5
  11. 20:         69          0   IO-APIC-fasteoi   uhci_hcd:usb2, HDA Intel
  12. 21:          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
  13. 22:         35          0   IO-APIC-fasteoi   uhci_hcd:usb4
  14. NMI:          0          0
  15. LOC:      56397      56392
  16. ERR:          0
  17. MIS:          0
复制代码
eth0独占18,没有其他设备用18了。

ifconfig eth0,输出的最后一行为
  1.           Interrupt:18
复制代码
google ifconfig,多数网页ifconfig eth0输出的最后一行为
  1.           Interrupt:18  Base address:0x5000
复制代码
还有些则有第三项“Memory:f8000000-f8011100 ”。问题会与此有关吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-13 17:31:14 | 显示全部楼层
在http://bbs.archlinux.org/和http://forums.gentoo.org/上看到不少与我类似的问题:升级后不能上网。

但是原因不一样:networkmanager从0.6.4升级到0.6.5之后才不能上网,是networkmanager的bug,恢复到0.6.4就解决了。

我没有装过networkmanager,因为我用fvwm2,没装GNOME或KDE。

现在重装Voodoo之后,只装了base
  1. pacman -Q | grep network
复制代码

没有networkmanager

  1. pacman -Q | grep lib
复制代码

没有libnetworkmanager
回复 支持 反对

使用道具 举报

发表于 2007-6-14 15:24:07 | 显示全部楼层
楼主~你的管理能力不低了.可以到Gentoo那个版块问下,或是LFS的.
这里人气毕竟少点.我看了你的内容,如果我也碰到了这样的问题,可能我不会想那么多.
1.我没有耐性:对待那么多次的重试.实在是消耗耐性,我想我会认为:
   既然能够Ping网关,能够说明网卡驱动能用.不会想它.
   既然能够返回认证错误,说明认证程序能够工作并且能够工作了.
2.我会马上安装networkmanager的话,简单的活,就是舒服.....
3.看networkmanager的源代码自己改了成bash~哈哈.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-14 17:42:31 | 显示全部楼层
SCys太抬举我了

放狗搜到RoadCloud兄的贴子(http://www.linuxdiyf.com/bbs/viewthread.php?tid=48019),依葫芦画瓢,/etc/resolv.conf第一个nameserver设置为网关ip

  1. nameserver 192.168.1.1
  2. nameserver 218.2.135.1
复制代码

/etc/rc.d/network restart,ping www.baidu.com,可以解析域名了!
TNND,初识Linux不知DNS为何物之时的设置,居然……

pacman -Sy

  1. config: new section 'options'
  2. config: log file: /var/log/pacman.log
  3. config: noupgrade: etc/passwd
  4. config: noupgrade: etc/group
  5. config: noupgrade: etc/shadow
  6. config: noupgrade: etc/sudoers
  7. config: noupgrade: etc/fstab
  8. config: noupgrade: etc/raidtab
  9. config: noupgrade: etc/ld.so.conf
  10. config: noupgrade: etc/rc.conf
  11. config: noupgrade: etc/rc.local
  12. config: noupgrade: etc/modprobe.conf
  13. config: noupgrade: etc/modules.conf
  14. config: noupgrade: etc/lilo.conf
  15. config: noupgrade: boot/grub/menu.lst
  16. config: holdpkg: pacman
  17. config: holdpkg: glibc
  18. config: new section 'current'
  19. config: including /etc/pacman.d/current
  20. config: new section 'current'
  21. config: current: server: ftp mirror.pacific.net.au /linux/archlinux/current/os/i686/
  22. Installation Root: /
  23. Top-level DB Path: /var/lib/pacman
  24. Targets: None
  25. :: Synchronizing package databases...
  26. failed to get lastupdate time for current (no big deal)
  27. connecting to mirror.pacific.net.au:21
复制代码

域名解析已无碍,不过还是连不上

netstat -tunpav

  1. Active Internet connections (servers and established)
  2. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
  3. tcp        0      1 192.168.1.44:36185      61.8.0.17:21            SYN_SENT    4011/pacman         
复制代码


又进了一步

死磕ing...
回复 支持 反对

使用道具 举报

发表于 2007-6-14 21:13:59 | 显示全部楼层
问个问题.如果DNS行的话,应该是能够直接上网了喔....难道你的是局域网网关有限制你的上网规则?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表