LVS TUN 模式

🚀 LVS TUN 模式全景解析:跨地域负载均衡的"隧道魔法"

"当 DR 模式受限于局域网,NAT 模式困于性能瓶颈------TUN 模式用 IP 隧道打破空间壁垒。"

------ 本文带你彻底搞懂 LVS 最灵活的工作模式:TUN 模式


📌 一、什么是 LVS TUN 模式?

LVS(Linux Virtual Server) 是 Linux 内核自带的四层负载均衡器,支持三种工作模式:

  • NAT 模式(Network Address Translation)
  • DR 模式(Direct Routing)
  • TUN 模式(IP Tunneling)← 本文主角

TUN 模式 = IP 隧道 + 直接路由 。它通过将原始数据包封装进一个新的 IP 包中,通过"虚拟专用网络"传输到后端服务器,再由后端服务器解封装并直接响应客户端。适用于跨地域、跨网段、高性能要求的场景。

💡 简单说:TUN 是 DR 的"进阶版",解决了 DR 必须在同一广播域的问题!


🖼️ 二、架构图解:TUN 模式下的数据流

TUN 模式的核心流程:

复制代码
[Client] → [Internet] → [LVS (北京)] → [路由器/公网] → [RS-1 / RS-2 (南京)]
                     ↑                          ↓
                     └─────── 响应包直连客户端 ─────

🔹 图中关键元素说明:

组件 IP 地址 角色
Client 49.89.179.13 发起请求的客户端
LVS (北京) VIP: 219.142.145.239 DIP: 74.176.10.123 负载均衡器,对外提供 VIP,对内做隧道封装
RS-1 (南京) RIP: 152.68.174.110 VIP: 219.142.145.239 真实服务器 1,配置了 VIP 并禁止 ARP
RS-2 (南京) RIP: 152.68.174.120 VIP: 219.142.145.239 真实服务器 2,配置了 VIP 并禁止 ARP
路由器 - 连接不同地域的网络设备

💡 注意:所有 RS 必须配置相同的 VIP,并且禁止响应 ARP 请求,避免与 LVS 冲突!


🔄 三、数据包完整生命周期(双向转换)

我们分"请求"和"响应"两个阶段,逐层拆解数据包的变化。


➤ 阶段一:客户端发送请求 → LVS 接收

原始请求包(Client → LVS):
复制代码
Src IP: 49.89.179.13   (客户端)
Dst IP: 219.142.145.239 (VIP)
Src Port: 54321
Dst Port: 80

→ 数据包到达 LVS,触发隧道封装规则。


➤ 阶段二:LVS 执行 IP 隧道封装

LVS 根据调度算法选择一个 RS(比如 RS-1),然后:

✅ 封装新 IP 头:
复制代码
外层 Src IP: 74.176.10.123 (LVS 的 DIP)
外层 Dst IP: 152.68.174.110 (RS-1 的 RIP)
内层原包保持不变:
    Src IP: 49.89.179.13
    Dst IP: 219.142.145.239
📦 封装后的数据包(LVS → RS-1):
复制代码
[外层 IP 头] → [内层 IP 头 + TCP/UDP + Data]

→ 数据包通过公网或专网发送到 RS-1。


➤ 阶段三:RS 解封装并处理请求

RS-1 收到包后:

  • 检查外层目标 IP 是自己(152.68.174.110)→ 接受
  • 解封装,取出内层数据包
  • 检查内层目标 IP 是 VIP(219.142.145.239)→ 因为本机也配置了这个 VIP,所以接受
  • 处理业务逻辑(如 Web 服务)
  • 构造响应包:
响应包(RS-1 → Client):
复制代码
Src IP: 219.142.145.239 (VIP)
Dst IP: 49.89.179.13   (客户端)
Src Port: 80
Dst Port: 54321

⚠️ 注意:这个包的源 IP 是 VIP,但 RS 并没有经过 LVS,而是直接发给客户端!这就是"直接路由"的精髓!


➤ 阶段四:客户端接收响应

客户端收到响应包:

复制代码
Src IP: 219.142.145.239 (VIP)
Dst IP: 49.89.179.13   (客户端)

→ 客户端认为是一直在和 VIP 通信,完全无感知!


🧩 四、OSI 层级变化对比表

层级 字段 请求包 (Client→LVS) 隧道包 (LVS→RS) 响应包 (RS→Client)
应用层 Data GET /index.html GET /index.html HTTP 200 OK
传输层 Port Sport:54321, Dport:80 Sport:54321, Dport:80 Sport:80, Dport:54321
网络层 IP Src:C, Dst:VIP 外层: Src:LVS_DIP, Dst:RIP 内层: Src:C, Dst:VIP Src:VIP, Dst:C
链路层 MAC Dst:LVS_MAC Dst:Router_MAC Dst:Client_GW_MAC

结论:TUN 模式不修改原始数据包的 IP 地址,只是在外层加了一个新的 IP 头,因此对上层协议完全透明!


⚙️ 五、TUN 模式配置要点

1️⃣ LVS 侧配置

复制代码
# 1. 启用 IP 转发 (必须)
echo 1 > /proc/sys/net/ipv4/ip_forward

# 2. 添加虚拟服务 (VIP:80),使用加权轮询 (wrr)
ipvsadm -A -t 219.142.145.239:80 -s wrr

# 3. 添加真实服务器 (RIP:80),指定为 TUN 模式 (-i)
ipvsadm -a -t 219.142.145.239:80 -r 152.68.174.110:80 -w 1 -i
ipvsadm -a -t 219.142.145.239:80 -r 152.68.174.120:80 -w 1 -i

2️⃣ RS 侧配置

复制代码
# 1. 配置 VIP 到 lo 接口 (别名)
ifconfig lo:0 219.142.145.239 netmask 255.255.255.255 up

# 2. 禁止响应 ARP 请求 (关键!)
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

# 3. 可选:关闭防火墙或放行 80 端口
iptables -F

警告:如果 RS 没有正确配置 VIP 和 ARP 参数,会导致 VIP 冲突或无法接收隧道包!


🆚 六、TUN vs NAT vs DR 模式对比速查表

特性 NAT 模式 DR 模式 TUN 模式
是否改 IP ✅ 改(DNAT + SNAT) ❌ 不改 IP,只改 MAC ❌ 不改 IP,只加外层 IP 头
响应是否经 LVS ✅ 是 ❌ 否 ❌ 否
性能 ⭐⭐⭐ 中等 ⭐⭐⭐⭐⭐ 极高 ⭐⭐⭐⭐ 高
是否支持端口映射 ✅ 是 ❌ 否 ❌ 否
是否支持跨网段 ✅ 是 ❌ 否 ✅ 是
是否需要 ip_forward ✅ 是 ❌ 否 ✅ 是
应用场景 小规模、复杂协议、跨网段 高性能 Web、API、同局域网 跨地域、大规模集群

🎯 七、总结:TUN 模式的价值与局限

✅ 优势:

  • 跨地域部署:RS 可以分布在不同城市甚至国家。
  • 高性能:响应包不经过 LVS,减轻 LVS 负载。
  • 协议透明:不修改原始数据包,支持 HTTPS、FTP 等复杂协议。

❌ 劣势:

  • 配置复杂:需要在 RS 上配置 VIP 和调整内核参数。
  • 依赖隧道:需要确保 LVS 和 RS 之间网络可达(公网或专网)。
  • 安全风险:隧道包可能被拦截或篡改(建议结合 IPSec 加密)。

💡 八、延伸思考

  • 如果你想进一步优化性能?👉 学习 DPDK + LVS
  • 如果你需要更高可用性?👉 学习 Keepalived + LVS
  • 如果你想结合容器化部署?👉 学习 Kubernetes Service + LVS

📎 附录:常用调试命令

复制代码
# 查看 IPVS 规则
ipvsadm -Ln

# 查看隧道接口
ip tunnel show

# 抓包验证隧道封装 (在 LVS 上执行)
tcpdump -i any host 152.68.174.110 -nn

# 检查 ARP 配置 (在 RS 上执行)
cat /proc/sys/net/ipv4/conf/lo/arp_ignore
cat /proc/sys/net/ipv4/conf/lo/arp_announce

📣 结语

LVS TUN 模式是跨地域负载均衡的利器,它用"隧道"打破了物理距离的限制,让分布式架构更加灵活高效。掌握它,你就掌握了"如何让全球服务器协同工作"的网络艺术。

喜欢本文?欢迎点赞、收藏、转发!

📬 关注我,获取更多 Linux 网络、负载均衡、云原生干货!

相关推荐
小王要努力上岸2 小时前
LVS NAT 模式
lvs
东北甜妹6 小时前
LVS-DR模式配置
lvs
Ap041514 天前
LVS介绍以及模式实现
lvs
天蓝不会忘记0214 天前
lvs,haproxy,keepalived,nginx,tomcat介绍和实验
nginx·tomcat·lvs
qizhideyu14 天前
LVS(Linux virual server)
linux·运维·lvs
在这habit之下14 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
Yiiz.14 天前
LVS实验
lvs
️️(^~^)14 天前
LVS实验
linux·服务器·lvs
gx234814 天前
1-LVS
linux·服务器·lvs