Запросы из контейнера в другой контейнер не работают

247
Tijl Van den Brugghen

У меня есть выделенный сервер и на нем установлен 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 

И он просто сидит там ...

Я понятия не имею, что попробовать дальше. Пакеты не возвращаются? Я хотел бы получить некоторую помощь, потому что я был потерян вначале и теперь полностью мертв ...

0

0 ответов на вопрос

Похожие вопросы