在 Debian 上,使用 iptables 做“负载均衡”通常有两种常见场景:
下面分别说明。
⚠️ 注意:这是基于规则的负载均衡,不是真正的会话保持型 LB,适合简单场景。
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
假设:
iptables -t nat -A PREROUTING -p tcp --dport 80 \
-m statistic --mode nth --every 2 --packet 0 \
-j DNAT --to-destination 10.0.0.10:80
iptables -t nat -A PREROUTING -p tcp --dport 80 \
-j DNAT --to-destination 10.0.0.11:80
✅ 效果:
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 80 \
-m statistic --mode random --probability 0.5 \
-j DNAT --to-destination 10.0.0.10:80
iptables -t nat -A PREROUTING -p tcp --dport 80 \
-j DNAT --to-destination 10.0.0.11:80
Debian 自带 IPVS,比 iptables 更高效。
apt install ipvsadm
modprobe ip_vs
ipvsadm -A -t 1.2.3.4:80
ipvsadm -a -t 1.2.3.4:80 -r 10.0.0.10:80 -m
ipvsadm -a -t 1.2.3.4:80 -r 10.0.0.11:80 -m
支持算法:
❌ iptables 负载均衡问题:
✅ 生产建议:
如果你愿意,可以告诉我:
我可以给你更精确的配置。