Назад | Перейти на главную страницу

IPTables пересылает динамический IP

У меня есть сервер, например, 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