я использую экземпляр Amazon RDS в качестве ведомого для репликации моего голого сервера MySQL в качестве резервной копии.
Я авторизую IP-адрес экземпляра RDS в брандмауэре моего сервера следующим образом:
# iptables \
--insert INPUT \
--source xxxxxxx.yyyyyyy.eu-west-1.rds.amazonaws.com \
--protocol tcp \
--destination-port mysql \
--jump ACCEPT
Однако это работает нормально iptables
разрешает хост экземпляра в его копию EC2 и вместо этого сохраняет этот:
# iptables --list
...
ACCEPT tcp -- ec2-x-x-x-x.eu-west-1.compute.amazonaws.com anywhere tcp dpt:mysql
Проблема в том, что всякий раз, когда экземпляр RDS перезапускается / изменяется / обновляется, обычно перемещается в другой экземпляр EC2, так что даже если *.rds.amazonaws.com
хозяин остается прежним, *.compute.amazonaws.com
изменения хоста, и экземпляр RDS теряет соединение с моим сервером.
Решение состоит в том, чтобы прямо сейчас я вручную перевыпустил iptables
команда.
Есть ли решение, позволяющее постоянно разрешать входящие соединения с IP-адреса, если домен в конфигурации брандмауэра разрешает этот IP-адрес?
Я бы принял решение, включающее firewalld
также.
Нет. (Linux) брандмауэры управляются IP, а не доменными именами, и используемые домены разрешаются, когда брандмауэр загружается / перезагружается - иначе это сильно повлияет на производительность.
Firewalld не поможет, поскольку это действительно оболочка для iptables.
Возможно, вам повезет, если вы часто перезагружаете правила брандмауэра или выполняете проверки и удаляете и читаете соответствующее правило, если изменения происходят с помощью сценария (например, через crontab).