구리의 창고

Putty - multi hop 터널링 사용 본문

Programming

Putty - multi hop 터널링 사용

구리z 2017. 9. 6. 00:01

머리글

AWS에서 EC2 인스턴스를 이용하다보면, public ip가 없는 private instance에 접속이 곤란한 경우가 있다. 아래는 AWS 문서에서 가져온 예시인데, 1개의 동일한 네트워크에서 일부는 public ip를 갖고 일부는 private ip만 갖는 경우, private instance는 네트워크 외부에서 직접 접속이 불가능하다. 이 경우 public instance에 접속 할 수 있다면, 터널링을 통해 private instance에 접근 할 수 있다.

출처. http://docs.aws.amazon.com/ko_kr/AmazonVPC/latest/UserGuide/VPC_Scenario2.html


터널링

VPN을 사용하면 정말 좋은 선택이겠지만, 위 구성에서 네트워크의 인스턴스 중 하나만 접속 할 수 있는 경다면 터널링을 이용해 private ip를 이용해 접속 할 수 있다. 터널이라는 의미 그대로 외부와 내부의 특정 지점을 통로를 만들어주는 것을 말한다. 이 글에서 사용 할 Putty에서는 Connection > SSH > Tunnels에 해당 메뉴가 있다.

이제 시스템을 가정해보자. public instance는 public ip 1.1.1.1. prviate ip 10.0.0.1을 갖고 private instance는 private ip 10.1.0.1을 갖는다고 가정하자. 10.0.0.1과 10.1.0.1을 모든 포트 통신 가능하다고 생각해보자.

1) public instance 터널링 설정

위에서 말한대로 public instance 1.1.1.1에 접속하면서 터널링을 할 것이다. source port는 로컬 컴퓨터에 열려있는 원하는 아무포트나 적고 Destination에 최종적으로 접속하고자 하는 private instance의 private ip를 적어준다. 이렇게 설정해주면 로컬 컴퓨터에 127.0.0.1:2222 포트를 통해 10.1.0.1:22를 접속하게된다.

2) public instance 접속

터널링 설정만 한다고 끝나는게 아니다. 1번처럼 설정한 후 1.1.1.1에 접속해주도록하자. 이 때 접속되는 터미널창은 터널로 사용되므로 닫으면 안된다.

3) 터널링을 통해 private instance 접속

이제 위에서 설명한대로 127.0.0.1:2222를 통해 접속만 하면된다. 제대로 터널링이 열려있는지 확인하려면 cmd를 열어 netstat -n에 2222포트가 Listening되고 있는지 확인해보자.

마무리

만약에 네트워크를 여러번 타고 들어가야되면, 터널링을 여러 번 설정해주면된다. 3번 과정에서 또 터널링 설정을해주고 그 포트로 접속을 하면 되는 것이다.










Comments