В настоящее время я пытаюсь настроить свой сервер на использование контейнеров, чтобы ограничить использование ОЗУ и ЦП для всех программ. Моя проблема в том, что я хотел бы, чтобы все приложения в разных контейнерах слушали один и тот же IP на разных портах, но сохраняли гибкость и имели другие контейнеры со специальными IP-адресами и имели полный доступ к ним. Другие IP-адреса используют псевдонимы eth0 (eth0:0, eth0:1 и т.д.).

+----+ +----+ +----+
|IP 1| |IP 1| |IP 2| IP
|WEB | | TS | |GAME| Application
| 80 | |9987| |ALL | Port(s)
+----+ +----+ +----+
  |     |      |
  +-----+------+
        |
     +------+
     |SERVER|
     +--+---+ 
        |
    +---+----+
    |Internet|
    +--------+

Я много искал, но не смог найти ничего, что помогло бы мне. Мне жаль, когда это дубликат, я просто не могу ничего найти ... Может быть, это потому, что я искал неправильные ключевые слова, или потому что это невозможно ... В любом случае, спасибо за чтение!

1 ответ1

1

Технология, которую вы ищете, называется Destination NAT. В системе Linux это можно сделать с помощью iptables.

Поскольку ваш вопрос не дает каких-либо подробностей о контейнерной технологии, которую вы планируете использовать, это зависит от того, как эти технологии будут подключаться к локальной сети и самой хост-системе - обычно с использованием мостового интерфейса и виртуальных сетевых интерфейсов для контейнеров.

В этом случае вы можете посмотреть здесь:http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO-6.html#ss6.2

Измените адреса назначения на 5.6.7.8

iptables -t nat -A PREROUTING -i eth0 -j DNAT - до 5.6.7.8

Измените адреса назначения на 5.6.7.8, 5.6.7.9 или 5.6.7.10

iptables -t nat -A PREROUTING -i eth0 -j DNAT - до 5.6.7.8-5.6.7.10

Изменить адреса назначения веб-трафика на 5.6.7.8, порт 8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT - до 5.6.7.8:8080

Затем вы можете иметь некоторые правила DNAT iptables на вашем хост-сервере, которые будут перезаписывать входящие пакеты на определенных портах или для определенных IP-адресов в целевые объекты в вашей виртуальной сети с мостовыми соединениями.

Однако вам также придется настроить некоторые правила Source NAT, чтобы трафик из этих контейнеров также изменялся в соответствии с IP-адресами, которые эти контейнеры должны иметь для внешнего мира.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .