클라우드 타고 포트와 파도
article thumbnail

vagrant 포트 포워딩

Vagrant 포트 포워딩은 호스트(내 PC) 의 특정 포트로 들어오는 요청을
게스트(VM) 의 특정 포트로 전달(Forward)하는 기능입니다.

쉽게 말해서:

  • 게스트 VM 에서 웹서버가 80포트로 실행 중이라면
  • 호스트 PC 의 8080포트를 VM의 80포트로 연결
  • 브라우저에서 localhost:8080 접속 → VM의 웹서버 페이지가 뜸

기본 설정 방법

Vagrantfile에 아래처럼 추가합니다.

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 80, host: 8080
end
  • guest: VM 내부에서 사용되는 포트 번호
  • host: 내 PC에서 접근할 포트 번호 (root가 아니면 1024 이상 사용)

위 예시는 호스트 8080 → 게스트 80으로 매핑.

IP 제한 (선택)

기본값은 모든 IP에서 접근 가능.
특정 IP만 허용하고 싶으면 guest_ip 또는 host_ip를 지정합니다.

config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

이렇게 하면 내 PC(로컬) 에서만 접속 가능.

TCP / UDP 프로토콜 지정

기본값은 TCP.
UDP도 쓰고 싶으면 protocol 옵션 사용.

config.vm.network "forwarded_port", guest: 2003, host: 12003, protocol: "tcp"
config.vm.network "forwarded_port", guest: 2003, host: 12003, protocol: "udp"
  • 같은 포트에서 TCP + UDP 모두 사용하려면 각각 정의해야 함.

포트 충돌(auto_correct)

여러 개 VM을 띄우다 보면 호스트 포트가 겹치는 경우가 많습니다.
이때 Vagrant가 자동으로 포트를 바꿔주게 하려면 auto_correct: true 옵션을 추가.

config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true

 

  • vagrant up 또는 vagrant reload 시 충돌 감지 & 자동 보정
  • 어떤 포트로 변경됐는지 로그에 표시됨

외부에서 VM 접속하기 (Mac 예시)

Mac에서 VM 외부 접속이 필요하면 다음처럼 설정:

config.vm.network "private_network", ip: "192.168.2.12"
config.vm.network "forwarded_port", guest: 22, host: 60003, id: "ssh"
config.vm.network "forwarded_port", guest: 8080, host: 60084

 

  • 내 Mac IP가 192.168.0.5일 때,
    외부에서 ssh user@192.168.0.5 -p 60003 로 접속 가능.

그리고 Mac 방화벽에서 Remote Login을 켜야 함:

sudo systemsetup -setremotelogin on

적용 방법

  • Vagrantfile 수정 후
 
vagrant reload   # VM 재시작
  • 처음이라면
vagrant up
 
  • 브라우저나 CLI로 포트 접근 테스트

자주 쓰는 예시 모음

# HTTP 서비스
config.vm.network "forwarded_port", guest: 80, host: 8080

# DB MySQL (로컬에서 VM DB 접속)
config.vm.network "forwarded_port", guest: 3306, host: 13306

# SSH 포트 변경
config.vm.network "forwarded_port", guest: 22, host: 6022, id: "ssh"
profile

클라우드 타고 포트와 파도

@cloudwave

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!