É hora de substituir o servidor antigo por um novo. No servidor antigo, tudo era configurado em bare metal. Com o novo servidor, tento configurar o servidor virtual para uma tarefa específica.
O sistema operacional do host é o Debian 9. Convidados que serão executados no modo HVM (também Debian). Os servidores planejados são: MySql, e-mail (postfix,curys, filtros de spam e todos relacionados a e-mail), servidor web (nginx+php), proxy web (terminador SSL)
Mas a questão é sobre a rede. Eu não quero que os convidados sejam visíveis de fora e eles não tenham IP público. Mas cada convidado deve ver outros convidados.
Criei duas pontes. hostbr0
e xenbr0
. Em hostbr0
eu adicionei a interface física eno1
que tem um IP estático (público). Em xenbr0
eu adicionei vdum1
interface.
vdum1
é interface virtual com dummy
módulo, IP = 192.168.1.1. Para todos os convidados, o endereço IP é da sub-rede 192.168.1.0. Assim, todos os convidados estão em uma rede.
Como posso configurar o iptables, para que os convidados tenham acesso à internet? Não estou pedindo comandos exatos, mas instruções. Preciso configurar o mascaramento? Então a interface de bruxa deve mascarar? É possível definir o encaminhamento entre pontes?
Eu já tentei mascarar pontes de cabine e também interfaces, mas não consigo acessar a Internet a partir do sistema operacional convidado.
Eu também quero controlar o acesso de convidados à internet. Por exemplo, o convidado mysql não precisa de internet (em geral).
No sistema operacional host, usarei shorewall
.
No sistema operacional host, você adiciona uma regra no IPTables que executa SNAT para os pacotes que chegam do convidado interno e vão para fora.
No Shorewall, a entrada se parece com isso em
/etc/shorewall/masq
:Aqui,
eth0
está a interface conectando-se à internet.192.168.10.1
é o endereço IP do convidado que você deseja para NAT.10.10.10.10
é o endereço IP que os pacotes receberão após o SNAT (geralmente é o mesmo que o endereço IP público do sistema operacional do host).