红联Linux门户
Linux帮助

求解关于静态路由~~内容都在图里

发布时间:2011-06-25 19:35:21来源:红联作者:liushihan
求帮助谢谢各位大侠![attach]35051[/attach]
文章评论

共有 21 条评论

  1. daen 于 2011-06-27 14:01:02发表:

    围观....

  2. fsxlp101 于 2011-06-27 13:46:03发表:

    我有点郁闷 , 直连怎么 会不通 呢。 你PC2ping不通10.10.2.1 那就很奇怪,要么是你网卡的问题, 或者是linux上的防火墙规则,一般linux的网卡和windows的网卡, 容易乱,你最后一个个的试试

  3. eku123 于 2011-06-27 09:40:34发表:

    1# liushihan

    根据图示,pc1和pc2应该是在宿主linux上通过vmware建立的虚拟机,且pc1与pc2的网络模式为桥接模式

    这样的话启动eth1与eth2两个网络接口是没有意义的

    正确的方法是将pc1与pc2的网络模式设为桥接模式
    然后都绑定在eth0上
    并且设置为192.168.0.X的网络地址(图中未表示掩码)
    网关设置为192.168.0.1(dlink)
    这样三台机器互相都可以通信,并且都可访问外网。

  4. hstking 于 2011-06-26 22:49:42发表:

    嗯。老实说,我只知道不同网段是不能ping通,但具体为什么。还真没弄得太懂。
    呵呵……
    谢谢了,不然要一直迷糊下去。
    有问题再请教。

  5. age 于 2011-06-26 22:46:43发表:

    另外再说点
    在数据包传递过程中, 除非到达终点, 否则不从帧上解封装的
    所以对于上面的例子
    A-B-C-D-E
    当ping E时, icmp包先被ip头封装, 再被帧封装, 然后在经过每个结点时, 帧头都会被改写, 因为帧使用的源地址和目标地址都只是mac值, 它们只有在本地才有效. 但是帖里所封装的数据包是不会受到任何改变的.因为目标ip地址标识了最终的目的地, 直到它到达E, 才会从帧上解封装, 这时发现它是一个icmp requrest, 因而E机返回一个icmp echo, 同样是先用ip头封装, 再用帧封装, 沿原路返回. A机从而可以显示ping结果
    在整个过程中, icmp包只在A和E二台机上被处理, 所以只能说ping只发生在A和E机中, 而不包括B C D.

  6. age 于 2011-06-26 22:33:28发表:

    [i=s] 本帖最后由 age 于 2011-6-26 22:34 编辑 [/i]

    引用:
    我们讨论了半天的焦点不就是不同网段是否能ping通吗?

    OSI的七层模型我只是知道有这回事,但并不精通。
    有什么错误请提出,我学习。

    另外,我是菜鸟,有问题可以发邮件或者MSN请教吗?
    hstking 发表于 2011-6-26 22:24

    上面的所有讨论都是关于"不同网段是否能ping通"啊
    你如果想深入了解这个东西, 最好还是学学七层模型
    至于错误, 我前面已经指出不少了吧
    想讨论的话可以上irc, 我一般常驻的(so):)

  7. hstking 于 2011-06-26 22:24:58发表:

    我们讨论了半天的焦点不就是不同网段是否能ping通吗?

    OSI的七层模型我只是知道有这回事,但并不精通。
    有什么错误请提出,我学习。

    另外,我是菜鸟,有问题可以发邮件或者MSN请教吗?

  8. age 于 2011-06-26 22:22:43发表:

    [i=s] 本帖最后由 age 于 2011-6-26 22:24 编辑 [/i]

    引用:
    ping 命令发送的是一个icmp包。
    而icmp数据包是一个tcp的数据包。所以icmp的传送和数据包传送是一样的。
    而且我的意思也不是说traceroute原理应该是A ping B, B ping C,....D ping E
    你说的TTL我明白,对此我并无 ...
    hstking 发表于 2011-6-26 22:13

    1. icmp不是tcp包, 而是icmp包, 如前所述, tcp/udp是第4层协议, 而icmp是第三层. 所以它不可能使用tcp封装. 它是以ip包封装的.
    2. ping默认使用的udp包
    3. 传输层就二个协议, tcp, udp. 但却绝不是最重要的. 这里面至少要加上ip. 它是所有上层协议的传送基础. 以路由器为例, 它们转发数据包都是以ip为基准, 而不是tcp/udp. 只有到达目标主机后, 才会从数据包中解压出数据段交给上层协议

  9. hstking 于 2011-06-26 22:13:38发表:

    ping 命令发送的是一个icmp包。
    而icmp数据包是一个tcp的数据包。所以icmp的传送和数据包传送是一样的。
    而且我的意思也不是说traceroute原理应该是A ping B, B ping C,....D ping E
    你说的TTL我明白,对此我并无异议。
    在我看来,目前流行的传输方式只有tcp和udp。所以……

  10. age 于 2011-06-26 22:00:56发表:

    [i=s] 本帖最后由 age 于 2011-6-26 22:09 编辑 [/i]

    引用:
    对,不光是ping,而且网络传输数据包的时候也只能在同网段传输。

    如果按照你的理论,无须同一网段就可以ping 。那同样可以反推一个结论,那就是离目标主机最近的那个route是可以于目标ip不同网段的。
    但在实际情 ...
    hstking 发表于 2011-6-26 21:51


    你应该再去好好看看OSI七层模型, 然后是服务, 接口, 协议三者之间的区别
    一个数据的在不同层的封装方式依次为
    应用层----数据
    传输层----数据段
    网络层----数据包
    数据链路层---帧
    物理层---比特
    ping使用的icmp属于第三层协议, 它的对像是数据包. 它不需要关心下层帧如何转发的. 它期望接收的也是数据包而不是帧
    另外最近一个路由和主机属于同网段这和ping无关, 而是网络基本原理. 如果它们ip不设为同网段, 那根本不通的. 建议你找本网络基本原理的书看看.
    最后要强调的一点是, ping只是icmp协议, 它只是很小的一个协议. ip地址属于ip协议, 它和icmp协议是分开的. 如果二台直连的机子,ip不是同段, 那么必然不通, 这个不通是基于IP地址的, 而不是基于icmp协议

  11. age 于 2011-06-26 21:53:36发表:

    [i=s] 本帖最后由 age 于 2011-6-26 21:54 编辑 [/i]

    [code][allblue@MyLady scrot]$ traceroute -n -I www.baidu.com
    traceroute: Warning: www.baidu.com has multiple addresses; using 119.75.217.56
    traceroute to www.a.shifen.com (119.75.217.56), 30 hops max, 40 byte packets
    1 112.4.49.1 3.891 ms 4.918 ms 4.303 ms
    2 112.4.49.1 4.390 ms 4.515 ms 4.384 ms
    3 221.181.243.21 4.928 ms 4.353 ms 4.514 ms
    4 221.181.243.226 6.984 ms 6.419 ms 5.921 ms
    5 221.181.217.246 6.122 ms 5.720 ms 9.095 ms
    6 * * *
    ^C

    [allblue@MyLady scrot]$ ping -t 1 -c 3 www.baidu.com
    PING www.a.shifen.com (119.75.217.56) 56(84) bytes of data.
    From 112.4.49.1 icmp_seq=1 Time to live exceeded
    From 112.4.49.1 icmp_seq=2 Time to live exceeded
    From 112.4.49.1 icmp_seq=3 Time to live exceeded

    --- www.a.shifen.com ping statistics ---
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2002ms

    [allblue@MyLady scrot]$ ping -t 2 -c 3 www.baidu.com
    PING www.a.shifen.com (119.75.217.56) 56(84) bytes of data.
    From 112.4.49.1 icmp_seq=1 Time to live exceeded
    From 112.4.49.1 icmp_seq=2 Time to live exceeded
    From 112.4.49.1 icmp_seq=3 Time to live exceeded

    --- www.a.shifen.com ping statistics ---
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2001ms

    [allblue@MyLady scrot]$ ping -t 3 -c 3 www.baidu.com
    PING www.a.shifen.com (119.75.217.56) 56(84) bytes of data.
    From 221.181.243.21 icmp_seq=1 Time to live exceeded
    From 221.181.243.21 icmp_seq=2 Time to live exceeded
    From 221.181.243.21 icmp_seq=3 Time to live exceeded

    --- www.a.shifen.com ping statistics ---
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2002ms

    [allblue@MyLady scrot]$ ping -t 4 -c 3 www.baidu.com
    PING www.a.shifen.com (119.75.217.56) 56(84) bytes of data.
    From 221.181.243.226 icmp_seq=1 Time to live exceeded
    From 221.181.243.226 icmp_seq=2 Time to live exceeded
    From 221.181.243.226 icmp_seq=3 Time to live exceeded

    --- www.a.shifen.com ping statistics ---
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2002ms

    [allblue@MyLady scrot]$ ping -t 5 -c 3 www.baidu.com
    PING www.a.shifen.com (119.75.217.56) 56(84) bytes of data.
    From 221.181.217.246 icmp_seq=1 Time to live exceeded
    From 221.181.217.246 icmp_seq=2 Time to live exceeded
    From 221.181.217.246 icmp_seq=3 Time to live exceeded

    --- www.a.shifen.com ping statistics ---
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2002ms[/code]

  12. hstking 于 2011-06-26 21:51:13发表:

    对,不光是ping,而且网络传输数据包的时候也只能在同网段传输。

    如果按照你的理论,无须同一网段就可以ping 。那同样可以反推一个结论,那就是离目标主机最近的那个route是可以于目标ip不同网段的。
    但在实际情况,所有的离目标ip最近的那个route必然是同一网段的。

  13. age 于 2011-06-26 21:46:46发表:

    [i=s] 本帖最后由 age 于 2011-6-26 21:49 编辑 [/i]

    引用:
    好吧,这样吧。
    你执行traceroute www.sina.com.cn,然后再看结果。
    到目标主机的最后一个route 是不是于目标ip是同一网段。
    hstking 发表于 2011-6-26 21:37

    ping和traceroute原理是完全不一样的
    假设A机和E机的网络结构为 A-B-C-D-E, 其中BCD为路由
    那么traceroute E, 它的流程应该是这样
    先ping B, 并把TTL设为1, 这样到达B时, TTL降为0, B将丢失这个报文, 并通告A. 从而可以获得B的IP地址
    再把TTL设为2, 重新发出, 经过B时TTL降为1, 到达C, 这时TTL再降为0, 与上面类似, 又可以获得C的ip
    以此类推, 通过逐渐增加TTL, 就可以把沿途的结点全部标识出来
    至于最后一个显示的IP和目标主机属于同网络这个必然的, 因为E机是直连在路由器上D上的, 它们必然属于同网络.
    按我的理解, 你的意思traceroute原理应该是A ping B, B ping C,....D ping E?
    你可以用ping -t 来模拟整个过程

  14. hstking 于 2011-06-26 21:37:53发表:

    好吧,这样吧。
    你执行traceroute www.sina.com.cn,然后再看结果。
    到目标主机的最后一个route 是不是于目标ip是同一网段。

  15. age 于 2011-06-26 21:33:20发表:

    [i=s] 本帖最后由 age 于 2011-6-26 21:38 编辑 [/i]

    引用:
    ifconfig显示的是wlan0的ip。
    如果图片显示的是ifconfig所有的结果,可以判断使用的是路由自动拨号。
    这于我所说的ping同一网段并不矛盾。

    age你使用的上网方式可以说是标准的nat方式上网。
    wlan0通过路由nat上 ...
    hstking 发表于 2011-6-26 21:00

    如果你仔细看上面那二个ip地址就可以回答你的问题了
    可以通过反证法证明下:
    按你逻辑, 如果我能ping通某个ip, 那么大家应该就是同网段, 从而可以得到221.130.29.16处于同网段的结论, 同理也可以得到119.75.217.56属于同网段. 因而221.130.29.16, 119.75.217.56也是同网段, 但你觉得这二个能是同网段吗? 另外这三个都是公网ip, 也不存在nat.
    最近附上我的公网ip, 112.4.49.x(为安全起见, 最后8位隐去), 这个ip又和上面那二个同网段吗?

  16. hstking 于 2011-06-26 21:00:50发表:

    ifconfig显示的是wlan0的ip。
    如果图片显示的是ifconfig所有的结果,可以判断使用的是路由自动拨号。
    这于我所说的ping同一网段并不矛盾。

    age你使用的上网方式可以说是标准的nat方式上网。
    wlan0通过路由nat上网。路由拨号。你能ping通互联网的网址,并不是由你本机ping的,而是通过路由也就是192.168.1.1这个ip来ping的。
    并且,192.168.1.1拨号成功后必然被分配了一个网络ip。所以……

  17. age 于 2011-06-26 20:40:21发表:

    引用:
    局域网内ping 只能ping通本网段ip。
    能ping通其他网段,那是因为子网掩码的原因。
    比如。192.168.1.33/255.255.0.0是可以ping通f192.168.2.44/255.255.0.0。
    但这也是因为这两个ip处于同一网段。

    楼上的解决方 ...
    hstking 发表于 2011-6-26 19:47

    不知道你从哪里看来的这个方法, 这显然是完全错误的
    按照你的说法, 我只能ping通局域网内, 根本没法应用到internel
    以下面几个操作为例
    先显示下我的ip, 192.168.1.101/24, 标准的私有地址[code][allblue@MyLady scrot]$ ifconfig
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:494 errors:0 dropped:0 overruns:0 frame:0
    TX packets:494 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:39457 (38.5 Kb) TX bytes:39457 (38.5 Kb)

    wlan0 Link encap:Ethernet HWaddr 00:24:2C:E4:BF:CC
    inet addr:192.168.1.101 Bcast:255.255.255.255 Mask:255.255.255.0
    inet6 addr: fe80::224:2cff:fee4:bfcc/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:291271 errors:0 dropped:0 overruns:0 frame:0
    TX packets:239411 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:359015792 (342.3 Mb) TX bytes:27402290 (26.1 Mb)[/code]然后随便从网上找几个ip试试[code]
    #这个是www.sina.com.cn的ip
    [allblue@MyLady scrot]$ ping -c 3 221.130.29.16
    PING 221.130.29.16 (221.130.29.16) 56(84) bytes of data.
    64 bytes from 221.130.29.16: icmp_req=1 ttl=57 time=5.99 ms
    64 bytes from 221.130.29.16: icmp_req=2 ttl=57 time=5.34 ms
    64 bytes from 221.130.29.16: icmp_req=3 ttl=57 time=5.63 ms

    --- 221.130.29.16 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2002ms
    rtt min/avg/max/mdev = 5.343/5.657/5.993/0.265 ms

    #再来一个baidu的
    [allblue@MyLady scrot]$ ping -c 3 119.75.217.56
    PING 119.75.217.56 (119.75.217.56) 56(84) bytes of data.
    64 bytes from 119.75.217.56: icmp_req=1 ttl=46 time=36.6 ms
    64 bytes from 119.75.217.56: icmp_req=2 ttl=46 time=38.7 ms
    64 bytes from 119.75.217.56: icmp_req=3 ttl=46 time=37.1 ms

    --- 119.75.217.56 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2003ms
    rtt min/avg/max/mdev = 36.686/37.512/38.736/0.896 ms

    [/code]

  18. hstking 于 2011-06-26 19:47:35发表:

    局域网内ping 只能ping通本网段ip。
    能ping通其他网段,那是因为子网掩码的原因。
    比如。192.168.1.33/255.255.0.0是可以ping通f192.168.2.44/255.255.0.0。
    但这也是因为这两个ip处于同一网段。

    楼上的解决方案是根据nat服务提出的。
    但楼主的问题不在于这里。他是可以ping通部分ip的。SO......

  19. age 于 2011-06-26 19:16:46发表:

    引用:
    这才是对的啊。要是能ping通,那才有点不可思议了。
    ping命令最基本的原则就是,只能ping通同一网段的ip。
    你能ping通llinux route的3个ip。估计是因为你三个网络接口都再同一个网卡上。
    hstking 发表于 2011-6-26 17:39

    这点就说错了, ping后面的ip是任意的, 甚至广播也行
    从现像来看, 可能的几个问题
    1. 路由器没开通ip转发, 你可以ping通的三个ip都是在路由器上, 而路由器外的ip全ping不通, 这也是最可能原因.[code] echo "1" > /proc/sys/net/ipv4/ip_forward [/code]2. 对于主机pc1, pc2而言, 防火墙是否正常. 对于如图应用, 最起码的要求是[code] #OUTPUT链默认开放, 亦即本机发出的流量全部允许
    iptables -P OUTPUT ACCEPT
    #INPUT链至少开放icmp协议类型0和8, 这是ping使用的协议
    iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT[/code]

  20. hstking 于 2011-06-26 17:39:19发表:

    这才是对的啊。要是能ping通,那才有点不可思议了。
    ping命令最基本的原则就是,只能ping通同一网段的ip。
    你能ping通llinux route的3个ip。估计是因为你三个网络接口都再同一个网卡上。

  21. 佳佳佳佳 于 2011-06-26 14:04:09发表:

    最怕这个东东.