Entenda as diferenças entre duas configurações de rede para MAAS

Entenda as diferenças entre duas configurações de rede para MAAS

Estou tentando entender as diferenças entre duas configurações de rede para MAAS. Meu entendimento é que ambos realizam as mesmas tarefas onde a primeira rede se conecta à internet e a segunda é gerenciada pelo MAAS. A segunda rede é então configurada para encaminhar o tráfego através da interface de rede pública.

Apesar de obter os mesmos resultados, a configuração parece bastante diferente e é aí que reside a minha confusão.

Primeira configuração

A primeira configuração sugerida vem do seguintePágina Wiki de soluções Cloudbase. Eles propõem uma maneira simples /etc/network/interfacesde eth0conectar-se a uma rede externa e eth1ir para uma rede interna e receber um endereço estático:

# The primary network interface (external)
auto eth0
iface eth0 inet dhcp

# The secondary NIC (used internal for MAAS)
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

As regras correspondentes iptablessão então mantidas em /etc/rc.local. Pelo que sei, isso tem algo a ver com o encaminhamento do tráfego de rede entre eth1e eth0.

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Segunda configuração

A segunda configuração vem doGuia do instalador Ubuntu Openstack para vários instaladores. O arquivo deles /etc/network/interfacespossui mais interfaces de rede, mas é semelhante à configuração anterior onde eth0se conecta a uma rede externa e eth1é interna:

# The loopback network interface
auto lo
iface lo inet loopback
  dns-nameservers 127.0.0.1
  pre-up iptables-restore < /etc/network/iptables.rules

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet manual

auto br0
iface br0 inet static
  address 172.16.0.1
  netmask 255.255.255.0
  bridge_ports eth1

As perguntas que surgem na minha cabeça neste estágio são: por que ele lotem um servidor de nomes DNS e iptablesse aplica a ele? Por que uma conexão em ponte é usada neste caso?

Suas iptableregras também parecem diferentes e são colocadas /etc/network/iptables.rulese assumem que isso permite o encaminhamento do tráfego:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.16.0.1/24 ! -d 172.16.0.1/24 -j MASQUERADE
COMMIT

Resumo

Alguém pode ajudar a explicar o que está fazendo de diferente e por quê?

Deixe-me saber se esta pergunta é muito grande e posso dividi-la em perguntas separadas, mas, em primeiro lugar, pensei que isso fornecia mais contexto.

Responder1

Ambas as configurações são praticamente iguais, com algumas nuances.

iface lo inet loopback
  dns-nameservers 127.0.0.1
  pre-up iptables-restore < /etc/network/iptables.rules

Esta configuração garantirá que mesmo que o cabo eth0 esteja desligado durante a inicialização, você ainda terá um resolvedor de DNS e regras de firewall definidas (é difícil se livrar do dispositivo de rede de loopback, certo?). É claro que este exemplo pressupõe que você terá um serviço de resolução de DNS em execução localmente.

Não vejo problemas em configurar um dispositivo bridge. Esta configuração deve funcionar sem problemas, mas não pense que você precisa dela no seu caso, a menos que você esteja planejando algo que irá utilizá-la (máquinas virtuais KVM, por exemplo).

No primeiro caso, as regras do iptables são escritas para um script de shell, por isso sua sintaxe parece diferente de /etc/network/iptables.rules, que deve ser usada com o iptables-restore.

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.16.0.1/24 ! -d 172.16.0.1/24 -j MASQUERADE
COMMIT

Há apenas uma regra aqui e ela permite que a sub-rede 172.16.0.0/24 seja mascarada.

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

As regras acima permitemqualquersub-rede proveniente de eth1 até eth0 seja mascarada com alguma filtragem envolvida.

Pessoalmente, prefiro uma mistura de configurações acima.

Responder2

A primeira configuração de rede é bastante clara. O arquivo /etc/network/interfaces é familiar a todos e é claro que o encaminhamento de IP através de iptables é necessário ao usar o MAAS, para fornecer Internet aos nós que estão sendo gerenciados pelo MAAS.

A segunda configuração além da parte DNS e da parte br0 é compreensível. A parte do DNS é fazer com que o servidor MAAS perceba que ele próprio está hospedando os serviços DNS. Essa linha pode ser mudada para /etc/resolve.conf que inclui outras configurações de DNS. Se esta entrada DNS não for feita você encontrará este erro durante o bootstrap do JUJU:https://github.com/Ubuntu-Solutions-Engineering/openstack-installer/issues/901

No entanto, não tenho muita certeza sobre a ponte br0. Essa configuração de rede realmente funcionou?

informação relacionada