openstack-记一次虚机代理网关网络不通问题排查

背景:VPC网络内,用户两台虚机,VM1 138,VM2 181,用户需要把138流量牵引至181,所以将138 网关改成 181,当客户端 138 发起外网ping 114.114.114.114 时,无法联网

排查原因:

  1. 通过tcpdump抓网关网卡包

​ 网关181回包后138 收不到

![/images/openstack/image-20210220172329798.png)

  1. 抓取网关虚机的宿主机包发现,只回了一个包(tap网卡包回了)

    #tcpdump -i any -nn icmp and host 114.114.114.114

    所以怀疑安全组限制了(包只过了tap网卡后被丢弃)

    追踪这块网卡的iptables

    1
    2
    3
    4
    5
    6
    #iptables -nvL neutron-openvswi-ib8096cab-2
    Chain neutron-openvswi-sb8096cab-2 (1 references)
    pkts bytes target prot opt in out source destination
    3818 651K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
    3232K 229M RETURN all -- * * 192.168.123.181 0.0.0.0/0 MAC FA:16:3E:29:77:83 /* Allow traffic from defined IP/MAC pairs. */
    5558 381K DROP all -- * * 0.0.0.0/0 0.0.0.0/0 /* Drop traffic without an IP/MAC allow rule. */

    发现DROP的大小一直在变大,定位到问题了,那原因是什么呢?

因为 neutron默认防止arp欺骗,只允许源IP和MAC是自己的包才放行,而用户自己做了网关,导致源IP变了,所以被DROP了。

解决办法:

1
2
3
1. 放行包  (不能永久生效)
#iptables -t filter -I neutron-openvswi-sb8096cab-2 -s 0.0.0.0/0 -j RETURN

1
2
3
2. 把port的安全组关掉
#neutron port-update b8096cab-2536-4d0d-851a-1056b81f11ca --no-security-groups
#neutron port-update b8096cab-2536-4d0d-851a-1056b81f11ca --port_security_enabled=False