
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/interfaces
de eth0
conectar-se a uma rede externa e eth1
ir 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 iptables
sã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 eth1
e 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/interfaces
possui mais interfaces de rede, mas é semelhante à configuração anterior onde eth0
se 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 lo
tem um servidor de nomes DNS e iptables
se aplica a ele? Por que uma conexão em ponte é usada neste caso?
Suas iptable
regras também parecem diferentes e são colocadas /etc/network/iptables.rules
e 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?