У меня есть инфраструктура, в которой все запросы, сделанные внутренними подсетями, должны проходить через сервер в «открытой для мира» подсети, где находится мой экземпляр NAT (я использую AWS).
Я хочу создать имя хоста для внутреннего использования, то есть любые запросы, сделанные внутренними экземплярами на example.com, должны перенаправляться экземпляром NAT на некоторый конкретный внутренний экземпляр.
У меня уже есть haproxy в моем экземпляре NAT. Он перенаправляет входящий трафик на example.com на некоторый внутренний IP-адрес. Если я изменю внутренний экземпляр /etc/hosts
с участием:
172.31.10.123 example.com
(где 172.31.10.123 - это IP-адрес экземпляра NAT)
запросы от такого внутреннего экземпляра правильно перенаправляются. Проблема в том, что мне пришлось бы изменить /etc/hosts
файл для каждого экземпляра, и я не хочу этого.
Итак, поскольку весь трафик в Интернет должен проходить через экземпляр NAT, можно ли проверить, является ли адрес назначения хоста example.com, и перенаправить его на IP-адрес моего конкретного внутреннего экземпляра?
Я не думаю, что неправильно понимаю вопрос, но как насчет того, чтобы добавить правило itpables на ваш экземпляр haproxy, которое проверяет источник и, если он исходит из вашей внутренней сети, NAT на 172.31.10.123?
Haproxy также как acl, который вы можете использовать для перенаправления на основе исходного IP-адреса, iptables не подходит.
вам необходимо использовать внутренний DNS и позволить экземпляру использовать этот DNS. Сделать это можно разными способами:
Лучшая идея - настроить собственный сервер BIND, но для этого вам нужно изучить DNS.
После того, как у вас будет внутренний DNS (BIND или Route53), вам необходимо изменить /etc/resolv.conf или DHCPOption для VPC, чтобы отразить это и сообщить вашим экземплярам о вашем внутреннем DNS.