Ubuntu 20.04 Dekstop Host 및 Ubuntu 20.04 Server Guest가 인터넷 액세스, SSH 및 호스트-게스트 통신을 갖도록 구성하는 가장 좋은 방법

Ubuntu 20.04 Dekstop Host 및 Ubuntu 20.04 Server Guest가 인터넷 액세스, SSH 및 호스트-게스트 통신을 갖도록 구성하는 가장 좋은 방법

업데이트
어쨌든 이 게시물을 우연히 발견한 사람이 있을 것입니다. 아래 솔루션은 실제로 피드백/건설적인 비판 또는 오류 식별 없이 이 질문에 대해 투표를 거부하는 것이 정당하지 않은 것처럼 보입니다.

목표

인터넷에 액세스할 수 있도록 우분투 서버 vbox6.1 게스트를 설정하고 우분투 20.04 데스크탑 호스트를 상자에 SSH로 연결하는 가장 좋은 방법이 필요합니다.

진행/연구
virtualbox에 대한 호스트-게스트 통신 및 인터넷 액세스를 설정하기 위해 virtualbox 서버와 함께 2개의 네트워크 어댑터 조합을 사용하는 것이 매우 일반적인 솔루션이지만 이러한 일반적인 방법에는 몇 가지 주의 사항이 있습니다.

브리지 어댑터 및 NAT 어댑터 콤보 방법 - 가장 쉽고 빠른 방법이지만 UFW 방화벽/VPN과 함께 킬 스위치를 사용하는 경우 Wi-Fi에 따라 방화벽 설정을 조정해야 하는 경우가 매우 많다는 주의 사항이 있습니다. 게이트웨이 주소가 변경되어 연결된 네트워크(vbox에서 고정 IP 주소를 사용하는 사람들의 일반적인 문제). 방화벽 규칙을 잘 알고 있다면 이 방법이 적합합니다.

NAT 어댑터 및 호스트 전용 어댑터 콤보 방법 - NAT 어댑터는 상자 내부에서 쉬운 인터넷 액세스를 제공하고 호스트 전용 어댑터는 Apache와 같은 앱에 대한 호스트 게스트 통신을 제공합니다. 여기서 주의할 점은 일부 응용 프로그램은 설치 시 기본 어댑터 IP 주소를 기반으로 자체적으로 구성된다는 것입니다(이게 내 현재 문제야) NAT IP 주소가 호스트와 통신할 수 없으므로 문제가 발생합니다.

제가 작업 중인 솔루션은 초기 설정이 다소 어려울 수 있지만 호스트의 기본 네트워크 어댑터를 통해 인터넷에 액세스할 수 있도록 호스트 전용 어댑터를 구성하는 것입니다.

의미
하나vboxnet0 호스트 전용 어댑터는 정적 또는 동적 IP를 사용하여 원하는 만큼 많은 vbox에 대해 SSH, 호스트-게스트 통신 및 외부 인터넷 액세스를 제공합니다. 더 이상 vbox 연결 문제가 없습니다.

내 진행 단계와 함께 장점과 단점은 다음과 같습니다.

1 단계
컴퓨터(vboxnet0)에 대한 호스트 전용 어댑터를 만듭니다. 내 IP 주소는 192.168.51.1입니다.

찬성:
동일한 호스트 전용 어댑터에 여러 개의 vbox를 보유하려는 경우 DHCP 서버를 활성화하는 옵션이 있습니다.

2 단계:
vbox에 대한 고정 IP 구성을 만듭니다(내 것은 Ubuntu 20.04 서버입니다). 선택적으로 이 단계를 건너뛰고 동적 IP를 사용할 수 있습니다.

나는 사용하고있다

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]

찬성
컴퓨터에 고정 IP가 있으면 두 번째 NAT 어댑터를 사용하지 않고도 SSH를 통해 상자에 연결할 수 있습니다.

3단계

호스트-게스트 통신을 위한 간편하고 최소한의 UFW 방화벽 규칙 생성

UFW와 함께 작동하도록 호스트 전용 어댑터를 구성하는 데 필요한 모든 것은 다음과 같습니다.

ufw allow allow in|out on vboxnet0

찬성

  • 이 방법을 사용하면 각 상자가 vboxnet0에 있는 한 단일 방화벽 규칙을 사용하여 여러 vbox에 대한 호스트-게스트 통신을 즉시 생성할 수 있습니다(호스트-게스트 통신이 필요한 많은 vbox를 만들려는 경우 유용함).

4단계
만들다영구적인MASQUERADE를 사용하여 호스트 시스템의 기본 네트워크 어댑터를 공유하여 vboxnet0에 대한 인터넷 액세스

이것이 나의 현재이다문제. 저는 IP 테이블과 MASQUERADE에 익숙하지 않기 때문에 vboxnet0에 대한 임시 인터넷 액세스만 만들 수 있습니다.

임시 해결책으로 bash 스크립트 내에서 다음 4가지 명령을 사용하고 있습니다.

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

wg0은 내 호스트 시스템의 기본 네트워크 어댑터입니다.

이 시점에서 vbox 내부에서 8.8.8.8에 ping을 보내 인터넷에 접속할 수 있는지 확인할 수 있어야 합니다.

위 명령은 다음에서 얻었습니다.
https://help.ubuntu.com/community/Internet/ConnectionSharing

누군가가 하나 또는 여러 개의 vbox에 대한 인터넷 액세스를 생성하는 호스트 전용 어댑터 방법을 완성하거나 다듬을 수 있습니까?

많은 우분투 사용자에게 도움이 될 것 같습니다. 이 방법을 사용하면 vbox는 "네트워크 휴대용"를 선택하고 초기 구성 후 최소한의 노력으로 인터넷에 액세스할 수 있습니다.

유일한단점다음은 다음과 같습니다: 어려운 초기 설정 및 vbox는 LAN의 다른 컴퓨터에서 액세스할 수 없습니다. 이는 로컬 웹 개발을 수행하는 경우에는 무시할 수 있습니다.

답변1

이 솔루션은 우분투 개발자의 삶을 훨씬 더 편리하고 안전하게 만들기 위한 것입니다. 웹 개발을 위해 Ubuntu를 사용하려는 사람들에게 매우 일반적인 질문이므로 관리자 및/또는 다른 사람들이 내 원래 질문에 다시 투표하는 것이 적절하다고 생각하기를 바랍니다.

어쨌든 저는 최근 인터넷 액세스가 가능한 VirtualBox용 호스트 전용 어댑터에 대한 소프트웨어 요구 사항을 받았습니다. 이는 널리 사용되는 듀얼 어댑터 방식으로는 충분하지 않다는 의미입니다. 이 문제를 해결하는 동안 저는 본질적으로 매우 안전하고, 매우 편리하며, 매우 효율적인 우분투/가상박스 개발 환경을 우연히 발견했습니다. 보다 효율적인 웹 개발 환경을 찾고 있는 다른 웹 개발자들을 돕기 위해 아래에 제 모든 단계를 게시하고 있습니다.

우선 간략한 개요는 다음과 같습니다.

브리지 어댑터 및 NAT 어댑터 콤보 방법

장점:

  • UFW에 능숙하다면 쉽고 빠르게 설정할 수 있습니다.

단점:

  • 게스트 내부에 2개의 네트워크 인터페이스를 구성해야 합니다.
  • 고정 IP 주소를 사용하는 게스트는 게이트웨이 값으로 인해 Wi-Fi 네트워크를 변경하는 데 문제가 있을 수 있습니다.
  • 방화벽에 대한 고급 구성이 필요합니다.
  • 로컬 도메인 이름을 확인하기 위해 를 사용하도록 권장합니다 /etc/hosts(시간이 지남에 따라 번거로워짐).

NAT 어댑터 및 호스트 전용 어댑터

장점:

  • 간편한 설정
  • 최소한의 방화벽 구성

단점:

  • 게스트 내부에 2개의 네트워크 인터페이스를 구성해야 합니다.
  • 일부 소프트웨어 패키지는 설치 시 기본 IP를 사용하므로 기본 10.XXX 주소는 적합하지 않습니다.
    (내 상황에서는 Virtualbox 기본 설정을 통해 사용자 지정 NAT 주소를 만드는 것이 도움이 되지 않습니다. 내 소프트웨어는 기본 NAT 주소에만 설치되고 NAT 주소는 그렇지 않기 때문입니다. 라우팅 가능, 호스트에 액세스 가능)
  • 방화벽에 대한 고급 구성이 필요합니다.
  • 로컬 도메인 이름을 확인하기 위해 를 사용하도록 권장합니다 /etc/hosts(시간이 지남에 따라 번거로워짐).

가장 효율적인 솔루션:
인터넷 액세스가 가능한 단일 호스트 전용 어댑터입니다.

호스트 전용 어댑터 w. 인터넷 접속 방법

장점:

  • 모든 손님을 위한 단일 어댑터
  • 단순화된 방화벽 구성
  • 단순화된 손님 네트워킹
  • 게스트는 일반적으로 단일 네트워크 인터페이스 "eth0"을 갖는 prod 서버처럼 동작합니다.
  • /etc/hosts사용 을 완전히 제거

단점:

  • 초기 구성이 더 어렵습니다.

위 내용을 이해했다면 시작해 보겠습니다.

나는 다음과 같이 가정할 것이다:

  1. 최신 버전의 virtualbox가 설치되어 있습니다
  2. 당신은VPN KillSwitch를 갖춘 UFW 방화벽이미 구성되었습니다. (IP Masquerade 섹션에 주목하세요. 다시 살펴보겠습니다.)
  3. 이미 virtualbox에 게스트 서버를 생성했으며 사용자에 대한 SSH 공개 키를 추가했습니다.
  4. ".test"로 끝나는 도메인을 사용하여 게스트 내부에서 웹 액세스가 가능한 웹 프로젝트(예: www.example.test)

1 단계

~ 안에버추얼박스>파일>호스트 네트워크 관리자귀하의 컴퓨터에 대한 호스트 전용 어댑터(예: vboxnet0)를 만듭니다. 이 가이드에서는 내 IP 주소가 192.168.51.1입니다.

2 단계

~ 안에Virtualbox > 설정 > 네트워크, '를 클릭하세요.어댑터 활성화" 어댑터 1의 경우 및 "의 경우부착"에서 생성한 vboxnet0 이름을 선택하세요."1 단계"

3단계

게스트 서버에 대한 고정 IP 구성을 만듭니다(내 서버는 Ubuntu 20.04 서버입니다). 이는 SSH 및 도메인 이름 확인에 필요하지만 SSH/DNS가 필요하지 않은 경우 동적 IP를 사용할 수 있습니다.

Ubuntu Server의 경우 다음을 사용하고 있습니다.

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]

기억하다
오타 및 오류를 찾으려면 #netplan apply및/또는를 실행하세요 .#netplan --debug generate

설정이 적용되도록 게스트를 재부팅하세요.

4단계

쉽고 최소한의 UFW 방화벽 규칙을 생성하여 호스트-게스트 통신을 가능하게 합니다. UFW와 함께 작동하도록 호스트 전용 어댑터를 구성하는 데 필요한 모든 것은 다음과 같습니다.

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

이 시점에서 호스트에서 게스트의 고정 IP를 핑하고 호스트로 SSH를 연결해야 합니다.

다음으로 테스트하세요. ssh -p 22 -i ~/.ssh/id_rsa root@your-guest's-static-ip address

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

5단계

MASQUERADE를 사용하여 호스트 시스템의 기본 네트워크 어댑터를 공유하여 vboxnet0에 대한 영구 인터넷 액세스를 생성합니다. VPN 킬 스위치를 구성할 때 를 편집하여 VPN 주소에 대해 IP 위장을 사용해야 했기 때문에 /etc/ufw/before.rules이 파일을 다시 편집하겠습니다.

sudo nano /etc/ufw/before.rules

파일의 이 섹션에서:

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

추가하다:

-A POSTROUTING -s 192.168.51.1/24 -j MASQUERADE#메모이는 게스트의 고정 IP 주소에 대한 게이트웨이 역할을 하는 vboxnet0 호스트 전용 어댑터의 IP 주소입니다.

파일 닫기 및 저장

이제 모든 트래픽 192.168.51.1은 변경되더라도(예: Wi-Fi 대 LAN) 호스트의 기본 네트워크 인터페이스를 통해 전송됩니다.

vbox 게스트에 액세스하고 명령줄에서 다음을 실행하여 이를 테스트할 수 있습니다.
ping -c 5 8.8.8.8

성공하면 이제 호스트 전용 어댑터가 인터넷에 액세스할 수 있습니다.

6단계

이것이 마지막 단계이자 가장 복잡한 단계입니다. 이 시점에서 VirtualBox 웹 개발 환경을 사용할 수 있도록 준비하기 위해 수행해야 할 유일한 작업은 게스트 서버의 도메인 이름을 로컬에서 확인할 수 있도록 dnsmasq를 설치하고 구성하는 것입니다.사이드바dnsmasq는 의 사용을 제거하기 위해 위에서 언급한 콤보 네트워크 어댑터 방법과 함께 사용할 수 있지만 /etc/hosts단일 호스트 전용 어댑터를 사용하는 경우 로컬 도메인 이름을 확인하려면 dnsmasq가 필요합니다.

  1. 시스템 비활성화 및 중지 해결됨

    $ sudo systemctl 비활성화 systemd-resolved
    $ sudo systemctl stop systemd-resolved

  2. 심볼릭 링크 제거 /etc/resolv.conf및 파일 제거

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

  3. etc/resolv.con다음 값을 사용하여 새 /를 만듭니다 .

    $ sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolv.conf' #(도메인 이름의 호스트 시스템 확인)

    $ sudo bash -c 'echo "nameserver 208.67.222.222" >> /etc/resolv.conf' #(외부 인터넷용 OpenDNS 공용 DNS 서버 IP)

    $ sudo bash -c 'echo "네임서버 게스트의 고정 IP 주소" >> /etc/resolv.conf'

  4. dnsmasq 설치

    $ sudo apt 설치 dnsmasq

  5. dnsmasq 구성 파일에 .test를 추가합니다.

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

메모: 와일드카드 도메인 확인이 필요한 WordPress 다중 사이트를 개발하는 사람들은 다음을 사용할 수 있습니다.

$ sudo bash -c 'echo "address=/example.test/your-guest's-static-ip address" >> /etc/dnsmasq.conf'
  1. 게스트의 고정 IP 주소에 대한 디렉터리 확인자를 만듭니다.

    $sudo mkdir -v /etc/resolver && sudo bash -c 'echo "nameserver your-guest's-static-ip address" > /etc/resolver/test'

  2. dnsmasq 및 네트워크 관리자를 다시 시작하세요.

    $ sudo systemctl restart dnsmasq $ sudo systemctl restart 네트워크 관리자

  3. dnsmasq 설정 테스트

a.) 브라우저를 열고 아직 외부 인터넷에 접속할 수 있는지 확인하세요.

b.) 실행하면 dig example.test게스트 서버의 고정 IP 주소를 볼 수 있어야 합니다.

c.) 호스트 컴퓨터의 브라우저에서 example.test를 엽니다.

쾅!완료.

이 웹 개발 환경을 사용하면 ufw/게스트 IP 주소 문제 없이 Wi-Fi newtworks를 마음대로 변경할 수 있으며, 향후 생성하는 모든 게스트에 사용할 호스트 전용 어댑터가 하나만 있고, 더 쉽게 게스트를 함께 네트워크에 연결하고 사용을 완전히 중단할 수 있습니다. /etc/hostsdnsmasq에 의해 자동으로 수행되므로 프로젝트의 로컬 도메인 이름을 확인하기 위한 파일입니다 .

내 출처:
https://unix.stackexchange.com/questions/304050/how-to-avoid-contributes-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

관련 정보