背景:VPC网络内,用户两台虚机,VM1 138,VM2 181,用户需要把138流量牵引至181,所以将138 网关改成 181,当客户端 138 发起外网ping 114.114.114.114 时,无法联网
排查原因:
- 通过tcpdump抓网关网卡包
网关181回包后138 收不到
![/images/openstack/image-20210220172329798.png)
抓取网关虚机的宿主机包发现,只回了一个包(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 | 1. 放行包 (不能永久生效) |
1 | 2. 把port的安全组关掉 |