본문 바로가기

Operating System/Linux

[Ubuntu] 네트워크 및 SSH 설정

Ubuntu 네트워크 모드 선택

 

  • NAT(Network Address Translation)
    • 가상 머신이 외부 네트워크에 접근 가능 / 호스트에서 가상 머신으로 직접 접근 불가
      가상 머신 → 외부 네트워크 (O) / 호스트 → 가상 머신 (X)
    • 단, 포트 포워딩을 설정하면 호스트에서 가상 머신으로의 접근이 가능
  • Bridged Adapter
    • 가상 머신이 호스트와 동일한 네트워크에 직접 연결되어, 호스트 및 다른 네트워크 장치와 자유롭게 통신 가능
  • Host-Only Adapter
    • 가상 머신과 호스트 간의 통신만 허용되며, 외부 네트워크와의 연결은 차단

동일한 네트워크에 연결?
  • 가상 머신이 호스트 컴퓨터와 동일한 물리적 또는 무선 네트워크에 속하며 같은 네트워크 대역 내에서 직접 통신이 가능하다는 것을 의미
  • 가상 머신이 호스트와 동일한 네트워크에 연결된다는 것은 동일한 서브넷 마스크를 사용한다는 의미

 

Bridged Adapter 모드

 

  • 물리적 네트워크 연결
    • Bridged Adapter 모드가상 머신을 호스트가 속한 실제 네트워크에 직접 연결
    • 가상 머신은 네트워크 상에서 독립적인 컴퓨터로 인식되며, 호스트와 동일한 네트워크 대역(동일한 서브넷마스크)에서 동작
  • IP 주소 할당
    • 가상 머신은 네트워크의 DHCP 서버로부터 고유한 IP 주소를 할당
      → DHCP 서버 = 일반적으로 라우터(공유기)
    • 이 IP 주소 호스트가 사용하는 IP 주소와 같은 네트워크 대역에 속함
      → 호스트가 192.168.1.100 IP 주소를 사용하고 있다면 가상 머신은 192.168.1.x 대역의 다른 IP 주소
      Ex) 가상 머신의 IP : 192.168.1.101
  • 직접 통신 가능
    • 가상 머신과 호스트는 같은 네트워크에 속해 있으므로 서로 직접 통신 가능
      → 가상 머신에서 호스트의 IP 주소로 핑(ping) 전송 / 호스트에서 가상 머신으로 SSH 접속을 시도
  • 외부 네트워크와의 연결
    • 가상 머신은 호스트와 마찬가지로 외부 네트워크(인터넷)에도 직접 접속 가능
    • 네트워크에 연결된 다른 장치와통신 가능
      Ex) 프린터, 다른 컴퓨터

 

서브넷 마스크(Subnet Mask)란?
  • IP 주소의 네트워크 부분과 호스트 부분을 구분하는 데 사용
  • 네트워크 상에서 장치들이 서로 통신할 수 있는지를 결정하는 데 중요한 역할
    • IP 주소 : 네트워크 상에서 장치들을 구분하는 고유한 번호
      Ex) 192.168.1.100
    • 서브넷 마스크 : IP 주소의 네트워크와 호스트 부분을 나누는 역할을 하는 값
      Ex) 255.255.255.0
동일한 서브넷 마스크의 의미
  • 동일한 네트워크 대역에 속함
    • 호스트와 가상 머신이 같은 서브넷 마스크를 사용하면 두 장치는 같은 네트워크 대역
      Ex) 서브넷 마스크가 255.255.255.0이라면, IP 주소가 192.168.1.x인 모든 장치는 동일한 서브넷
  • 서브넷 마스크 예시
    • 호스트 IP : 192.168.1.100
    • 가상 머신 IP : 192.168.1.101
    • 서브넷 마스크 : 255.255.255.0
    • 위 경우 호스트와 가상 머신은 같은 서브넷(네트워크 대역 192.168.1.0/24)에 속하며, 서로 직접 통신 가능
    • 동일한 네트워크 대역의 범위 : 192.168.1.0 ~ 192.168.1.255
      → 이 범위 내라면 동일한 서브넷으로 직접 통신이 가능
왜 동일한 서브넷이 중요한가?
  • 내부 통신
    • 같은 서브넷에 있는 장치들라우터를 거치지 않고 직접 통신 가능
    • 이는 네트워크 속도와 효율성을 높임
  • 네트워크 관리
    • 같은 서브넷에 있는 장치들은 같은 네트워크 규칙과 보안 설정을 공유하므로 관리가 용이
서브넷 마스크는 네트워크(Network)의 기본 지식으로 초창기에는 A, B, C, D, E 클래스라는 IP 주소 체계가 사용되었음
하지만 현재는 CIDR(Classless Inter-Domain Routing) 방식이 일반적으로 사용된다고 함

255.255.255.0은 이진법으로 11111111.11111111.11111111.00000000으로 표현 됨
1로 채워진 부분네트워크(Network) 부분이고, 0으로 채워진 부분호스트(Host) 부분
따라서, 192.168.1.100이라는 IP가 주어졌을 때 서브넷 마스크가 255.255.255.0이라면,
192.168.1까지가 네트워크 부분으로 인식되어 192.168.1.x의 모든 IP는 같은 네트워크로 인식 됨

서브넷 마스크는 /8, /16, /24 뿐만 아니라, /25, /26, /27처럼 더 작은 단위로 서브넷팅이 가능 함
예를 들어 192.168.1.127/25192.168.1.0 ~ 192.168.1.127 범위가 동일 네트워크이며, 
192.168.1.128/25192.168.1.128 ~ 192.168.1.255 범위가 동일 네트워크를 나타냄
즉, 192.168.1.127/25와 192.168.1.128/25는 다른 네트워크 대역이라는 것임

이해가 잘 되지 않는다면 네트워크의 서브넷 마스크의 개념을 찾아보는 것을 권장함

네트워크 모드 설정
  • VirtualBox - 가상 머신 선택 - 설정 - 네트워크
    ※ 좌측 상단에 Baisc와 Expert가 있는데, Basic으로 하게 되면 포트포워딩 설정이 보이지 않음
  • NAT 모드 선택
    • 호스트에서 가상 머신으로의 SSH 접속을 위해 포트 포워딩을 설정 필요
    • 고급(Advanced) 옵션을 펼치고 포트 포워딩(Port Forwarding) 클릭
    • 새로운 규칙을 추가하여 호스트의 특정 포트를 가상 머신의 SSH 포트(기본적으로 22)로 포워딩 설정
  • Bridged Adapter 모드 선택
    • 가상 머신이 호스트와 동일한 네트워크에 연결되므로, 별도의 포트 포워딩 없이도 호스트에서 가상 머신으로 직접 SSH 접속이 가능

 

  • 호스트 IP : 공백(모든 인터페이스에 대해 열림)
  • 게스트 IP : 공백(기본 적으로가상 머신의 IP로 설정)

  • 가상머신 실행 - 마우스 우 클릭 - 터미널 열기

  • SSH 서버 설치 확인 : 아무것도 나오지 않을 경우 SSH 서버가 설치 되지 않음
dpkg -l | grep openssh-server

  • SSH 서버 설치
sudo apt update
sudo apt install openssh-server
  • SSH 서버 서비스 확인 및 시작
sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl status ssh

 

  • 호스트 PC의 cmd에서 아래의 명령어로 SSH 접속 시도
ssh -p 호스트포트 사용자명@localhost
  • 경고 메세지 출력
    • SSH 클라이언트가 연결하려는 호스트(가상 머신)에 대해 호스트의 공개 키를 처음 접했을 때 발생하는 경고
    • 이 경고는 보안상의 이유로 호스트의 신뢰성을 확인하려는 목적
    • 호스트의 공개 키매번 연결할 때마다 확인되며 이 키가 변경되었을 때 의심스러운 활동이 있을 수 있기 때문에 경고 메시지가 나타남
    • 호스트의 신뢰성 확인 : SSH 클라이언트가 접속하려는 localhost:2222의 공개 키를 처음 본 것이기 때문에, 이 호스트가 신뢰할 수 있는지를 물어봄
    • ED25519 key fingerprint : SSH 서버에서 제공한 호스트 공개 키의 지문, 이 지문을 사용하여 호스트의 신뢰성을 검증
    • 응답
      • yes : 호스트를 신뢰하고 연결, 공개 키가 known_hosts 파일에 저장되어 이후부터는 경고 메시지가 나타나지 않음
      • no : 연결을 거부하고 종료
      • [fingerprint] : 지문을 정확히 입력하여 검증하는 방법도 가능

 

 

  • yes를 입력하여 연결 진행