Мостовая сеть в Docker против мостовой сети в VMWare / VirtualBox, похоже, сильно отличается. Зачем? - PullRequest
0 голосов
/ 11 июля 2019

TL; DR - Почему Docker называет сетью по умолчанию мостовую сеть, когда она, похоже, очень похожа на сеть NAT.

Давайте начнем с рассмотрения того, как -
1) VMWare или VirtualBox управляет сетью для виртуальных машин. Скажем, IP-адрес хоста - это случайный 152.50.60.21, а сетевой CIDR - 152.50.60.0/24.
. Мостовая сеть - Любая виртуальная машина, подключенная через этот интерфейс, может иметь любой свободный IP в сети, к которой подключен хост. Таким образом, если IP 152.50.60.30 свободен, то VM может связываться с этим IP. Аналогично, вторая виртуальная машина может иметь IP 152.50.60.32, если этот IP свободен. Мостовая сеть подключает виртуальные машины к той же сети, к которой подключен хост. Любая машина в Интернете может подключаться к виртуальным машинам, а виртуальные машины могут напрямую подключаться к Интернету (конечно, если сеть HOST подключена к Интернету).
Сеть NAT - NAT - это отдельная сеть от сети, к которой подключен хост. И VMWare может принять любой действительный CIDR (чтобы не усложнять вещи, я буду ссылаться только на частные зарезервированные блоки. Хотя, если я прав, любой CIDR в порядке.) Безопасно, эта новая сеть NAT создается на хосте и доступна только на хосте. может иметь CIDR 10.0.0.0/8 или 172.16.0.0/12 или 192.168.0.0/16 (или любую подсеть этих сетей). Я выбираю 10.0.0.0/8. Таким образом, две виртуальные машины, вращающиеся на хосте и подключенные через сеть NAT, могут иметь IP-адреса 10.0.3.3 и 10.0.3.6. Находясь в сети NAT, виртуальные машины не видны внешнему миру за пределами хоста, т. Е. Виртуальные машины не доступны внешнему миру (за исключением конфигурации DNAT / перенаправления портов на хосте). Но виртуальные машины могут получать доступ к внешнему миру / интернету / интрасети, хотя SNAT, предоставляемый хостом, то есть IP-адреса виртуальных машин, никогда не подвергается воздействию внешнего мира.

Справочник по VMWare Doc: Общие сведения о сетевых конфигурациях

Далее, давайте посмотрим на Docker -
Сеть докеров по умолчанию
Когда образ запускается на HOST (чей IP выше 152.50.60.21) с использованием сети докеров по умолчанию (которую он называет Bridge Network), новый контейнер может получить IP (скажем) 172.17.0.13 из сети - 172.16. 0.0 / 12 (по крайней мере, в моем env). Аналогично, второй контейнер может получить IP 172.17.0.23. Для доступа в Интернет эти контейнеры используют SNAT, предоставленный HOST. И любая машина в Интернете / интрасети не может получить доступ к Контейнерам, кроме как через переадресацию портов, предоставляемую HOST. Таким образом, контейнеры не видны миру, кроме ХОСТА. Глядя на это, я предполагаю, что сетью по умолчанию, предоставляемой Docker, является сеть NAT, но Docker любит называть ее сетью моста.

Итак, кто-нибудь может сказать, где что-то напутано или как я смотрю на сети Bridge / NAT?

...