这是一个典型的LVS DR模式网络问题。RS上收到SYN包但ens192网卡看不到数据,通常有以下几种原因和排查步骤:
1. 检查VIP配置和ARP抑制
查看VIP配置
# 检查lo网卡是否配置了VIP
ip addr show lo
# 应该显示类似:inet 192.168.1.100/32 scope global lo
# 检查ens192网卡是否有VIP(不应该有)
ip addr show ens192
验证ARP抑制配置
# 确认sysctl配置已生效
sysctl -a | grep -E "(all|lo).arp_(ignore|announce)"
# 应该显示:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
2. 数据包流向分析
LVS DR模式数据包路径:
客户端 → LVS Director(ens192) → RS的lo(VIP) → RS应用程序
RS应用程序 → RS的ens192(直接路由) → 客户端
使用tcpdump抓包分析
# 在RS上同时抓取ens192和lo网卡的流量
tcpdump -i ens192 -nn host <客户端IP> and port <服务端口> -w ens192.pcap &
tcpdump -i lo -nn host <客户端IP> and port <服务端口> -w lo.pcap &
# 或者简化的实时查看
tcpdump -i any -nn host <客户端IP> and port <服务端口>
##3.常见问题排查
###检查路由表
#查看路由表,确保响应包从ens192出去
ip route show
route-n
#如果有到客户端的特定路由,确保通过ens192
ip route add<客户端网络>via<网关>dev ens192
###防火墙规则检查
#临时关闭防火墙测试
systemctl stop firewalld
#或者
systemctl stop iptables
#检查iptables规则
iptables-L-n-t mangle
iptables-L-n-t nat
#清空可能干扰的规则(测试用)
iptables-t mangle-F
iptables-t nat-F
##4.深度诊断步骤
###使用更详细的抓包分析
#详细显示TCP标志位
tcpdump-i any-nn-S-s0 host<客户端IP>-vv
#检查MAC地址是否正确
tcpdump-i ensXX-nn-e host<客户端IP>
#在LVS Director上也抓包对比
tcpdump-i ens192-nn host<RS_IP>-w director.pcap
###内核连接跟踪检查
#查看是否有相关的conntrack记录
conntrack-L|grep<客户端IP>
#如果conntrack有问题,尝试禁用
echo0>/proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal
##5.解决方案
###方案一:重新配置VIP和ARP
#删除现有VIP配置
ip addr del<VIP>/32 dev lo
#重新配置(确保广播地址正确)
ip addr add<VIP>/32 broadcast<VIP>dev lo scope global label lo:<服务名>
#刷新ARP缓存(在RS和交换机上)
arping-c1-U-I ens192<VIP>
#重新加载sysctl
sysctl-p
###方案二:调整路由策略
#添加策略路由,确保响应从ens192出去
ip route add default via<网关>dev ens192 table100
ip rule add from<VIP>/32 table100 priority100
#或者简化:设置默认源地址
ip route replace default via<网关>dev ens192 src<RIP>
关键排查点:DR模式下,入站流量经过Director转发到RS的lo网卡,出站流量直接从RS的物理网卡返回。如果ens192看不到入站SYN是正常的,因为SYN包的目的MAC被改成了RS的MAC,直接发往RS了。
内容由零声教学AI助手提供,问题来源于学员提问




