Melhor maneira de configurar Ubuntu 20.04 Dekstop Host e Ubuntu 20.04 Server Guest para ter acesso à Internet, SSH e comunicação de host para convidado

Melhor maneira de configurar Ubuntu 20.04 Dekstop Host e Ubuntu 20.04 Server Guest para ter acesso à Internet, SSH e comunicação de host para convidado

ATUALIZAR
De qualquer forma, alguém deveria tropeçar neste post. A solução abaixo, de fato, funciona, votando contra esta questão sem que qualquer feedback/crítica construtiva ou identificação de erro pareça injustificada.

Meta

Eu preciso da melhor maneira de configurar o convidado vbox6.1 do servidor Ubuntu para ter acesso à Internet e ativar o host de desktop do Ubuntu 20.04 para ssh na caixa.

Progresso / Pesquisa
Embora seja uma solução muito comum usar combinações de 2 adaptadores de rede com servidores virtualbox para estabelecer comunicações host-convidado e acesso à Internet para o virtualbox, esses métodos comuns têm certas ressalvas.

método combinado de adaptador em ponte e adaptador NAT - de longe o método mais fácil e rápido, mas vem com a ressalva de que se você usar um killswitch com seu firewall / VPN UFW, muitas vezes você terá que ajustar as configurações do firewall com base em qual wi-fi rede à qual você está conectado porque os endereços do gateway mudam (problema comum para quem usa endereços IP estáticos no vbox). Se você é muito bom com regras de firewall, esse método é para você.

Método combinado de adaptador NAT e adaptador somente host - O adaptador nat fornece acesso fácil à Internet dentro da caixa e o adaptador somente host fornece comunicações de host convidado para aplicativos como o Apache. A ressalva aqui é que alguns aplicativos se configuram com base no endereço IP do adaptador primário no momento da instalação (esse é meu problema atual) e como o endereço IP NAT não consegue se comunicar com o host, isso cria um problema.

A solução na qual estou trabalhando, que talvez seja um pouco difícil de configurar inicialmente, é configurar um adaptador somente de host para ter acesso à Internet por meio do adaptador de rede principal do host.

SIGNIFICADO
UMAdaptador somente host vboxnet0 para fornecer ssh, comunicação host-convidado e acesso externo à Internet para quantos vboxes você desejar com ips estáticos ou dinâmicos... chega de dores de cabeça de conectividade vbox.

Aqui estão os prós e contras junto com minhas etapas de progresso.

Passo 1
Crie um adaptador somente host para sua máquina (vboxnet0). O meu tem o endereço IP 192.168.51.1

PRÓ:
você tem a opção de habilitar o servidor DHCP se planeja ter vários vboxes no mesmo adaptador somente host

Passo 2:
Crie uma configuração de IP estático para o seu vbox (o meu é o servidor Ubuntu 20.04). Opcionalmente, você pode pular esta etapa e usar apenas um IP dinâmico

estou usando

network:
  version: 2
  renderer: networkd
  ethernets:
        enp0s3:
            addresses: ['192.168.51.47/24']
            gateway4: 192.168.51.1
            nameservers:
                addresses: [127.0.0.1, 192.168.51.1, 8.8.8.8]

Pró
Com um ip estático na sua máquina você pode usar SSH na caixa, sem o uso de um segundo adaptador NAT.

Passo três

Crie uma regra de firewall UFW fácil e mínima para comunicações host-convidado

Isto é tudo o que é necessário para configurar um adaptador somente de host para funcionar com UFW:

ufw allow allow in|out on vboxnet0

Pró

  • Usando este método, você pode criar instantaneamente comunicações host-convidado para vários vboxes usando uma única regra de firewall, desde que cada caixa esteja em vboxnet0 (ótimo se você planeja fazer muitos vboxes que precisam de comunicação host-convidado)

Etapa quatro
Criarpermanenteacesso à Internet para vboxnet0 compartilhando o adaptador de rede primário da máquina host usando MASQUERADE

Este é o meu atualPROBLEMA. Só posso criar acesso temporário à Internet para vboxnet0 porque não estou familiarizado o suficiente com tabelas IP e MASQUERADE.

Como solução temporária, estou usando estes 4 comandos dentro de um script bash:

sudo iptables -A FORWARD -o wg0 -i vboxnet0 -s 192.168.51.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

Onde wg0 é o adaptador de rede principal da minha máquina host.

Neste ponto, você deve conseguir executar ping em 8.8.8.8 de dentro do vbox para ter certeza de que ele tem acesso à Internet.

Recebi os comandos acima de:
https://help.ubuntu.com/community/Internet/ConnectionSharing

Alguém pode finalizar/aperfeiçoar o método do adaptador somente host para criar acesso à Internet para um ou vários vboxes?

Parece que isso pode ajudar muitos usuários do Ubuntu. Com este método suas vboxes são "rede portátil" e tenha acesso à Internet com esforço mínimo após a configuração inicial.

A únicacontrasaqui estão: Configuração inicial difícil e vboxes não são acessíveis a outras máquinas em sua LAN, o que é insignificante se você estiver apenas desenvolvendo web local.

Responder1

Esta solução tem como objetivo tornar a vida dos desenvolvedores do Ubuntu muito mais conveniente e segura. Espero que um administrador e/ou outros considerem adequado votar novamente em minha pergunta original, pois é uma pergunta bastante comum para pessoas que desejam usar o Ubuntu para desenvolvimento web.

De qualquer forma, recentemente tive o requisito de software para um adaptador somente host para caixa virtual com acesso à Internet. O que significa que o método de adaptador duplo amplamente utilizado não seria suficiente. Ao resolver esse problema, basicamente me deparei com um ambiente de desenvolvimento ubuntu/virtualbox super seguro, super conveniente e supereficiente. Estou postando todas as minhas etapas abaixo para ajudar outros desenvolvedores web que buscam um ambiente de desenvolvimento web mais eficiente.

Primeiro, uma rápida visão geral:

Método combinado de adaptador em ponte e adaptador NAT

Prós:

  • Fácil e rápido de configurar, se você tiver proficiência em UFW

Contras:

  • requer que 2 interfaces de rede sejam configuradas dentro do convidado
  • convidado com endereços IP estáticos pode ter problemas ao alterar redes wi-fi devido a valores de gateway
  • requer configuração mais avançada de firewall
  • incentiva o uso de /etc/hostspara resolver nomes de domínio locais (fica complicado com o tempo)

Adaptador NAT e adaptador somente host

Prós:

  • Fácil de configurar
  • Configuração mínima de firewall

Contras:

  • requer que 2 interfaces de rede sejam configuradas dentro do convidado
  • alguns pacotes de software utilizam ip padrão na instalação, portanto, endereços padrão 10.XXX não são adequados
    (na minha situação, criar um endereço NAT personalizado por meio das preferências da caixa virtual não ajudaria, pois meu software só é instalado no endereço NAT padrão e o endereço NAT não é roteável, acessível ao host)
  • requer configuração mais avançada de firewall
  • incentiva o uso de /etc/hostspara resolver nomes de domínio locais (fica complicado com o tempo)

A solução mais eficiente:
Adaptador único somente de host com acesso à Internet.

adaptador somente host w. método de acesso à internet

Prós:

  • adaptador único para todos os convidados
  • configuração de firewall simplificada
  • rede simplificada de convidados
  • guest se comporta mais como servidores de produção que geralmente possuem uma única interface de rede "eth0"
  • eliminação completa do /etc/hostsuso

Contras:

  • configuração inicial mais difícil.

Com o que foi dito acima, vamos começar:

Vou assumir:

  1. você tem a versão mais recente do virtualbox instalada
  2. você tem umFirewall UFW com VPN KillSwitchjá configurado. (Preste atenção na seção IP Masquerade, iremos visitá-la novamente.)
  3. você já criou um servidor convidado no virtualbox e adicionou uma chave ssh pub para seu usuário
  4. Um projeto web pronto para acesso web dentro do seu convidado com um domínio que termina com ".test" (ou seja, www.exemplo.teste)

Passo 1

EmCaixa Virtual>arquivos>Gerenciador de rede hostcrie um adaptador somente host para sua máquina (ou seja, vboxnet0). Para este guia, o meu terá o endereço IP 192.168.51.1

Passo 2

EmVirtualbox > Configurações > Rede, clique em "Habilitar adaptador" para Adaptador 1 e para "Anexado a" selecione o nome vboxnet0 que você criou em "Passo 1"

etapa 3

Crie uma configuração de IP estático para o seu servidor convidado (o meu é o servidor Ubuntu 20.04). Isso é necessário para resolução de ssh e nome de domínio, mas você pode usar ip dinâmico se não precisar de ssh/dns.

Para o Ubuntu Server, estou usando:

network:
  version: 2
  renderer: networkd
  ethernets:
        enp0s3:
            addresses: ['192.168.51.47/24']
            gateway4: 192.168.51.1  #**NOTE** Your vboxnet0 ip address is the gateway for your static ip address.
            nameservers:
                addresses: [127.0.0.1, 192.168.51.1, 8.8.8.8]

Lembrar
Execute #netplan applye/ou #netplan --debug generateencontre seus erros de digitação e erros.

Reinicie seu convidado para garantir que as configurações tenham efeito.

Etapa quatro

Crie regras de firewall UFW fáceis e mínimas para permitir comunicações host-convidado. Isto é tudo o que é necessário para configurar um adaptador somente de host para funcionar com UFW:

$sudo ufw allow in on vboxnet0 && sudo ufw allow out on vboxnet0

Neste ponto, você deve executar ping no IP estático do seu convidado do host e fazer ssh no host.

Teste com: ssh -p 22 -i ~/.ssh/id_rsa root@your-guest's-static-ip address

ping -c 5 your-guest's-static-ip address

Passo Cinco

Crie acesso permanente à Internet para vboxnet0 compartilhando o adaptador de rede primário da máquina host usando MASQUERADE. Quando você configurou seu killswitch VPN, você teve que usar o mascaramento de IP para o endereço do seu VPN editando /etc/ufw/before.rules, editaremos este arquivo novamente.

sudo nano /etc/ufw/before.rules

Nesta seção do arquivo:

#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

Adicionar:

-A POSTROUTING -s 192.168.51.1/24 -j MASQUERADE#OBSERVAÇÃOeste é o endereço IP do seu adaptador somente host vboxnet0, que atua como gateway para o endereço IP estático do seu convidado.

Fechar e salvar o arquivo

Agora todo o tráfego 192.168.51.1 será enviado através da interface de rede primária do host, mesmo que mude (ou seja, wi-fi vs lan)

Você pode testar isso acessando seu convidado vbox e na linha de comando, executando:
ping -c 5 8.8.8.8

Se for bem-sucedido, seu adaptador somente de host agora terá acesso à Internet.

Etapa 6

Esta é a etapa final e de longe a mais complexa. Neste ponto, a única coisa que precisa ser feita para que seu ambiente de desenvolvimento web virtualbox esteja pronto para uso é instalar e configurar o dnsmasq para que os nomes de domínio do seu servidor convidado possam ser resolvidos localmente.Barra LateralObviamente, o dnsmasq pode ser usado com os métodos de adaptador de rede combinados mencionados acima para eliminar o uso de /etc/hosts, mas ao usar um único adaptador somente de host, o dnsmasq é necessário para resolver nomes de domínio locais.

  1. Desativar e parar o systemd resolvido

    $ sudo systemctl desativar resolvido pelo systemd
    $ sudo systemctl parar resolvido pelo systemd

  2. Remover link simbólico /etc/resolv.confe remover o arquivo

    $ ls -lh /etc/resolv.conf
    $ sudo rm /etc/resolv.conf

  3. Crie um novo / etc/resolv.concom os seguintes valores:

    $ sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolv.conf' #(resolução da máquina host de nomes de domínio)

    $ sudo bash -c 'echo "nameserver 208.67.222.222" >> /etc/resolv.conf' #(IP do servidor DNS público OpenDNS para internet externa)

    $ sudo bash -c 'echo "endereço IP estático do servidor de nomes do seu convidado" >> /etc/resolv.conf'

  4. Instalar dnsmasq

    $ sudo apto instalar dnsmasq

  5. Adicione .test ao arquivo de configuração dnsmasq:

    $ sudo bash -c 'echo "address=/.test/endereço-ip estático do seu convidado" >> /etc/dnsmasq.conf'

OBSERVAÇÃO: Pessoas que desenvolvem multisites wordpress que precisam de resolução de domínio curinga podem usar:

$ sudo bash -c 'echo "address=/example.test/your-guest's-static-ip address" >> /etc/dnsmasq.conf'
  1. Crie um resolvedor de diretório para o endereço IP estático do convidado:

    $ sudo mkdir -v /etc/resolver && sudo bash -c 'echo "servidor de nomes endereço IP estático do seu convidado" > /etc/resolver/test'

  2. Reinicie o dnsmasq e o gerenciador de rede

    $ sudo systemctl reiniciar dnsmasq $ sudo systemctl reiniciar gerenciador de rede

  3. Teste sua configuração do dnsmasq

a.) abra seu navegador e confirme se você ainda tem acesso externo à Internet

b.) execute dig example.test, você poderá ver o endereço IP estático do seu servidor convidado

c.) no navegador da sua máquina host, abra example.test

BANG!Feito.

Com este ambiente de desenvolvimento da web, você pode alterar as redes wi-fi à vontade, sem problemas de endereço IP de ufw/convidado, você tem apenas um adaptador somente de host que pode ser usado em todos os convidados futuros que você criar, conectar os convidados com mais facilidade e parar completamente de usar o /etc/hostsarquivo para resolver nomes de domínio locais para seus projetos, já que isso é feito automaticamente pelo dnsmasq.

Minhas fontes:
https://unix.stackexchange.com/questions/304050/how-to-avoid-conflicts-between-dnsmasq-and-systemd-resolved
https://brunopaz.dev/blog/setup-a-local-dns-server-for-your-projects-on-linux-with-dnsmasq/
https://www.stevenrombauts.be/2018/01/use-dnsmasq-instead-of-etc-hosts/#configure-dnsmasq
https://linuxize.com/post/how-to-setup-a-firewall-with-ufw-on-ubuntu-20-04/
https://superuser.com/questions/1237463/virtualbox-host-only-with-internet
https://www.stevenrombauts.be/2018/01/use-dnsmasq-instead-of-etc-hosts/#configure-dnsmasq https://medium.com/soulweb-academy/docker-local-dev-stack-with-traefik-https-dnsmasq-locally-trusted-certificate-for-ubuntu-20-04-5f036c9af83d

informação relacionada