ОС: Ubuntu 15.10
LXD: 2.0.0.rc5
Я хотел бы знать, как получить доступ к контейнеру с другого компьютера в той же локальной сети.
Адрес моего ПК (хост LXD): 192.168.1.112 (enp3s0)
Контейнер Xenial: 10.0.3.181 (eth0), 10.0.4.1 (lxcbr0)
Другие ПК (Fedora 23): 192.168.2.118 (wlp3s0)
Я могу пинговать с другого ПК на хост LXD и так далее.
Необходимо сказать другой компьютер, как достигнуть контейнера, потому что другой компьютер находится на другой подсети, чем контейнер. Таким образом, необходимо настроить "маршрут". Ниже демонстрационный маршрут, который можно создать на другом компьютере. Это говорит, "для получения к контейнеру (.181) первым проходят хост (.112) использование устройства, которое находится в той же сети как хост (eth0). Если другой компьютер использует другое устройство, затем изменяются соответственно. Обратите внимание, что этот маршрут не является постоянным; это будет не , переживают перезагрузку. Google, чтобы найти, как настроить постоянный маршрут.
sudo ip route add 10.0.3.181 via 192.168.1.112 dev eth0
Существует несколько различных способов выполнить то, что Вы хотите.
Опции 1 и 2 требуют, чтобы передача IP была включена на хосте:
# run time:
sudo sysctl -w net.ipv4.ip_forward=1
# permanent:
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/30-virt-network
Самый Легкий 1, если Вы хотите получить доступ к определенному сервису как http (порт 80) на госте (Вы получаете доступ к гостевому порту 80 с хостом ip-address+port), но Вы не можете выполнить сервисы хоста на тот же самый порт.
# on lxd host: (-i HOSTDEVICE to lan, usually enp3s0 or eth0)
sudo iptables -t nat -A PREROUTING -i enp3s0 -p tcp -m tcp --dport 80 -j DNAT --to 10.0.3.181:80
# making this permanent is left to the reader (because that depends on your choice of fw setup)
Опция 2 более хитра и зависит от того, насколько можно изменить сеть.
Проверка, которая (sudo iptables -L -n
) говорит, что цепочка ВПЕРЕД (политика ПРИНИМАЮТ) или sudo iptables -I FORWARD -s 192.168.2.118 -j ACCEPT
позволяют его конкретно. Теперь или на сетевом брандмауэре направляют 10.0.3.0/24 к Вашим 192.168.1.112 хостам или тесту с маршрутом на 192.168.2.118.
sudo ip route add 10.0.3.181 via 192.168.1.112 dev wlp3s0
опция Third принесла бы Вашим lxd гостям к Вашей LAN как часть LAN. См. Инструкция преобразовать eth0 (enp3s0 в Вашем случае) для образования моста , как сделать это. Короче говоря:
eth0
или enp3s0
к тому мосту enp3s0
) Связывает lxd гостевые устройства с тем мостом
stop network-manager
brctl addbr br0
brctl addif br0 enp3s0
ifconfig enp3s0 up
ifconfig br0 up
dhclient br0
lxc profile edit default
- change lxcbr0 to br0