방랑자 역 포트 포워딩?
웹 서비스 아키텍처를 개발 중입니다. Vagrant가 아닌 기본 호스트 시스템에서 실행 해야하는 소프트웨어가 있습니다. 하지만 게스트에서 일부 클라이언트 서비스를 실행하고 싶습니다.
Vagrant의 config.vm.forwarded_port
매개 변수는 호스트의 포트를 열고 데이터를 게스트에게 보냅니다. 하지만 게스트에서 포트를 열고 호스트로 데이터를 보내려면 어떻게해야합니까? (여전히 포트 전달이지만 반대 방향입니다.)
를 실행하면 vagrant ssh
실제로 다음 기본 명령을 사용합니다.
ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR -o IdentitiesOnly=yes -i ~/.vagrant.d/insecure_private_key vagrant@127.0.0.1
SSH는 -R guestport:host:hostport
옵션으로 원하는 방향으로 포워딩 포트를 지원합니다 . 따라서 12345
게스트의 포트 에 연결 하고로 전달 localhost:80
하려면 다음 명령을 사용하십시오.
ssh -p 2222 -R 12345:localhost:80 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR -o IdentitiesOnly=yes -i ~/.vagrant.d/insecure_private_key vagrant@127.0.0.1
Eero가 올바르게 주석을 달면 vagrant ssh -- -R 12345:localhost:80
훨씬 간결한 명령에서 동일한 효과를 갖는 명령을 사용할 수도 있습니다 .
Vagrant: Up and Running
Vagrant의 작성자가 쓴 이 책 (Pub. 날짜 : 2013 년 6 월 12 일)에서 그는 게스트 컴퓨터가 호스트 컴퓨터에서 실행되는 서비스에 액세스 할 수 없다고 언급했습니다.
을 사용하는 대신을 사용하여 Forwarded Ports
개인 네트워크를 설정할 수 Host-Only Networks
있습니다.
Host-Only Networks
이상 사용의 장점Forwarded Ports
게스트 컴퓨터는 호스트 컴퓨터에서 실행되는 서비스에 액세스 할 수 있습니다
이 기능은 문제를 해결합니다.
게스트 컴퓨터는 다른 게스트 컴퓨터에서 실행되는 서비스에 액세스 할 수 있습니다
이 기능은 서비스를 여러 시스템으로 분리하여 프로덕션 환경을보다 정확하게 모방하는 데 매우 유용합니다.
안전한
외부 시스템은 게스트 시스템에서 실행되는 서비스에 액세스 할 수있는 방법이 없습니다.
적은 일
모든 구성 할 필요가 없습니다
Forwarded Port
구성하는 방법
Host-Only Networks
config.vm.network :"hostonly", "192.168.0.0"
# 방랑자 버전 # 1config.vm.network :private_network, ip: "192.168.0.0"
# 방랑자 버전 # 2이 회선
Vagrantfile
을 사용하면 방랑자가 고정 IP 주소를 가진 개인 네트워크를 만들도록 지시합니다.192.168.0.0
호스트의 IP 주소는 항상 동일한 IP 주소이지만 최종 옥텟은 1입니다. 위의 예에서 호스트 시스템은 IP 주소를 갖습니다
192.168.0.1
.
게스트 OS 내부의 기본 게이트웨이를 통해 호스트 시스템의 포트에 액세스 할 수 있습니다. (일반적으로 IP는 10.0.2.2
.)
예를 들어 호스트 시스템의 포트 8000에서 웹 서버를 실행하는 경우 ...
echo 'Hello, guest!' > hello
python -m SimpleHTTPServer 8000
Vagrant VM 내부에서 액세스 할 수 있습니다 10.0.2.2:8000
( 10.0.2.2
게스트의 기본 게이트웨이 IP 제공 ).
vagrant ssh
curl http://10.0.2.2:8000/hello # Outputs: Hello, guest!
게스트 OS 내에서 기본 게이트웨이의 IP를 찾으려면 netstat -rn
(또는 ipconfig
Windows 게스트에서) 실행 하고 대상 IP가있는 행 0.0.0.0
(또는 Windows의 "Default Gateway"필드 )을 찾으십시오 .
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.33.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
을 사용하여 프로그래밍 방식으로이 IP를 추출 할 수 있습니다 netstat -rn | grep "^0.0.0.0 " | tr -s ' ' | cut -d " " -f2
.
출처 : vagrant virtualbox machine에서 호스트 PostgreSQL과 연결하는 방법 ; VirtualBox 게스트 OS에서 호스트 시스템에 연결 하시겠습니까?
~/.ssh/config
호스트 컴퓨터에서 다음을 추가하십시오 .
Host 127.0.0.1
RemoteForward 52698 127.0.0.1:52698
를 통해 로그인 한 경우 Vagrant에서 호스트 시스템 포트 52698의 서비스에 액세스 할 수 있습니다 vagrant ssh
.
netstat -lt
vagrant VM에서 실행 하고 다음 줄에 메모하여 작동하는지 확인할 수 있습니다 .
tcp 0 0 localhost:52698 *:* LISTEN
tcp6 0 0 ip6-localhost:52698 [::]:* LISTEN
I can access services running on my host machine via its local IP address (not its loopback address). I tested by creating an http server on port 80 (and then on port 987) and curl
ing 197.45.0.10:80 and 197.45.0.10:987 (actual ip address changed to protect the innocent). It worked both times, and I don't have any special vagrant configuration (no public_network, no forwarded_port) and while I do have some ports forwarded via PuTTY, I don't have ports 80 and 987 forwarded. So maybe try using the host machine's local or public IP address.
And if you want to access (ssh into) one guest vagrant instance from another, you can enable public_network
as well as forwarding from port 22 in the Vagrantfile
like this:
config.vm.network "public_network"
config.vm.network "forwarded_port", guest: 22, host: 2200
Then as long as that port is open (ie do some more port forwarding in your router config) you can access that machine from anywhere, even the outside world.
참고URL : https://stackoverflow.com/questions/16244601/vagrant-reverse-port-forwarding
'Programing' 카테고리의 다른 글
Playground에서 비동기 콜백을 실행하는 방법 (0) | 2020.07.21 |
---|---|
'for'루프를 사용하여 C ++ 벡터를 반복 (0) | 2020.07.21 |
SQL 테이블에서 레코드를 어떻게 복사하지만 새 행의 고유 ID를 교체합니까? (0) | 2020.07.21 |
많은 수의 파일에 대한 빠른 Linux 파일 수 (0) | 2020.07.21 |
UNIX / LINUX에서 명령이 걸리는 시간을 추적 하시겠습니까? (0) | 2020.07.20 |