@BloodVIRUS

Можно ли, зайти в контейнер lxc из сети интернет?

Здравствуйте. У меня есть один жирный сервер, и я постоянно на нем что-то делаю. Для себя, для других, в образовательных целях или еще в каких-то. И пришла идея, чтобы мне не убивать сервер всяким разным специфичным софтом, под каждую задачу поднимать виртуалку. Выбор пал на LXC. Вроде не сложно. Поставил на подопытный сервер, и в пару команд накатил убунту внутри lxc
Все отлично, убунту внутри запускается, внутри контейнера убунту интернет есть, пакеты ставятся. Вроде бы все отлично. Но как сделать так, чтобы в контейнер я мог входить по прямому ip? Чтобы не нужно было входить вначале на сервер, а после из под терминала входить в контейнер. Можно ли так сделать?
Ну и так же вопрос, могу ли я пару сайтов разместить внутри контейнеров? В классическом виде все просто. Покупаю домен, у него делаю А запись на ip сервера, и переходя по домену у меня запросы будут идти на сам сервер. А с lxc подобную магию можно сделать? Весь гугл завален постами 2016х годов, в котором наоборот ведут войну с доступом в интернет из под контейнера. А у меня это уже работает из коробки..
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 3
Melkij
@Melkij
PostgreSQL DBA, рассмотрю предложения о работе
Можно ли так сделать?
Ну и так же вопрос, могу ли я пару сайтов разместить внутри контейнеров?

Можно.
Это чисто настройки сетей вопрос.
Начните вот отсюда: https://wiki.debian.org/LXC/SimpleBridge
Скорей всего у вас один ipv4 и потому интересует настройка бриджа без добавления в него физического интерфейса основной системы + настройка NAT для трафика проходящего от моста.
Для размещения видимых извне сервисов добавляются правила перенаправления входящих пакетов (например на 443 и 80 порты) на внутренний IP этого виртуального bridge.
Ответ написан
Комментировать
@dronmaxman
VoIP Administrator
как сделать так, чтобы в контейнер я мог входить по прямому ip?

Самый просто вариант - это пробросить порт средствами iptables.
export WAN_IP="91.1.1.2"
export LXC_IP="10.1.1.1"
export FORWARD_PORT="443"
iptables -A FORWARD -d $LXC_IP -j ACCEPT
iptables -t nat -A PREROUTING -d $WAN_IP -p tcp -m tcp --dport $FORWARD_PORT -j DNAT --to-destination $LXC_IP:$FORWARD_PORT


Ну и так же вопрос, могу ли я пару сайтов разместить внутри контейнеров?

Наиболее правильным решение будет использовать прокси-nginx. Устанавливаешь прокси на ubuntu, на нем настраиваешь домены и сертификаты, а далее проксируешь запросы на LXC контейнеры.
server {
        listen   80;
        server_name  mysite.example.com;

          location /.well-known/acme-challenge/ {
                access_log off;
                default_type "text/plain";
        }
          return 301 https://$host$request_uri;
}
server {
    listen 443 ssl; # managed by Certbot;
    server_name mysite.example.com;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

ssl on;
    ssl_certificate /etc/letsencrypt/live/mysite.example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mysite.example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

location / {
        proxy_pass http://10.1.1.1:80;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_http_version 1.1;
        proxy_redirect off;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        }

}
Ответ написан
Комментировать
@Drno
докер, если для сайтов или аналогичного

KVM - если надо мучить целиком систему
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы