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"
