Как создать сетевой мост без nat 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
Когда использовались указанные выше конфигурации, хост терял подключение к сети.
Как создать сетевой мост без nat lxd (с использованием сети lxd)?
Вот 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"
Видеть Сетевой API LXD 3.0 для получения более подробной информации о том, что вы можете включить в свой config.
Вот результат выполнения команды brctl после добавления этой конфигурации:
root@lxd01:~# brctl show rtmp
bridge name bridge id STP enabled interfaces
rtmp 8000.ba657ffc1473 no eth5