1.
确定目标:哪些站群要采用多IP出口、每台服务器可用IP数量、流量类型(HTTP/HTTPS/非HTTP)。
准备工作:在台湾IDC/机房取得多个公网IP或/29网段,准备至少2台负载均衡层(HAProxy/LVS)+若干业务节点;确保路由/网关信息由机房提供并记录。
2.
在每台使用多IP的服务器上执行(示例):sysctl -w net.ipv4.conf.all.arp_ignore=1; sysctl -w net.ipv4.conf.all.arp_announce=2。
把IP绑定到回环或同一网卡:ip addr add 1.2.3.5/32 dev eth0 label eth0:1; 若有多个IP建多个别名并确认路由表与网关一致。
3.
HAProxy示例:安装haproxy,配置frontend监听虚IP,backend写入真实后端,balance roundrobin; 增加 option httpchk 用于健康检查。
高可用:在两台LB上部署keepalived,vrrp_instance配置虚拟IP(virtual_ipaddress),优先级主备切换;或使用LVS(ipvsadm)做四层负载,模式可选NAT或DR。
4.
方法一(iptables+ip rule+ip route):为每个出口IP建立路由表和ip rule,例如:iptables -t mangle -A OUTPUT -p tcp --sport 1024:65535 -m owner --uid-owner www-data -j MARK --set-mark 10;ip rule add fwmark 10 table 100;ip route add default via
方法二(应用层代理):在后端使用socks/HTTP代理池,应用按策略选择代理IP,适用于细粒度会话控制。
5.
建立IP元数据表(IP、状态、失败次数、最后使用时间、权重),存储到Redis或MySQL。实现策略:轮询、加权轮询、最少使用、按地区/ISP分配。
实现步骤:1) 新增IP写入表;2) 健康检查脚本定期curl/端口探测,失败计数超阈值则标记隔离;3) 出站分配器根据算法从池取IP并记录使用量;4) 异常IP自动降级,人工复核后恢复。
6.
部署Prometheus+Grafana监控HAProxy/LVS/服务器负载及IP健康;用ELK/Graylog集中收集访问日志及SNAT映射日志,便于回溯。
防护:对外出口IP做速率限制(iptables limit/ipset),对滥用IP自动隔离并触发告警;合规上注意台湾IDC的反滥用规则。
7.
答:设置sysctl参数 net.ipv4.conf.all.arp_ignore=1 和 net.ipv4.conf.all.arp_announce=2,给每个IP做/32绑定或别名,并确保路由表中为每个IP建立对应路由(或使用ip rule/fwmark策略),以防ARP误答与流量走错。
8.
答:实现健康检查(HTTP/SMTP等协议探测)并把失败次数写入IP表,超过阈值将IP标为quarantine并从调度器移除,同时发出告警。恢复时需人工核查或自动累计通过健康检查后再恢复。
9.
答:可使用iptables+SNAT的简单方案:为每个出站策略打mark并用不同的SNAT规则映射到不同公网IP;结合Cron或应用内轮换逻辑即可快速实现,后续再引入Redis做更精细的调度和统计。