понедельник, 18 ноября 2019 г.

Creating a new LXD profile for macvlan

Macvlan против сетевого моста
Ubuntu 18.04 LXD / LXC, ZFS, Docker и расширенные сети
How to make your LXD containers get IP addresses from your LAN using macvlan
Соединение хост-контейнер с мостом Macvlan
LXC и macvlan, хост-соединение для гостя
Giving the host a macvlan
Netplan configuration examples
Назначить сеть для сети Macvlan 


Нет никакой реальной разницы в безопасности между этими двумя, так как root на хосте имеет доступ к ядру, так что вы всегда можете предположить, что он так или иначе будет иметь доступ к сетевому трафику вашего контейнера.
Основные моменты, которые следует учитывать при использовании macvlan:
  • macvlan имеет тенденцию работать быстрее, чем мосты, так как пропускает целую кучу кода ядра
  • при использовании macvlan хост не сможет связываться с контейнером через интерфейс macvlan при использовании netplan
  • Количество устройств Macvlan может быть ограничено в зависимости от аппаратных ограничений вашей физической сетевой карты.
  • отладка проблем, связанных с macvlan, может быть очень сложной, поскольку она может не работать одинаково на всех драйверах ядра и физических картах
Если ни одно из ограничений не повлияет на вашу настройку, сделайте это. Если вам нужна большая гибкость, возможность отладки или более воспроизводимая среда, мостовое соединение может быть предпочтительнее (openvswitch является одним из способов оптимизации производительности).

Исправление ошибки в ubuntu 18.04
$ sudo crontab -u root -l | { sudo cat; sudo echo "@reboot ip link set enp0s3 promisc on"; } | sudo crontab -
 
$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: enp0s3
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:


$ lxc profile show default
config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: macvlan
    parent: enp0s3
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: default
used_by: []

Если не установили crontab
$ sudo ip link set enp0s3 promisc on 

$ lxc launch ubuntu:18.04 net1
$ lxc list
+------+---------+----------------------+------+------------+-----------+
| NAME |  STATE  |         IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+----------------------+------+------------+-----------+
| net1 | RUNNING | 192.168.0.196 (eth0) |      | PERSISTENT | 0         |
+------+---------+----------------------+------+------------+-----------+

=================================================================
Creating a new LXD profile for macvlan
$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

$ lxc profile list
$ lxc profile copy default lanprofile
$ lxc profile show lanprofile

config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: lxdbr0
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: lanprofile
used_by: []
Если не установили crontab
$ sudo ip link set enp0s3 promisc on
$ ip route show default 0.0.0.0/0
default via 192.168.1.1 dev enp0s3 proto dhcp src 192.168.1.111 metric 100

$ lxc profile device set lanprofile eth0 nictype macvlan
$ lxc profile device set lanprofile eth0 parent enp0s3

$ lxc profile show lanprofile
config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: macvlan
    parent: enp0s3
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: lanprofile
used_by: []

$ lxc launch -p lanprofile ubuntu:16.04 net1
$ lxc list
+------+---------+----------------------+------+------------+-----------+
| NAME |  STATE  |         IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+------+---------+----------------------+------+------------+-----------+
| net1 | RUNNING | 192.168.1.225 (eth0) |      | PERSISTENT | 0         |
+------+---------+----------------------+------+------------+-----------+

=================================================================



$ lxc config set net1 raw.lxc 'lxc.net.0.ipv4.address = 192.168.0.150/24'
$ lxc restart net1


$ lxc config unset net1 raw.lxc
$ lxc restart net1

$ lxc config show net1

$ lxc config get net1 volatile.eth0.hwaddr
00:16:3e:ef:0d:63

Решение проблемы связи с хостом

Giving the host a macvlan

1. Одновременное использование netplan и ifupdown

$ sudo apt install ifupdown
$ sudo nano /etc/network/interfaces

# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown
#auto enp0s3
#iface enp0s3 inet dhcp

auto macvlan0
iface macvlan0 inet dhcp
        pre-up route del default
        pre-up route del -net 192.168.0.0 netmask 255.255.255.0
        pre-up ip link add link enp0s3 name macvlan0 type macvlan mode bridge

$ sudo reboot 

2. Установка ifupdown и удаление netplan
Замена netplan на networking Ubuntu 18.04 LTS Bionic
Change netplan renderer from networkd to NetworkManager
Ubuntu 18.04: switch back to /etc/network/interfaces

$ sudo apt install ifupdown
$ sudo nano /etc/network/interfaces

# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown
auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet dhcp

auto macvlan0
iface macvlan0 inet dhcp
        pre-up route del default
        pre-up route del -net 192.168.0.0 netmask 255.255.255.0
        pre-up ip link add link enp0s3 name macvlan0 type macvlan mode bridge


$ sudo nano /etc/netplan/01-netcfg.yaml
$ sudo mv /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.old
$ sudo reboot



Комментариев нет:

Отправить комментарий