+ -
当前位置:首页 → 问答吧 → (己解决,特別感谢arli和maitr)linux下不能ping外网,bsd和windows则正常,dns设置都一样。

(己解决,特別感谢arli和maitr)linux下不能ping外网,bsd和windows则正常,dns设置都一样。

时间:2008-03-18

来源:互联网

如題,很怪的问題,困犹了我好久,linux下常常不能ping通外网,ping路由是很正常的。重启几次运气好的话有时能上,会是什么原因呢?我的网络是电信的,路由共享上网。
用的是~
x86,2.6.24-r3內核

作者: LaoLang_cool   发布时间: 2008-03-18

现在的 Gentoo 2.6.24-r3 内核默认连TCP/IP支持都没有选的,你自己都配置好了吗?

作者: robinswan   发布时间: 2008-03-18

这些基本的东西我还是很确认的,毕竟也不是才用的linux了。且很少时候重启后就能上了,不过得反复重启,看运气了。

作者: LaoLang_cool   发布时间: 2008-03-18

dns配置写错了?把resolv.conf内容贴出来看看

作者: kpld   发布时间: 2008-03-18

貌似默认路由设置有问题……

route -n

man route

作者: maitr   发布时间: 2008-03-18

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
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

能上和不能上时router -n都这个输出。

resolve.conf是:
# Generated by net-scripts for interface eth0
nameserver 202.119.191.100

net的设置是(手动静态ip):
dns_servers_eth0=( "202.119.191.100" )
config_eth0=( "192.168.1.142 netmask 255.255.255.0 brd 192.168.1.255" )
routes_eth0=( "default via 192.168.1.1" )

作者: LaoLang_cool   发布时间: 2008-03-18

你最近没上IRC了呀?没看到你的影子喔

作者: axlrose   发布时间: 2008-03-19

route add default gw 网关ip
我的gentoo每次启动之后都要这样做,正在寻求一个一劳永逸的方法。

作者: flyingegg   发布时间: 2008-03-19

引用:
作者: flyingegg
route add default gw 网关ip
我的gentoo每次启动之后都要这样做,正在寻求一个一劳永逸的方法。
运行后提示: SIOCADDRT: File exists.

作者: LaoLang_cool   发布时间: 2008-03-19

引用:
作者: flyingegg
route add default gw 网关ip
我的gentoo每次启动之后都要这样做,正在寻求一个一劳永逸的方法。
把这句话加在 /etc/conf.d/local.start 里。

作者: zhou3345   发布时间: 2008-03-19

附上我的.config,希望有用。
上传的附件
.config.txt (34.8 KB, 7 次查看)

作者: LaoLang_cool   发布时间: 2008-03-19

看起来本机设置没有什么问题,而且能ping通网关。
这样想的话,两个方向
一个是本机路由表的问题,不知道把发往非直连目的的数据包送给网关。
另一个就是网关的问题,数据包送去了,网关不给转发……
用 traceroute IP 这个命令可以追踪路由情况

另外你的局域网会不会有人中了ARP病毒,……

电信也有可能在封杀路由共享ADSL上网。

作者: maitr   发布时间: 2008-03-20

之前还不知道什么是arp病毒,刚查了一下,好像有点像。一个网内的,包括windows,常常只能一两台电脑上网。

电信封杀路由共享ADSL上网这个可能性不大。奇怪的是为何linux重启几次都不一定能上网,而bsd即使上不了,daemon restart一次就可以了。

作者: LaoLang_cool   发布时间: 2008-03-20

引用:
作者: robinswan
现在的 Gentoo 2.6.24-r3 内核默认
事实上没有什么所谓的Gentoo内核默认配置
内核有defconfig
但Gentoo并没有改过这个配置
不能说是Gentoo的内核默认配置
内核的配置完完全全是个人的事

作者: zhllg   发布时间: 2008-03-20

我觉得 看上去很像路由设置的问题
lz对自己网络环境的路由情况了解么

作者: asmart   发布时间: 2008-03-20

说真的,我对路由什么的不懂。但同一电脑不同系统,上网的状况不一样,除了路由,和本机也有关系吧。

作者: LaoLang_cool   发布时间: 2008-03-20

我给你举个例子,
我目前的接入属于 pppoe on ethernet
开机 eth0会自动获得一个ip 同时系统将default gw 设置成eth0自动获得的gw
此时 经由pppoe拨号 , ppp0成功建立
然而 ppp0的路由并没有添加进路由表, 造成无法上网 , 手动删除eth0获得的gw , 添加ppp0的gw 问题解决 ~~~

windows在这种情况下路由的非常好 拨号成功后 默认路由即为ppp之路由

作者: asmart   发布时间: 2008-03-20

我现在应该做什么?我所处的网络是一个路由共享上网。

作者: LaoLang_cool   发布时间: 2008-03-20

你确认DNS正确吗?

你那电信有没有备用的DNS??
我这里有两个DNS一个主要,一个备用的.

作者: Eadwen   发布时间: 2008-03-21

freebsd和windows都用的这个,不会有错的。

作者: LaoLang_cool   发布时间: 2008-03-21

wireshark
tcpdump
抓包分析……

作者: zhllg   发布时间: 2008-03-21

引用:
作者: zhllg
wireshark
tcpdump
抓包分析……
这办法够狠 - -!

作者: maitr   发布时间: 2008-03-21

乐哥整的太professional了....

作者: asmart   发布时间: 2008-03-21

pro不professional是相对的
如果你真的想知道一件事,你就不会管太多东西

作者: zhllg   发布时间: 2008-03-21

我发现了个特点:
ping -c 1 dnsIP,第一次会失败,但第二次就好了然后就能上了!不知什么原因?
不止是ping dnsIP可以回复正常,ping任何网址都可以上网!

昨天只是回光返照。。。现在又上不了网了。

作者: LaoLang_cool   发布时间: 2008-03-21

我觉得还是用 gentoo liveCD 或其他的 liveCD来试一下能否上网(最省事的办法)
目的是验证 < linux下不能ping外网,bsd和windows则正常,dns设置都一样。 > 是否linux都没搞头

作者: axlrose   发布时间: 2008-03-21

今天试了以前正常的arch livecd 0.72,内核是22的,也是不能上,100次中只有一次成功(夸张了点),看来不是设置问题。

作者: LaoLang_cool   发布时间: 2008-03-22

引用:
作者: LaoLang_cool
今天试了以前正常的arch livecd 0.72,内核是22的,也是不能上,100次中只有一次成功(夸张了点),看来不是设置问题。
运行 arp -a 确认你在linux下的arp (网关mac)是正确的

作者: arli   发布时间: 2008-03-23

arp -a:
? (192.168.1.1) at 00:1D:0F:7D:75:28 [ether] on eth0

ifconfig:
eth0 Link encap:Ethernet HWaddr 00:01:2E:15:80:2F
inet addr:192.168.1.142 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1646 errors:0 dropped:0 overruns:0 frame:0
TX packets:1078 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:508110 (496.2 Kb) TX bytes:153664 (150.0 Kb)
Interrupt:16 Base address:0xe000

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)

不一样?
什么原因?
我这两台linux,一台网卡是8139,一台是8169,有时,一般是深夜,开机不能上网,ping几次外网就好了;有时,ping多少次都不行。两台机器症状相同。
前面说的arch live-cd,以前是正常的,现在也不行了,应该是网络原因。
我的网络环境是:
外网 -> 路由 -> 交换机 -> 路由
我处于最里面的那个路由的内网。
学校里的网络,排除电信封杀可能。且同一内网的其它windows都很正常。

作者: LaoLang_cool   发布时间: 2008-03-23

arp -a:
? (192.168.1.1) at 00:1D:0F:7D:75:28 [ether] on eth0
这个是本机ARP缓存中记载的网关MAC地址,用这个地址去核对你路由器的MAC地址,如果不一样,很可能是被ARP攻击了……

IPV4的以太网中使用MAC地址通信,地址解析协议(Address Resolution Protocol,ARP)用来完成IP地址到MAC地址的解析。arp缓存中储存了IP地址于MAC地址的映射关系
而ARP协议是以广播形式进行IP地址解析的,这是个天生的bug,如果有台电脑A,在你用ARP协议解析网关MAC地址的时候做出响应,或者A不停的向你发送ARP响应包,说自己是192.168.1.1,MAC地址是XXX,你的电脑就会错误的刷新ARP缓存,在有数据包需要送往网关的时候,查表(ARP缓存)得到的MAC地址是A的MAC地址,数据包就会被送往A机……

按照你描述的情况,这种可能性不大,但仍有可能无意间在win下安装了具有所谓ARP防火墙一类功能的软件。,却还是无法解释FreeBSD也能正常上网。

验证下吧。排除了ARP欺骗的可能,剩下的恐怕只能像乐哥说的,抓包分析……

作者: maitr   发布时间: 2008-03-23

想不到还能有什么原因了,linux和win,发送的数据包,区别不是很大吧。TTL是一个差别,但是我记得FreeBSD和linux一样,TTL都是64……win是128 既然freebsd能上……
估计电信就是靠TTL查到的共享上网吧……

我对TCP/IP的了解有限,实在帮不上忙了。呵呵

对了,不会是IP地址冲突吧,哈哈

作者: maitr   发布时间: 2008-03-23

我留意了一下,能上网时与不能时arp的输出不一样。
好时:
arp -a:
? (192.168.1.1) at 00:1D:0F:7D:75:28 [ether] on eth0

ifconfig:
eth0 Link encap:Ethernet HWaddr 00:01:2E:15:80:2F
inet addr:192.168.1.142 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1646 errors:0 dropped:0 overruns:0 frame:0
TX packets:1078 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:508110 (496.2 Kb) TX bytes:153664 (150.0 Kb)
Interrupt:16 Base address:0xe000

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)


坏时:
arp -a:
? (192.168.1.1) at 00:14:78:65:36:8A [ether] on eth0

ifconfig:
eth0 Link encap:Ethernet HWaddr 00:01:2E:15:80:2F
inet addr:192.168.1.142 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:312 (312.0 b) TX bytes:1114 (1.0 Kb)
Interrupt:16 Base address:0xe000

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)
不知有没有帮助?

作者: LaoLang_cool   发布时间: 2008-03-23

这是同一台电脑的freebsd下的输出:
arp -a:
freebsd.aigo (192.168.1.1) at 00:1d:0f:7d:75:28 on rl0 [ethernet]

ifconfig:
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:01:2e:15:80:2f
inet 192.168.1.142 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet 127.0.0.1 netmask 0xff000000

作者: LaoLang_cool   发布时间: 2008-03-23

虽然不大可能,但真的符合ARP攻击……

每次上网前用
#arp -s 192.168.1.1 00:1D:0F:7D:75:28

设定静态ARP地址表 我记得是ip在前面,MAC地址在后面,如果报错就调换下。
MAC地址是你的网关(192.168.1.1)的MAC地址……


IPV6不知道要等到猴年马月了……

作者: maitr   发布时间: 2008-03-23

这样好像有用!
bsd和windows对ARP攻击免疫?

作者: LaoLang_cool   发布时间: 2008-03-23

windows不免疫.. 如果装了什么什么防火墙没准就有了免疫的功能……
freebsd我不了解,但TCP/IP协议最早是在freebsd上实现的,要说他有什么别致的地方到也能接受
牵强了点,嘿嘿

作者: maitr   发布时间: 2008-03-23

恩人呀,太谢谢了!
这几天再测测,现在不早了,上床先了!

作者: LaoLang_cool   发布时间: 2008-03-23

引用:
作者: maitr
TCP/IP协议最早是在freebsd上实现的
这是一个美丽的误解
总是感觉人们认为越是自己不用的东西,越是用的人少的东西,越牛比

freebsd公认起源于386bsd,一个若不是因为法律纠纷而完全可能取代现在的Linux的地位的操作系统。时间是1992年。

而在此之前10年20年tcp/ip已经投入实用了

假如允许寻根问祖的话,那么我们可以说tcp/ip最早是在foo操作系统上实现的(foo可以替换为现存的任何类Unix系统)

http://www.levenez.com/unix/history.html

作者: zhllg   发布时间: 2008-03-23

对袄,这个是我疏忽了,有TCP/IP的时候还没FreeBSD呢 - -!

作者: maitr   发布时间: 2008-03-23

代码:
既成事实标准的T C P / I P软件实现来
自于位于伯克利的加利福尼亚大学的计
算机系统研究小组。从历史上看,软件
是随同4.x BSD系统(Berkeley Software
D i s t r i b u t i o n)的网络版一起发布的。它
的源代码是许多其他实现的基础。
----TCP/IP详解<卷一>

.. 看到伯克利和4.XBSD,就想当然了,唉

谢谢提醒

作者: maitr   发布时间: 2008-03-23

多谢各位尤其是arli和maitr的提示和帮助,现在的gentoo又正常了,终于能又用上gentoo了,好开心。

为何bsd不受此影响?或许bsd会自动运行arp -s?

作者: LaoLang_cool   发布时间: 2008-03-23

原来是中了arp攻击了呀。。。
你能再次用gentoo了,恭喜喔

作者: axlrose   发布时间: 2008-03-23

似乎这个做arp poison的技术还不过关嘛
似乎没有开forward
做arp poison怎么能被人发现?哎,丢人啊

作者: zhllg   发布时间: 2008-03-23

引用:
作者: maitr
虽然不大可能,但真的符合ARP攻击……

每次上网前用
#arp -s 192.168.1.1 00:1D:0F:7D:75:28

设定静态ARP地址表 我记得是ip在前面,MAC地址在后面,如果报错就调换下。
MAC地址是你的网关(192.168.1.1)的MAC地址……


IPV6不知道要等到猴年马月了……
引用:
作者: myself
引用:
作者: flyingegg
route add default gw 网关ip
我的gentoo每次启动之后都要这样做,正在寻求一个一劳永逸的方法。
把这句话加在 /etc/conf.d/local.start 里。

引用:
作者: LaoLang_cool
多谢各位尤其是arli和maitr的提示和帮助,现在的gentoo又正常了,终于能又用上gentoo了,好开心。

为何bsd不受此影响?或许bsd会自动运行arp -s?
FreeBSD也是不能免疫的,至少我机器上装的这个在arp攻击下还是需要静态编定网关才能正常使用。

引用:
作者: zhllg
似乎这个做arp poison的技术还不过关嘛
似乎没有开forward
做arp poison怎么能被人发现?哎,丢人啊
我所在学校家属区网就经常会有arp攻击的。网络中的病毒绝大多数来源于那些连windows都不会装的人家的电脑。你告诉他电脑中毒了吧,他就说这是你们网管中心的事,电脑的事他不懂。你停他的网,就每天跟你闹,还非得要你上门给他杀毒。杀完毒没一个礼拜,又中毒了,于是又反复。感谢易用(易被利用)的windows,阿门!

作者: zhou3345   发布时间: 2008-03-25

引用:
作者: zhou3345
FreeBSD也是不能免疫的,至少我机器上装的这个在arp攻击下还是需要静态编定网关才能正常使用。


我所在学校家属区网就经常会有arp攻击的。网络中的病毒绝大多数来源于那些连windows都不会装的人家的电脑。你告诉他电脑中毒了吧,他就说这是你们网管中心的事,电脑的事他不懂。你停他的网,就每天跟你闹,还非得要你上门给他杀毒。杀完毒没一个礼拜,又中毒了,于是又反复。感谢易用(易被利用)的windows,阿门!
哈哈,不过如果划分VLAN就可以解决吧。。

觉得学校都很有钱的样子,以前去网络中心做网线,水晶头要两块钱一个,说是德国进口的……

有阵学生人手一个BT,天天挂着,弄得白天QQ都上不去,更别说开网页了,学校搞了半年,后来花XXX万买个“进口的硬件防火墙”来封掉BT,我那个汗啊……

新盖了宿舍,网络半年后才装好,去网络中心问了无数次(光纤盖楼的时候就拉过来了),答曰 “交换机已经买了,在运输途中。” “入关有点麻烦,交换机扣在海关那边呢” “……”

作者: maitr   发布时间: 2008-03-26