V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sniperking1234
V2EX  ›  程序员

IP 隧道建立后无法 Ping 通,求助网络大佬

  •  1
     
  •   sniperking1234 · 2020-10-13 09:35:00 +08:00 · 1758 次点击
    这是一个创建于 1262 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在机器 A 和机器 B 这两台机器上建立了一条 IP 隧道,用的是 IPIP 模式,但是建立好之后无法 ping 通,用同样的方式在另外的两台机器上建立是能够 ping 通的,百思不得其解,求助 v 友帮忙看下。

    A 机器隧道

    tun1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
        link/ipip 192.168.0.27 peer 192.168.0.53
        inet 1.1.1.1 peer 2.2.2.2/32 brd 255.255.255.255 scope global tun1
           valid_lft forever preferred_lft forever
        inet6 fe80::5efe:c0a8:1b/64 scope link 
           valid_lft forever preferred_lft forever
    

    B 机器隧道

    tun1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
        link/ipip 192.168.0.53 peer 192.168.0.27
        inet 2.2.2.2 peer 1.1.1.1/32 brd 255.255.255.255 scope global tun1
           valid_lft forever preferred_lft forever
        inet6 fe80::5efe:c0a8:35/64 scope link 
           valid_lft forever preferred_lft forever
    

    在 A 机器中 ping 2.2.2.2 不通,抓包 tun1 结果是

    09:32:03.045283 IP 1.1.1.1 > 2.2.2.2: ICMP echo request, id 58496, seq 1434, length 64
    09:32:04.069248 IP 1.1.1.1 > 2.2.2.2: ICMP echo request, id 58496, seq 1435, length 64
    09:32:05.093183 IP 1.1.1.1 > 2.2.2.2: ICMP echo request, id 58496, seq 1436, length 64
    09:32:06.117212 IP 1.1.1.1 > 2.2.2.2: ICMP echo request, id 58496, seq 1437, length 64
    

    可见只有发出去的包,没有回来的包。 抓包 A 机器 eth0 网卡结果是:

    09:32:58.309256 IP 192.168.0.27 > 192.168.0.53: IP 1.1.1.1 > 2.2.2.2: ICMP echo request, id 58496, seq 1488, length 64 (ipip-proto-4)
    09:32:58.310069 IP 192.168.0.53 > 192.168.0.27: IP 2.2.2.2 > 1.1.1.1: ICMP echo reply, id 58496, seq 1488, length 64 (ipip-proto-4)
    09:32:59.333270 IP 192.168.0.27 > 192.168.0.53: IP 1.1.1.1 > 2.2.2.2: ICMP echo request, id 58496, seq 1489, length 64 (ipip-proto-4)
    09:32:59.334073 IP 192.168.0.53 > 192.168.0.27: IP 2.2.2.2 > 1.1.1.1: ICMP echo reply, id 58496, seq 1489, length 64 (ipip-proto-4)
    09:33:00.357227 IP 192.168.0.27 > 192.168.0.53: IP 1.1.1.1 > 2.2.2.2: ICMP echo request, id 58496, seq 1490, length 64 (ipip-proto-4)
    09:33:00.358090 IP 192.168.0.53 > 192.168.0.27: IP 2.2.2.2 > 1.1.1.1: ICMP echo reply, id 58496, seq 1490, length 64 (ipip-proto-4)
    09:33:01.381253 IP 192.168.0.27 > 192.168.0.53: IP 1.1.1.1 > 2.2.2.2: ICMP echo request, id 58496, seq 1491, length 64 (ipip-proto-4)
    09:33:01.382149 IP 192.168.0.53 > 192.168.0.27: IP 2.2.2.2 > 1.1.1.1: ICMP echo reply, id 58496, seq 1491, length 64 (ipip-proto-4)
    09:33:02.405262 IP 192.168.0.27 > 192.168.0.53: IP 1.1.1.1 > 2.2.2.2: ICMP echo request, id 58496, seq 1492, length 64 (ipip-proto-4)
    

    既有 request 包也有 reply 包,但是却没有到达机器的 tun1 上,不知道是为什么,这种情况应该怎么解决呢?

    第 1 条附言  ·  2020-10-13 11:02:51 +08:00

    找到原因了,是因为集群中calico的配置把ipip包drop了,现在得想办法把这个规则干掉。感谢各位的解答 image.png

    第 2 条附言  ·  2020-10-13 15:55:46 +08:00
    解决方法:在 calico 配置中添加
    - name: FELIX_EXTERNALNODESCIDRLIST
    value: 192.168.0.0/16
    14 条回复    2020-10-13 11:28:32 +08:00
    defunct9
        1
    defunct9  
       2020-10-13 09:37:22 +08:00   ❤️ 1
    开 ssh,让我上去看看
    sniperking1234
        2
    sniperking1234  
    OP
       2020-10-13 09:41:15 +08:00
    @defunct9 多谢好意,是公司内网,没法开 ssh
    march1993
        3
    march1993  
       2020-10-13 10:15:19 +08:00 via iPhone
    wireshark 抓包分析
    cq65617875
        4
    cq65617875  
       2020-10-13 10:18:29 +08:00
    1.1.1.1
    2.2.2.2
    不是同一个段的啊 并且都是 /32
    这样真的能通的么
    zhangsanfeng2012
        5
    zhangsanfeng2012  
       2020-10-13 10:27:59 +08:00
    看一下网卡丢包信息,还有防火墙配置
    sniperking1234
        6
    sniperking1234  
    OP
       2020-10-13 10:32:22 +08:00
    @cq65617875 是可以的,我在其他的机器用相同的方法配置就能通
    https://i.loli.net/2020/10/13/PdeaxR2kZinoE36.png
    sniperking1234
        7
    sniperking1234  
    OP
       2020-10-13 10:40:25 +08:00
    @zhangsanfeng2012 没有丢包信息,但是我用了 iptables -F 命令之后,就能 ping 通了,过了一会又无法 ping 通,需要再使用 iptables -F,这是怎么回事呢
    sniperking1234
        8
    sniperking1234  
    OP
       2020-10-13 10:42:57 +08:00
    @zhangsanfeng2012 好像是业务上设置了防火墙,我自己查一下
    name1991
        9
    name1991  
       2020-10-13 11:00:15 +08:00
    应该还是 iptables 的问题吧, 可以吧 iptables 的 rule 都 show 出来看看,是不是匹配到某个 rule 了
    sniperking1234
        10
    sniperking1234  
    OP
       2020-10-13 11:03:26 +08:00
    @name1991 是的,的确是 iptables 的问题,和 calico 相关
    Acoffice
        11
    Acoffice  
       2020-10-13 11:07:50 +08:00
    @defunct9 #1 我要笑抽了,每次都有你,每次都是这句话~~~
    barathrum
        12
    barathrum  
       2020-10-13 11:13:55 +08:00
    @sniperking1234 让你开 ssh 可不是好意啊。。
    sniperking1234
        13
    sniperking1234  
    OP
       2020-10-13 11:22:14 +08:00
    @barathrum 哈哈,我也是客气一下
    defunct9
        14
    defunct9  
       2020-10-13 11:28:32 +08:00
    @Acoffice 呵呵,拒绝猜测。上去看是最快的方法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1419 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:26 · PVG 01:26 · LAX 10:26 · JFK 13:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.