我有一个服务器运行在例如servera.example.com和serverb.example.com上。我希望将所有端口80的流量重定向到servera.example.com到serverb.example.com,并保留所有其他端口的原样。困难在于serverb.example.com具有动态IP,因此不能将IP直接放入iptables规则中。有办法这样做吗?
发布于 2016-01-12 21:57:18
您可以使用一个简单的脚本来查找serverb.example.com的当前IP,只需运行:
[root@user ~]# dig +short serverb.example.com | sed -e '1d'这将返回服务器b的当前IP地址。但是请注意,只有当DNS记录用新IP更新时才能工作。
如何使用此脚本取决于您,例如:
#!/bin/bash
SERVB=`dig +short serverb.example.com | sed -e '1d'`
iptables (your rule goes here) -d $SERVB发布于 2016-01-12 21:50:30
您不能直接使用iptables/netfilter来完成此操作,因为只有在加载规则时才会查询DNS。如果serverb.example.com在加载规则时指向192.0.2.1,并且更改为192.0.2.2,则netfilter将不知道,数据包将被发送到错误的地址。
也许一个反向代理会帮助你。
发布于 2016-01-13 07:34:43
首先,确保DNS记录将自动更新为server.example.com。
第二,如果服务器自动访问了他的DNS记录,请使用@ for中的脚本,但是插入一个命令来刷新iptables表。
第三,设置Cron作业或系统单元,以便定期执行脚本。
https://serverfault.com/questions/748602
复制相似问题