Как создать ненатейный сетевой мост lxd (используя сеть lxd)?

Как создать ненатейный сетевой мост lxd?

Я попробовал ниже сетевые конфиги, затем побежал sudo service networking reload а также lxc stop а также lxc start для рассматриваемого контейнера. Я не смог заставить хост и контейнеры быть на 10.1.1.1/24 подсеть с использованием моста без NAT. При использовании по умолчанию lxdbr0 с NAT все работает нормально.

Я попробовал следующие конфигурации. Сначала без назначения подсети:

config:
  ipv4.nat: "false"
  ipv6.address: none
description: ""
name: testbr0
type: bridge
used_by:
- /1.0/containers/test
managed: true

С назначением подсети:

config:
  ipv4.address: 10.1.1.1/24
  ipv4.nat: "false"
  ipv6.address: none
description: ""
name: testbr0
type: bridge
used_by:
- /1.0/containers/test
managed: true

Когда к вышеуказанным конфигурациям использовался хост потерял сетевое соединение.

Как создать ненатейный сетевой мост lxd (используя сеть lxd)?

1 ответ

Вот MWE:

$ lxc network create nonnatbr                                                                                  
Network nonnatbr created

$ lxc network set nonnatbr ipv4.nat false

$ lxc profile create testprofile
Profile testprofile created

$ lxc profile edit testprofile

$ lxc profile show testprofile

config:
  user.user-data: |
    #cloud-config
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDB4rJv3i6pgeuv62kmXWhscrteOnkEtU0vV3f12O+Ap
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: nonnatbr
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: testprofile
used_by: []

$ lxc launch --profile testprofile ubuntu:18.04 test1

Creating test1
Starting test1

$ lxc launch --profile testprofile ubuntu:18.04 test2

Creating test2
Starting test2

$ lxc list

+---------------+---------+-----------------------+-----------------------------------------------+------------+-----------+
|     NAME      |  STATE  |         IPV4          |                     IPV6                      |    TYPE    | SNAPSHOTS |
+---------------+---------+-----------------------+-----------------------------------------------+------------+-----------+
| test1         | RUNNING | 10.136.201.157 (eth0) | fd42:ece1:b474:82be:216:3eff:fe78:854f (eth0) | PERSISTENT | 0         |
+---------------+---------+-----------------------+-----------------------------------------------+------------+-----------+
| test2         | RUNNING | 10.136.201.158 (eth0) | fd42:ece1:b474:82be:216:3eff:fe96:d195 (eth0) | PERSISTENT | 0         |
+---------------+---------+-----------------------+-----------------------------------------------+------------+-----------+

$ ssh ubuntu@10.136.201.157                                                                                                   

ubuntu@test1:~$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
^C
--- 1.1.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1008ms

ubuntu@test1:~$ ping 10.136.201.158
PING 10.136.201.158 (10.136.201.158) 56(84) bytes of data.
64 bytes from 10.136.201.158: icmp_seq=1 ttl=64 time=0.255 ms
64 bytes from 10.136.201.158: icmp_seq=2 ttl=64 time=0.107 ms
^C
--- 10.136.201.158 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1028ms
rtt min/avg/max/mdev = 0.107/0.181/0.255/0.074 ms

Если вы не используете NAT, вы должны включить внешние интерфейсы в ваш мост. Вы бы сделали это так же, как если бы вы создавали мост в Ubuntu, за исключением того, что LXD 3.0 имеет опцию конфигурации для этого. Это bridge.external_interfaces. У меня также есть ipv4.address, установленный в none на интерфейсе моста. Это удерживает ваш LXD-хост от получения IP-адреса на интерфейсе моста, если это поведение, которое вы ищете.

config:
  bridge.driver: native
  bridge.external_interfaces: eth5
  ipv4.address: none
  ipv4.firewall: "true"
  ipv4.nat: "false"
  ipv6.address: none
  ipv6.nat: "false"

См. LXD 3.0 Network API для более подробной информации о том, что вы можете включить в свою конфигурацию.

Вот вывод команды brctl после добавления этой конфигурации:

root@lxd01:~# brctl show rtmp
bridge name     bridge id               STP enabled     interfaces
rtmp            8000.ba657ffc1473       no              eth5
Другие вопросы по тегам