Diferenças entre edições de "Rede em LXC"
m (João moveu MACVLAN em LXC para Rede em LXC) |
|||
| (Há 2 edições intermédias do mesmo utilizador que não estão a ser apresentadas) | |||
| Linha 1: | Linha 1: | ||
| + | = Rede em LXC = | ||
| + | |||
| + | == Bridging == | ||
| + | |||
| + | TODO | ||
| + | |||
| + | === Nomes específicos nos interfaces veth === | ||
| + | |||
| + | Para ajudar a gerir e identificar a ligação entre os ''interfaces'' veth criados e os ''containers'', pode-se definir um nome para cada interface criado, criando explicitamente esse ''interface'' no ''container'' (caso contrário, é criado implicitamente pelos perfis que herdar). | ||
| + | |||
| + | lxc config device add <nome_do_container> <interface> nic nictype=bridged parent=<nome_da_bridge> name=<interface> host_name=<interface_no_host> | ||
| + | |||
| + | Exemplo: | ||
| + | |||
| + | lxc config device add webctx eth0 nic nictype=bridged parent=lxdbr0 name=eth0 host_name=webctx0 | ||
| + | |||
| + | == MACVLAN == | ||
Há duas formas de usar MACVLAN com LXC. Uma das formas não permite (pelo menos directamente) comunicação entre a máquina ''host'' e os ''containers'', mas é mais simples de configurar. | Há duas formas de usar MACVLAN com LXC. Uma das formas não permite (pelo menos directamente) comunicação entre a máquina ''host'' e os ''containers'', mas é mais simples de configurar. | ||
| − | = Método simples = | + | === Método simples === |
| − | Este método é muito simples de deixar a funcionar mas, sem trabalho adicional, não permite que os ''containers'' comuniquem com a máquina ''host''. Basta configurar o perfil | + | Este método é muito simples de deixar a funcionar mas, sem trabalho adicional, não permite que os ''containers'' comuniquem com a máquina ''host''. Basta configurar o ''container'' ou, se aplicável, o perfil em uso (neste exemplo o ''default'') para usar o método ''macvlan'' mas aplicado ao ''interface'' físico envolvido na ''bridge'' (por exemplo, o enp6s0). Usando o comando '''lxc profile edit default''' pode-se adaptar a configuração: |
devices: | devices: | ||
| Linha 13: | Linha 30: | ||
Neste exemplo, o eth0 refere-se ao ''interface'' virtual visto pelo ''container'' e o enp6s0 é o ''interface'' físico da máquina ''host''. | Neste exemplo, o eth0 refere-se ao ''interface'' virtual visto pelo ''container'' e o enp6s0 é o ''interface'' físico da máquina ''host''. | ||
| − | = Método avançado = | + | === Método avançado === |
| − | == Importante == | + | ==== Importante ==== |
O pacote NetPlan, usado por padrão pelo Ubuntu Server, ainda não suporta MACVLAN nativamente. O seguinte "remendo" poderá ajudar: | O pacote NetPlan, usado por padrão pelo Ubuntu Server, ainda não suporta MACVLAN nativamente. O seguinte "remendo" poderá ajudar: | ||
Edição atual desde as 10h41min de 11 de abril de 2022
Índice
Rede em LXC
Bridging
TODO
Nomes específicos nos interfaces veth
Para ajudar a gerir e identificar a ligação entre os interfaces veth criados e os containers, pode-se definir um nome para cada interface criado, criando explicitamente esse interface no container (caso contrário, é criado implicitamente pelos perfis que herdar).
lxc config device add <nome_do_container> <interface> nic nictype=bridged parent=<nome_da_bridge> name=<interface> host_name=<interface_no_host>
Exemplo:
lxc config device add webctx eth0 nic nictype=bridged parent=lxdbr0 name=eth0 host_name=webctx0
MACVLAN
Há duas formas de usar MACVLAN com LXC. Uma das formas não permite (pelo menos directamente) comunicação entre a máquina host e os containers, mas é mais simples de configurar.
Método simples
Este método é muito simples de deixar a funcionar mas, sem trabalho adicional, não permite que os containers comuniquem com a máquina host. Basta configurar o container ou, se aplicável, o perfil em uso (neste exemplo o default) para usar o método macvlan mas aplicado ao interface físico envolvido na bridge (por exemplo, o enp6s0). Usando o comando lxc profile edit default pode-se adaptar a configuração:
devices:
eth0:
nictype: macvlan
parent: enp6s0
type: nic
Neste exemplo, o eth0 refere-se ao interface virtual visto pelo container e o enp6s0 é o interface físico da máquina host.
Método avançado
Importante
O pacote NetPlan, usado por padrão pelo Ubuntu Server, ainda não suporta MACVLAN nativamente. O seguinte "remendo" poderá ajudar:
Primeiro passo, criar o script /etc/networkd-dispatcher/routable.d/10-macvlan-interfaces.sh com o seguinte conteúdo:
#! /bin/bash ip link add macvlan0 link eth0 type macvlan mode bridge
Segundo passo, criar um ficheiro de configuração para o NetPlan, com o nome /etc/netplan/macvlan.yaml (nome apenas de exemplo)
network:
version: 2
renderer: networkd
ethernets:
macvlan0:
addresses:
- 192.168.1.6/32
routes:
- to: 192.168.1.2/31
via: 192.168.1.6
metric: 100
- to: 192.168.1.4/31
via: 192.168.1.6
metric: 100
Nota: as rotas e gamas de endereços IP devem ser adaptados ao caso de uso.
Terceiro passo, corrigir as permissões do script:
$ chmod o+x,g+x,u+x /etc/networkd-dispatcher/routable.d/10-macvlan-interfaces.sh
Por fim, aplicar as alterações:
$ netplan apply