Способ назначить контейнер Linux для той же локальной сети, что и хост?
Моя цель - сделать так, чтобы мой контейнер Linux работал на той же локальной сети, что и хост и другие устройства. Потому что мне нужно часто использовать nmap для сканирования MAC-адресов устройств по локальной сети. К сожалению, сканирование nmap работает только тогда, когда все эти машины находятся в одной подсети.
Я пробовал несколько способов сделать это, но все не удалось. Хотя есть много инструкций о том, как это сделать, похоже, что они все для Docker для Linux.
Например, очень подробные инструкции от stackru: Docker на CentOS с мостом к локальной сети также не работает для меня.
Вещи, которые я пробовал:
Macvlan:
похоже, что Docker для Windows 10 не поддерживает Macvlan из-за того, что у меня нет возможности сделать сетевой адаптер Windows родительским.
Разводка трубопроводов:
который работает только в системе Linux, но я использую Windows 10..
Измените bip из daemon.json:
Я попытался, который установит docker0 в статический IP, тогда контейнер все еще не в состоянии пропинговать устройства в локальной сети. Я предполагаю, что это потому, что контейнер размещен в NAT, а изменение моста docker0 ip не сможет достичь моей цели.
Запустите образ с хостом --net:
который ifconfig показывает:
docker0 Link encap:Ethernet HWaddr 02:42:2d:b8:0b:7c
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
inet6 addr: fe80::42:2dff:feb8:b7c/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:540 (540.0 B)
eth0 Link encap:Ethernet HWaddr 02:50:00:00:00:01
inet addr:192.168.65.3 Bcast:192.168.65.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:111 errors:0 dropped:0 overruns:0 frame:0
TX packets:147 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9701 (9.7 KB) TX bytes:10384 (10.3 KB)
hvint0 Link encap:Ethernet HWaddr 00:15:5d:0d:52:27
inet addr:10.0.75.2 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::215:5dff:fe0d:5227/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:359819 errors:0 dropped:1303 overruns:0 frame:0
TX packets:1157 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:54740692 (54.7 MB) TX bytes:103676 (103.6 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:57 errors:0 dropped:0 overruns:0 frame:0
TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:5732 (5.7 KB) TX bytes:5732 (5.7 KB)
Он может пропинговать все в моей подсети, но IP все еще не из моей подсети, а 192.168.65.3.
Затем я пытался изменить eth0 ip на статический IP, отредактировав /etc/network/interface.d/eth0, после перезапуска сетевой службы, eth0 ip из моей подсети изменится на static ip, но сеть больше не работает.
ПОЖАЛУЙСТА, если кто-нибудь здесь знает, как разместить Linux-контейнер Windows 10 в локальной сети так же, как хост.
Моя версия докера
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:12:48 2018
OS/Arch: windows/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:22:38 2018
OS/Arch: linux/amd64
Experimental: false
1 ответ
Я разместил еще один вопрос по аналогичной проблеме здесь: (РАЗРЕШЕНО) DOCKER: Контейнер Linux в Windows 10, как использовать nmap для сканирования MAC-адреса устройства
И на самом деле их цели абсолютно одинаковы - подключить Docker для Windows к вашей локальной сети (физической сети).
Чтобы достичь этой цели, я прочитал сотни и сотни страниц, и, наконец, я понял, как это сделать, подробную информацию см. На следующих страницах.
Пользователь Windows 10 HOME, вы можете обратиться к этой странице для настройки виртуального ящика / Пользователь Windows 10 PROFESSIONAL/ENTERPRISE, вы можете обратиться к этой странице для hyperV https://hub.docker.com/r/qtimmylin/evt_platform/
Я сожалею, что не могу выпустить изображение из-за конфиденциального содержимого, но я считаю, что инструкции достаточно ясны для любого, даже если вы новичок в Docker.
Надеюсь, что это достаточно полезно, поэтому вам не нужно тратить целую неделю на это, как я.
Я все еще работаю над этим, но ваше утверждение, что macvlan
не работает в Windows 10 неверно. Используя некоторые инструкции из связанного вами вопроса, я получил довольно функциональныйmacvlan
сеть, настроенная на Windows 10. Я все еще пытаюсь получить хосты в моей сети, чтобы иметь возможность пинговать хосты на macvlan
сеть.
Вот что я сделал:
- В окне административной оболочки PowerShell:
Set-NetIPInterface -ifindex <interface_index> -Forwarding Enabled
установка (используйтеGet-NetAdapter
получить список сетевых адаптеров и ихifindex
числа) docker network create routed0 --subnet 192.168.2.0/24
заменив 192.168.2.0/24 правильным сетевым номером и битами сетевой маски для сети, которую вы хотите назначитьrouted0
сеть
Для меня это дало сеть докеров, через которую подключенные контейнеры могли успешно общаться с интернет-хостами через маршрутизатор для 192.168.1.0/24. Однако мне еще предстоит выяснить, как настроить окно Windows 10, выступающее в качестве шлюза для 192.168.2.0/24, чтобы фактически действовать как шлюз (и делать такие вещи, как маршрутизация запросов ICMP от хостов на 1.0 / 24 в сеть докеров 2.0. / 24, что это хостинг).