1.
说明目标:用一台或多台位于美国的服务器绑定多个公网IPv4,从而做到按IP实现不同地域落地页、按IP进行广告投放测试隔离并保证出站来源稳定。
准备清单:1) 可申请额外IP的美国云/主机服务商(如Vultr、Hetzner(EU/US节点)、OVH、或专门的IP服务商);2) Linux(Debian/Ubuntu/CentOS)根权限;3) 域名与DNS控制;4) nginx、docker或network namespaces基础。
2.
步骤一:联系服务商申请额外IPv4或购买IP块(按需申请/购买),优先选择IP声明为美国某州或某都市的节点。
步骤二:拿到IP后,使用在线工具(ipinfo.io、MaxMind demo)或命令行curl检查GeoIP归属;若不准确,提交GeoIP更正请求给MaxMind、IP2Location并让服务商提交RIPE或ARIN记录变更。
3.
1) 临时绑定(测试用):
sudo ip addr add 203.0.113.11/32 dev eth0
或使用label:sudo ip addr add 203.0.113.12/32 dev eth0 label eth0:1
2) 永久生效:Ubuntu(netplan)或 /etc/network/interfaces 中加入对应配置,或在CentOS写入 /etc/sysconfig/network-scripts/ifcfg-eth0:1。重启网络服务生效。
4.
问题:绑定IP后,Linux默认可能仍从主IP出站。解决用源地址路由(source-based routing)。
操作示例:
为每个IP创建路由表:在 /etc/iproute2/rt_tables 添加编号和名称,例如 200 ip20311。
加入路由和规则:
sudo ip route add default via 203.0.113.1 dev eth0 table ip20311
sudo ip rule add from 203.0.113.11/32 table ip20311
检查:ip rule show、ip route show table ip20311
5.
方案A(容器+主机SNAT):起多个Docker容器运行不同投放环境,容器网段出站做SNAT映射到指定公网IP。
示例iptables SNAT:iptables -t nat -A POSTROUTING -s 172.18.0.0/16 -o eth0 -j SNAT --to-source 203.0.113.11
方案B(network namespace或macvlan):为每个campaign建立独立namespace,并在namespace内配置对应源IP与路由,出站直接使用该IP,无需SNAT,隔离更彻底。
6.
为不同IP或campaign建不同server块并绑定监听IP:
server { listen 203.0.113.11:80; server_name us-landing.example.com; root /var/www/us1; }
可用不同域名或同域名的不同A记录指向不同IP,实现广告链路到特定落地页。
如果需要按州级别细分,确保所用IP的GeoIP定位与目标州匹配,或在服务器端用GeoIP库对访问方做二次定位并路由到相应内容。
7.
出站IP验证:从服务器执行 curl --interface 203.0.113.11 https://ifconfig.me 或 curl --interface 203.0.113.11 https://ipinfo.io/json,确认返回的IP是绑定IP。
入站地理验证:在外部用浏览器或在线检查工具访问指向该IP的域名,检查GeoIP返回位置与预期一致。用不同IP重复测试,确认落地页内容与IP一一对应。
8.
建立访问日志与出站流量日志:nginx访问日志中记录X-Forwarded-For、真实源IP及server_name;在主机层面用nftables/iptables记录SNAT规则命中。
自动化:用Ansible或Terraform管理IP分配、网卡配置、路由与iptables规则。写监控告警检测IP被封、GeoIP变化或路由异常。
9.
注意平台规则:广告平台(Google、Facebook等)对地域定向和IP操控有严格政策,避免欺骗性定向、Cloaking或绕过地域限制,保存操作日志以备审计。
风险项:供应商IP池被滥用可能导致封禁;IPv4有限且成本高;GeoIP数据库不同步导致定位误差。定期维护并与供应商沟通。
10.
答:购买前向供应商索要IP样例并事先用MaxMind/ipinfo等工具核验归属;购买后向MaxMind、IP2Location提交IP更正请求并让托管商在ARIN/RIPE的注册信息中标注正确的区域;必要时选择本地ISP/机房或使用代理服务商提供已标注地理位置的IP。
11.
答:推荐使用network namespaces或独立Docker网络配合源地址路由(ip rule/ip route)和SNAT;更彻底的方式是为每个campaign使用不同的虚拟网卡或macvlan接口,并在内核层对每个接口建立独立路由表,使进出流量互不干扰。
12.
答:检查1) ip addr 是否正确绑定;2) ip rule/ip route 表是否为每个IP配置了对应默认路由;3) iptables SNAT 规则是否覆盖了容器网段;4) 外部GeoIP与DNS A记录是否指向正确IP;5) 使用curl --interface或外部在线ip检测验证出/入站IP,按顺序排除网络、路由、规则和DNS问题。