AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1387393
Accepted
nightwatch
nightwatch
Asked: 2022-01-17 03:52:43 +0800 CST2022-01-17 03:52:43 +0800 CST 2022-01-17 03:52:43 +0800 CST

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

  • 772

ATUALIZAÇÃO
Em qualquer caso, alguém deve tropeçar neste post. A solução abaixo, de fato, funciona, votar para baixo para esta questão sem qualquer feedback / crítica construtiva ou identificação de erros parece injustificado.

Meta

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

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

método de combinação 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 precisará 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 aqueles que usam endereços IP estáticos no vbox). Se você é muito bom com regras de firewall, então este método é para você.

Método de combinação 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 na instalação ( esse é meu problema atual ) e como o endereço IP NAT não pode se comunicar com o host, isso cria um problema.

A solução em que 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
UM adaptador somente host vboxnet0 para fornecer ssh, comunicação host-convidado e acesso externo à Internet para quantas vboxes você quiser com ips estáticos ou dinâmicos... sem mais dores de cabeça de conectividade vbox.

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

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

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

Etapa 2:
crie uma configuração de ip estático para o seu vbox (o meu é o servidor Ubuntu 20.04). Você pode, opcionalmente, 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]

Pro
Com um ip estático em sua máquina você pode fazer 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

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

ufw allow allow in|out on vboxnet0

Pró

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

Etapa quatro
Criar acesso permanente à Internet para vboxnet0 compartilhando o adaptador de rede principal da máquina host usando MASQUERADE

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

Como solução temporária, estou usando esses 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 ser capaz de executar ping 8.8.8.8 de dentro do vbox para ter certeza de que ele tem acesso à Internet.

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

Alguém pode terminar / polir 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 " portáteis de rede " e têm acesso à internet com o mínimo de esforço após a configuração inicial.

Os únicos contras aqui sã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.

networking
  • 1 1 respostas
  • 707 Views

1 respostas

  • Voted
  1. Best Answer
    nightwatch
    2022-01-21T00:34:59+08:002022-01-21T00:34:59+08:00

    Esta solução destina-se a tornar a vida dos desenvolvedores do Ubuntu muito mais conveniente e segura. Espero que um administrador e/ou outros considerem adequado votar na minha pergunta original de volta, 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, essencialmente me deparei com um ambiente de desenvolvimento ubuntu/virtualbox super seguro, super conveniente e super eficiente. Estou postando todos os meus passos abaixo para ajudar outros desenvolvedores web que estão buscando um ambiente de desenvolvimento web mais eficiente.

    Antes de mais nada, uma rápida visão geral:

    Método de combinação de adaptador em ponte e adaptador NAT

    Prós:

    • Fácil e rápido de configurar, se você for proficiente com UFW

    Contras:

    • requer que 2 interfaces de rede sejam configuradas dentro do convidado
    • convidado com endereços IP estáticos pode ter problemas para 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 o ip padrão na instalação, portanto, os endereços padrão 10.XXX não são adequados
      (na minha situação, criar um endereço NAT personalizado através das preferências do virtualbox não ajudaria, pois meu software é instalado apenas 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 de host único 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 comportam mais como servidores de produção que geralmente possuem uma única interface de rede "eth0"
    • eliminação total do /etc/hostsuso

    Contras:

    • configuração inicial mais difícil.

    Com o acima entendido, vamos começar:

    vou assumir:

    1. você tem a versão mais recente do virtualbox instalada
    2. você tem um firewall UFW com VPN KillSwitch já configurado. (Preste atenção à 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 da Web pronto para acesso à Web dentro de seu convidado com um domínio que termina com ".test" (ou seja, www.example.test )

    Passo 1

    Em Virtualbox > Files > Host Network Manager, crie um adaptador somente host para sua máquina (ou seja, vboxnet0) Para este guia, o meu terá o endereço IP de 192.168.51.1

    Passo 2

    Em Virtualbox > Configurações > Rede , clique em " Ativar adaptador " para o Adaptador 1 e para " Anexado a " selecione o nome vboxnet0 que você criou na " Etapa 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 ssh e resolução de nomes 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]
    

    Lembre
    -se de Executar #netplan applye/ou #netplan --debug generatepara encontrar seus erros de digitação e erros.

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

    Passo Quatro

    Crie uma regra de firewall UFW fácil e mínima para permitir comunicações host-convidado. Isso é tudo o que é necessário para configurar um adaptador somente host para funcionar com o UFW:

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

    Neste ponto, você deve pingar o ip estático do seu convidado do host e 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

    Quinto Passo

    Crie acesso permanente à Internet para vboxnet0 compartilhando o adaptador de rede principal da máquina host usando MASQUERADE. Quando você configurou seu vpn killswitch, você teve que usar o mascaramento de ip para o endereço da sua 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# OBSERVE este é 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

    Este é o passo final e de longe o mais complexo. Neste ponto, a única coisa que precisa ser feita para que seu ambiente de desenvolvimento web do 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. O dnsmasq da barra lateral obviamente 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 disable systemd-resolved
      $ sudo systemctl stop systemd-resolved

    2. Remova o link simbólico /etc/resolv.confe remova 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 "nameserver your-guest's-static-ip address" >> /etc/resolv.conf'

    4. Instalar dnsmasq

      $ sudo apt instalar dnsmasq

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

      $ sudo bash -c 'echo "address=/.test/your-guest's-static-ip address" >> /etc/dnsmasq.conf'

    NOTA : As 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 "nameserver your-guest's-static-ip address" > /etc/resolver/test'

    2. Reinicie o dnsmasq e o gerenciador de rede

      $ sudo systemctl restart dnsmasq $ sudo systemctl restart network-manager

    3. Teste sua configuração de dnsmasq

    a.) abra seu navegador e confirme que 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 web, você pode alterar as redes wi-fi à vontade, sem problemas de endereço IP ufw/guest, você tem apenas um adaptador somente host que você usa em todos os futuros convidados que você cria, mais facilmente os convidados da rede juntos e pare completamente de usar o /etc/hostsarquivo para resolver nomes de domínio locais para seus projetos, pois 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

    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve