У меня есть сервер, например, servera.example.com и один на serverb.example.com. Я хочу перенаправить весь трафик порта 80 с servera.example.com на serverb.example.com, а все остальные порты оставить как есть. Сложность в том, что serverb.example.com имеет динамический IP-адрес, поэтому IP-адрес нельзя поместить непосредственно в правило iptables. Есть какой-либо способ сделать это?
Вы не можете сделать это напрямую с помощью iptables / netfilter, так как DNS запрашивается только при загрузке правил. Если serverb.example.com указывает на 192.0.2.1 при загрузке правил и он изменится на 192.0.2.2, тогда netfilter не узнает, и пакеты будут отправлены на неправильный адрес.
Возможно обратный прокси поможет вам.
Сначала убедитесь, что запись DNS для server.example.com обновляется автоматически.
Во-вторых, если сервер автоматически обновляет свою запись DNS, используйте сценарий из @fallen, но вставьте команду для обновления таблиц iptables.
Третий - настройка задания Cron или системного модуля для периодического выполнения скрипта.
Вы можете использовать простой скрипт, чтобы узнать текущий IP-адрес serverb.example.com. Просто запустите:
[root@user ~]# dig +short serverb.example.com | sed -e '1d'
Что вернет текущий IP-адрес сервера b. Но обратите внимание, это будет работать только в том случае, если записи DNS обновлены с новым IP.
Как использовать этот скрипт, решать вам, например:
#!/bin/bash
SERVB=`dig +short serverb.example.com | sed -e '1d'`
iptables (your rule goes here) -d $SERVB