본문 바로가기
카테고리 없음

[Virtual Box] Virtual Box 네트워크 설정과 ssh 원격 접속 설정을 통해 NAT에 대해 이해해보기

by 웅대 2024. 7. 20.
728x90
반응형

https://growth-coder.tistory.com/290

 

[Virtual Box] Virtual Box에서 리눅스 기반 Ubuntu 운영 체제 설치

Virtual machineVirtual Machine은 물리적인 컴퓨터에서 소프트웨어 방식으로 별도의 컴퓨터 시스템을 에뮬레이트하기 위한 시스템이다. 물리적인 컴퓨터 내부에 존재하는 또 다른 소프트웨어 컴퓨터

growth-coder.tistory.com

 

이전 포스팅에서 Virtual Box 안에서 리눅스 기반 Ubuntu 운영체제를 설치하는 방법을 알아보았다.

 

Virtual Machine은 물리적인 컴퓨터 내부에 존재하는 또 다른 소프트웨어 컴퓨터라고 볼 수 있다.

 

그래서 Virtual Box와 같은 프로그램을 사용해서 Virtual Machine을 구동했을 때 네트워크에 접근하기 위해서 추가적인 설정을 진행해야 한다.

 

네트워크 설정 변경 방법

 

virtual box를 실행하고 설치한 운영체제의 설정에 들어가자.

 

 

네트워크 -> 어댑터에서 네트워크 설정을 변경할 수 있다.

 

다양한 옵션들이 있는데 이 중 NAT, NAT network, 어댑터에 브리지에 대해 알아보자.

 

 

NAT (Network Address Translation)

https://growth-coder.tistory.com/192

 

[Network] DHCP와 NAT

우리가 일반적으로 사용하는 IPv4의 경우 IP주소가 40억개쯤 되는데 시간이 많이 지남에 따라 거의 고갈되어 가고 있다. 이를 해결하기 위한 방안을 알아보려고 한다. DHCP (Dynamic Host Configuration Proto

growth-coder.tistory.com

 

이전 포스팅에서 NAT을 통해 사설 ip를 부여받은 기기들이 외부 인터넷을 사용하는 방법에 대해 작성한 적이 있다.

 

해당 포스팅을 요약해보자면

 

사설 ip를 사용하는 기기가 외부로 요청을 보낼 때 NAT translation table에서는 임시로 공인 ip, port와 사설 ip, port를 매핑하기 때문에 외부에서 사설 ip를 사용하는 기기에게 요청을 보낼 수 없다.

외부에서 사설 ip를 사용하는 기기에게 요청을 보내려면 NAT Port Forwarding table에 공인 ip, port와 사설 ip, port를 매핑하여 매핑 정보를 계속 기억해야 한다.

 

위 두 개념을 이해하고 있다면 Virtual Box에서 외부 인터넷에 접근하고 호스트 os에서 게스트 os로 ssh 원격 접속 설정하는 과정을 이해할 수 있다.

 

네트워크 설정을 NAT으로 바꾸면 인터넷 접속이 가능해진다.

 

다음 그림은 Virtual Box에서 NAT 설정을 했을 때의 아키텍처이다.

 

https://www.nakivo.com/blog/virtualbox-network-setting-guide/

Virtual box는 내장된 DHCP 서버와 NAT 엔진이 존재하며 내장 DHCP 서버의 기본 주소는 10.0.2.2이고 이 주소는 가상 머신의 기본 게이트웨이 주소이기도 하다.

 

가상 NAT 엔진이 있어서 이 곳에서 주소 변환을 할 수 있다.

 

위 아키텍처를 자세히 보면 두 개의 가상 머신이 동일한 "10.0.2.15"라는 ip 주소를 가지고 있는 것을 확인할 수 있다.

 

Virtual Box에서 NAT 설정을 하면 그 안의 모든 게스트 os들은 같은 ip 주소를 할당받기 때문에 게스트와 호스트끼리 통신은 가능하지만 게스트 os끼리 통신할 수 없다.

 

만약 게스트 os끼리 통신을 하고 싶다면 NAT 방식이 아닌 NAT network 방식을 선택해야 한다.

 

NAT network

 

https://www.nakivo.com/blog/virtualbox-network-setting-guide/

NAT Nework 설정을 하면 각 가상 머신들이 Virtual Box 내장 DHCP로부터 ip를 할당받기 때문에 서로 다른 ip 주소를 가지게 된다.

 

호스트 os -> 게스트 os 접근 

NAT 또는 NAT Network 설정을 마치면 네트워크에 접속할 수 있다.

 

하지만 위에서 설명한 NAT의 특성으로 인해 게스트 os에서 외부 네트워크에 요청을 보내 응답을 받아올 수 있지만 호스트 os에서 게스트 os에 접근할 수는 없다.

 

만약 호스트에서 게스트 os로 ssh 연결을 한 뒤 개발을 하고 싶다면 호스트가 게스트 os에 접근할 수 있어야 한다.

 

호스트에서 게스트로 접근하기 위해서는 NAT port forwarding table에 ip, 포트 정보를 기록해야 한다.

 

NAT 설정을 기준으로 포트포워딩 설정을 해보자.

 

먼저 게스트 os에 접속 후 ifconfig로 ip 주소를 확인해보자.

 

참고로 NAT 설정을 했을 때 게스트 os에 부여되는 기본 ip 주소는 10.0.2.15이다.

 

 

ssh 연결을 위해서 해당 주소와 port 번호 22를 port forwarding 테이블에 기록하자.

 

네트워크 -> 고급 -> 포트포워딩

 

 

이제 22번 포트를 통해서 ssh 연결을 할 수 있다.

 

가상 머신 ssh 연결 설정

ssh 연결을 위해서 가상 머신 ssh 설정을 해보자.

apt update

sudo apt update
 

openssh-server 설치

ssh 연결을 허용하기 위해 openssh-server를 설치한다.

sudo apt install openssh-server

ssh 연결 허용

/etc/ssh/sshd_config 파일을 쓸 수 있게 변경한다.

cd /etc/ssh
sudo chmod a+w sshd_config # 모두에게 쓰기 권한 허용
sudo vi sshd_config # sshd_config 파일 변경

 

이제 /etc/ssh/sshd_config 파일을 수정하면 된다.

 

22번 포트를 허용한다.

비밀번호 인증을 허용한다.

설정을 변경하기 위해 재시작한다.

systemctl restart ssh

유저 추가

루트가 아닌 유저를 추가하고 비밀번호를 설정한다.

sudo useradd -m [이름]
sudo passwd [이름]

 

useradd 명령어에 -m 옵션을 붙이면 이름과 동일한 디렉토리가 /home에 생성된다.

 

유저 이름 디렉토리가 생성되지 않으면 ssh 접속을 할 때 해당 디렉토리를 찾을 수 없다는 에러가 발생하니 주의하자.

 

이제 ssh 접속을 할 수 있다.

 

ssh [유저 이름]@[ip 주소]

 

우리는 호스트 ip 주소와 22번 포트에 가상 머신 ip 주소와 포트를 매핑했기 때문에 호스트에서 ssh 연결할 때 ip 주소를 localhost를 사용해도 괜찮다.

Bridged Network

위에서 NAT 방식으로 네트워크 설정을 했을 때 ssh 연결을 허용하는 방법을 알아보았다.

 

NAT 설정으로 바꾸고 포트포워딩 설정을 추가로 해야 했다.

 

하지만 Bridge Network를 사용하면 포트포워딩 설정을 하지 않아도 호스트에서 게스트로 접속을 할 수 있다.

 

https://www.nakivo.com/blog/virtualbox-network-setting-guide/

 

일반적으로 공유기를 사용할 때 공인 ip에 연결된 여러 사설 기기들은 공유기로부터 사설 ip를 할당받는다.

 

그리고 NAT Network 방식을 선택했을 때는 Virtual Box 내부 DHCP 서버로부터 사설 ip를 할당받았다.

 

그런데 Bridged Network 방식을 선택했을 때는 호스트와 마찬가지로 라우터(공유기)로부터 사설 ip를 직접 할당받을 수 있다.

 

NAT Network 방식은 호스트와 가상 머신에게 ip를 할당하는 주체가 달랐지만 Bridged Network는 같은 라우터(공유기)로부터 ip를 할당받는 것이다.

 

즉 Bridged Network에서는 호스트와 가상 머신들이 동일한 네트워크에 존재한다고 할 수 있는 것이다.

 

NAT, NAT network 방식에서는 호스트가 가상 머신의 주소를 알아낼 수 있는 방법이 없었기 때문에 포트포워딩 설정을 해야만 했다.

 

하지만 Bridged Network에서는 가상 머신이 같은 네트워크에 존재해서 ip 주소를 바로 알 수 있기 때문에 포트포워딩 설정을 하지 않아도 가상 머신에 직접 연결할 수 있는 것이다. 

 

Bridged network 방식으로 변경하고 가상 머신의 터미널에서 ifconfig 명령어를 입력하여 ip 주소를 알아보자.

 

그리고 이 ip 주소를 통해 직접 ssh 연결을 시도하면 된다.

참고

https://www.virtualbox.org/manual/ch06.html

https://www.youtube.com/watch?v=OrRIzxW_UcM

https://www.nakivo.com/blog/virtualbox-network-setting-guide/

 

728x90
반응형

댓글