[리눅스 4] 서버 네트워크 통신, 원격 접속(SSH), 그리고 방화벽(UFW)
AWS EC2 등 클라우드에서는 원격으로 서버에 접속해서 작업한다.
이번 주차에서는 로컬 가상머신(VirtualBox)을 이용해 클라우드 서버의 네트워크 환경을 그대로 모방하고, 포트 포워딩과 방화벽을 설정하여 웹 서버를 띄워보는 실습을 진행했다.
일단 먼저 실습을 바로 진행하기 전에 네트워크 개념을 다시 들여다 봤다. 오랜만에 봐서 그런지 반가웠다.
독일 교환학생 시절에 (2025년 여름학기) ‘Datacenter Network Programming’ 이라는 석사 수업을 들었는데, 그때 생각이 나서 재밌었다.
5명 밖에 안 듣는 수업이었는데, 나는 그게 뭐가 재밌다고 매주 꼬박꼬박 나가서 필기하면서 열심히 들었었다. (교수님이 수업 중간에 나보고 필기 열심히 하면서 듣는다고 칭찬하셔서 부끄러웠지만 ㅋㅋ)
혼자서 맡은 과제가 있었고, 그걸 교수님 앞에서 발표하고 피드백도 받고 그랬었다. p4 라우팅, 로드 밸런싱을 집중적으로 한 과제였다. 자료가 남아있는지는.. 찾아보고 나오면 포스팅하겠다.
모두 추억이니까!
1. 핵심 인프라 네트워크 개념 정리
1) NAT (Network Address Translation)
- 개념: 하나의 공인 IP를 여러 대의 기기가 내부용 사설 IP로 나눠 쓸 수 있게 해주는 기술이다. 우리가 흔히 쓰는 Wi-Fi 공유기와 같은 원리이다.
- 역할: VirtualBox에서 네트워크를 NAT로 설정하면, 호스트 PC가 공유기 역할을 하여 가상머신이 윈도우의 인터넷 선을 같이 쓸 수 있게 해준다.
2) SSH (Secure Shell)
- 개념: 네트워크 상의 다른 컴퓨터에 안전하게 원격으로 로그인하고 명령을 실행할 수 있게 해주는 프로토콜이다.
- 특징: 모든 통신 데이터가 암호화되어 있어 해킹의 위험으로부터 안전하다. (기본 포트: 22번)
3) Port와 포트 포워딩 (Port Forwarding)
- 포트: 서버라는 큰 건물에 나 있는 Door들이다. 22번 문은 SSH 접속 전용, 8080번 문은 웹 서비스 전용 등 용도가 정해져 있다.
- 포트 포워딩: 외부에서 호스트 PC의 특정 포트(예: 2222)로 찾아오면, 이를 내부에 숨어있는 가상머신의 특정 포트(예: 22)로 곧바로 연결해 주는 터널을 뚫는 작업이다.
4) UFW (Uncomplicated Firewall)
- 개념: 우분투에서 기본적으로 제공하는 다루기 쉬운 방화벽이다.
- 역할: 보안을 위해 서버의 모든 포트를 닫아두고, 관리자가 허용한 특정 포트(예: 웹 서비스를 위한 8080)만 선택적으로 열어준다.
2. 단계별 실습 진행 내역
Step 1: SSH 서버 설치 및 원격 접속 세팅
- 우분투에 SSH 서버 설치:
sudo apt install openssh-server -y - VirtualBox 포트 포워딩 규칙 추가:
- 호스트 포트
2222➔ 게스트 포트22(SSH 터널)
- 호스트 포트
- 윈도우 PowerShell에서 우분투로 원격 접속 성공:
- 명령어:
ssh -p 2222 wonji@127.0.0.1
- 명령어:

Step 2: 방화벽(UFW) 설정 및 웹 서버 구동
- 방화벽에서 필수 포트 개방:
- SSH 포트 허용 (필수! 안 하면 원격 접속이 끊김):
sudo ufw allow ssh - 웹 서버용 포트 허용:
sudo ufw allow 8080/tcp
- SSH 포트 허용 (필수! 안 하면 원격 접속이 끊김):
- 방화벽 가동:
sudo ufw enable - 파이썬 내장 모듈을 이용한 간단한 웹 서버 실행:
- 명령어:
python3 -m http.server 8080
- 명령어:

Step 3: 외부(윈도우)에서 우분투 웹 서버 접속
- 웹 브라우저 접근을 위한 두 번째 포트 포워딩 규칙 추가:
- 호스트 포트
8080➔ 게스트 포트8080(웹 터널)
- 호스트 포트
- 윈도우 크롬 브라우저에서
http://127.0.0.1:8080으로 접속하여 우분투 내부의 파일(archive_logs.sh등)을 성공적으로 확인!


3. Troubleshooting
sudo apt update 실행 시 DNS 오류
SSH 서버를 설치하기 위해 패키지 목록을 업데이트하려 했으나, 아래와 같은 에러가 나왔다.
Temporary failure resolving 'kr.archive.ubuntu.com'
원인
이 에러는 우분투 가상머신이 인터넷(DNS 서버)에 접근하지 못해 우분투 패키지 서버의 주소를 찾지 못하는 상태였다.
해결 방법
- VirtualBox 관리자 창에서 해당 가상머신의 [Settings] - [Network] 메뉴로 진입
- ‘다음에 연결됨’ 항목을
NAT로 변경하여 호스트 PC의 인터넷 망을 공유하도록 설정 - 우분투 서버를 재부팅(
sudo reboot)하여 네트워크 설정을 갱신 - 다시
sudo apt update를 실행하니까 성공했다^^

그리고 마무리
꼭 실습 완료하면 잘 정리해주자~
