У меня есть выделенный сервер и на нем установлен LXD. Я создал один контейнер для каждого приложения и один контейнер как прокси для других контейнеров. Когда приходит запрос (на IP моего выделенного сервера), он перенаправляется в прокси-контейнер, а затем отправляет его в контейнеры приложения.
Это правила iptables
я использую для переадресации портов 80
и 443
на выделенном сервере на порты 80
и 443
в моем контейнере (ip 10.1.232.241
):
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.1.232.241:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 10.1.232.241:443
Это хорошо работает для любого запроса, поступающего извне. Он не работает для запросов, отправляемых с выделенного сервера на сайт, указывающий на выделенный сервер. Давайте рассмотрим пример: у меня есть сайт blog.kindlyfire.me
указывающий на мой выделенный сервер. Запуск curl blog.kindlyfire.me
работает на моем локальном компьютере, но не работает при запуске непосредственно на компьютере (примечание: он не работает ни в одном из контейнеров). Чтобы обойти это, я также продвигаюсь в цепочке OUTPUT
:
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 10.1.232.241:80
iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to-destination 10.1.232.241:443
Запросы с моего выделенного сервера на общедоступный ip теперь выполняются нормально. Но они еще не бегут из моих контейнеров! Я подумал, потому что контейнеры используют интерфейс lxdbr0
, я должен был бы также переслать это:
iptables -t nat -A PREROUTING -i lxdbr0 -p tcp --dport 443 -j DNAT --to-destination 10.1.232.241:443
iptables -t nat -A PREROUTING -i lxdbr0 -p tcp --dport 80 -j DNAT --to-destination 10.1.232.241:80
Теперь я больше не получаю этот вывод (команда запускается внутри одного из моих контейнеров):
$ curl blog.kindlyfire.me
curl: (7) Failed to connect to blog.kindlyfire.me port 80: Connection refused
Но вместо этого я получаю это:
$ curl blog.kindlyfire.me
И он просто сидит там ...
Я понятия не имею, что попробовать дальше. Пакеты не возвращаются? Я хотел бы получить некоторую помощь, потому что я был потерян вначале и теперь полностью мертв ...