딥러닝 개발환경

9-2. 원격접속 (배경지식2: IP 종류, 포트포워딩)

Do-Woo-Ner 2020. 4. 17. 16:44

안녕하세요~


이번글에서는 앞서 언급한 IP의 종류에 대해서 말씀드리도록 할게요!



앞서 IP가 물리적 위치의 고유 ID라고 했는데 ipTIME 공유기를 사용하시는 분들 보면 192.168.0.1, 192.168.0.2, 192.168.0.3, ... 이런 IP 주소들을 보신적이 있을거에요. 이상하게 경기도에서도 저런 IP를 쓰고, 부산에서도 똑같은 IP를 쓰고 ... 이게 어떻게 된것일까요?


지금부터 이러한 궁금증을 해결하기 위해 IP 종류에 대해서 알아보도록 할게요!





1. IP 종류


간단하게 IP 종류를 나눈다면 아래와 같이 나눌 수 있어요.




1) 공인IP VS 사설IP


1-1)공인IP


앞서 IP가 물리적 위치의 고유 ID 라고 말했던 의미는 공인IP를 의미한거에요. 

ICANN이라는 국제기구가 국가별로 사용할 IP 대역을 관리하고 우리나라에서는 KISA가 국내IP 대역을 관리하고 있어요. 



1-2)사설IP


점점 시대가 발전하면서 인터넷으로 서로 연결할수 있는 장치들이 증가하게 되었어요. 공인IP를 이용하면 금방 IP가 소진되기 때문에 사설IP라는 개념을 만들게 되었어요.


아래 그림을 보면 공인IP는 외부망들로 연결이 되어있는걸 알 수 있고, 사설IP는 내부망으로 연결되어 있다는걸 알고 있어요 (그래서 종종 외부IP를 공인IP라고 하는 경우도 있고, 사설IP를 내부IP라고 하는 경우도 있어요)

<그림1>



사설 IP를 사용하면 중복된 IP를 사용할 수 있어요. 먼저 사설IP 클래스를 살펴볼게요.


A클래스: 10.0.0.0 ~ 10.255.255.255

B클래스: 172.16.0.0 ~172.31.255.255

C클래스: 192.168.0.0~192.168.255.255


결론부터 이야기하면 하나의 공인IP당 위에 언급된 사설IP를 중복해서 사용할 수 있어요. NAT 기술을 이용하면 가능하다고 합니다만 여기서는 기술에 대한 언급은 하지 않을게요!


예를 들어, 제가 데이터 학과가 있다고 해볼게요. 이곳에는 201, 202, 203호 연구실이 있어요. 각 연구실에는 공인IP가 있어요. 제가 있는 연구실은 202호인데 이곳에 할당된 공인IP를 알아볼게요. 네이버에서 '내 아이피'라고 검색하면 쉽게 검색할 수 있어요. 일단 맨 뒷자리가 8이네요.




그리고 제 연구실(202호)의 공인IP에 ipTIME 공유기를 연결해서 사용하고 있어요. 저는 ipTIME에서 사설IP를 설정해 주었어요. 사설IP의 게이트웨이인 http://192.168.0.1/ IP주소를 웹 브라우저에 치면 아래와 같은 창이 뜰거에요. 이곳에서 제 연구실안에 있는 10대의 컴퓨터에 각각 사설IP를 할당해 줄거에요. 예를 들면, A 컴퓨터에는 192.168.0.2, 제 컴퓨터에는 192.169.0.3 이런식으로 말이죠.



 

CMD 프롬프트 창에서 ipconfig를 치면 사설IP주소가 검색돼요. 설정해준대로 192.168.0.3 사설IP가 검색되는걸 확인할 수 있어요!







2) 고정 ip VS 동적 ip


2-1) 고정 ip


우리가 일반적으로 인식하고 있는 ip는 고정ip 에요. 즉 해당 위치에 하나의 고유 ip 주소가 부여되고 시간에 따라 변경되지 않아요. 만약 네이버 서버의 ip가 시간에 따라 동적으로 바뀐다고 하면 어떻게 될까요? 바뀌는 순간에 무언가를 저장하거나 한다면 문제가 발생할 수 있어요. 그래서 이렇게 중요한 서버로 사용되는 IP는 고정ip로 사용한답니다.



2-2) 동적 ip


그런데 고정ip에는 한 가지 단점이 있어요. 예를 들어, 한 부서에 ip가 3개이고 고정ip로 사용하고 있다면, 컴퓨터 3대에 각각 고정ip를 할당하기 때문에 더 많은 컴퓨터를 사용할 수 없을거에요. 그런데 동적ip를 쓰면 3개의 공인ip를 8대의 컴퓨터가 동적으로 돌아가면서 쓸 수 있어요. 안쓰고 있는 컴퓨터에서는 ip할당이 안되고 인터넷을 쓰는 컴퓨터에 ip를 할당하는 식인거죠. 


정리하면, 서버와 같이 많은 사람들이 접속하고 중요한 작업물들을 네트워크 상에서 저장할때는 고정IP를 사용하고 각 가정에서 사용하는 공인IP는 동적(유동)ip로 부여하고, 공인ip를 이용해 사용하는 사설ip를 유동 또는 고정ip로 부여하게 돼요. 


보통 KT, SKT, LG U+ 같은 ISP업체들이 인터넷을 설치해주고 공인IP를 동적ip로 할당해주는데, 이때 동적ip로 할당해주려면 그때 그때 마다 할당시켜주어야 하니까 이러한 작업들을 운영 또는 관리를 해주는게 필요하겠죠? 이렇게 동적ip를 운영 또는 관리를 해주는 시스템을 DHCP (Dynamic Host Configuration Protoocol)이라고 해요. 그리고 DHCP 기능을 하는 서버를 DHCP 서버라고 합니다.



좀 더 자세한 설명은 아래 영상을 참고하세요~







3) 공유기


앞서 공인 ip를 동적ip로 할당해서 사용할 수 있다고 했는데, 사설IP도 마찬가지로 동적ip로 할당해 이용할 수 있어요. 동적 ip로 관리하기 위해서는 DHCP 서버가 필요하지만 이러한 기능이 탑재되어 있는 기기가 공유기입니다. 그래서 공유기에 공인IP가 할당된 인터넷 선을 연결하고, 공유기에 맞물린 컴퓨터들에는 사설ip를 부여해주어 사설 네트워크(망)를 만들어주게 됩니다. 


공유기에는 WAN, LAN이라는 글자가 있는지 WAN은 광역(Wide area) 네트워크를 의미하기 때문에 LAN선을 이용해 공인IP와 연결시키면 되고, LAN은 국지적(Local area) 네트워크를 의미하기 때문에 공유기에 연결할 컴퓨터들을 LAN선으로 연결시키면 됩니다.  


공유기 또한 외부IP와 연결되기 때문에 라우터 기능이 탑재되어 있고, 공유기 자체에도 IP를 할당해주어야 하는데 이때 할당되는 IP주소를 게이트웨이 주소라고 합니다. 앞서 설명한 게이트웨이 주소와 동일한데 공유기를 통해 외부IP와 내부IP를 연결시킬 수 있는 gate라는 의미로 이해하시면 될 것 같아요.


<그림2>




<그림3>


우리가 공유기와 컴퓨터를 연결시켜주면 자동으로 컴퓨터에 ip 주소가 부여되는데요. 이것이 공유기에 탑재된 DHCP 기능을 이용해 동적으로 ip가 할당 시켜준 것이라고 볼 수 있어요. 또한 새로운 컴퓨터를 두 대 설치하여 ip주소를 할당하려고 할때, 현재 1, 2, 5라는 ip가 사용되고 있다면 공유기(DHCP 서버)가 자신과 연결된 컴퓨터의 ip주소를 검색하고 빈자리에 해당하는 3, 4를 부여해주게 됩니다.

DHCP 서버에 따라 7일 또는 한달에 한 번 동적으로 ip 주소가 갱신됩니다. (종종 컴퓨터 LAN 선이 빠져있어서 다시 꽂으면 사설ip 주소가 바뀌는 경우가 있어요~)


하지만 공유기에서는 사설ip를 고정시켜 고정ip 운영방식으로 설정해줄 수 도 있어요. 만약 내가 원격접속해서 사용하려는 컴퓨터가 있는데 매번 동적으로 ip가 바뀐다면 접속이 끊기거나 재접속할수가 없겠죠?







2. 포트 포워딩


본래 포트라는 용어는 여러 곳에서 사용하고 있는 단어지만 보통 소프트웨어에서는 네트워크(IP) 상에서 프로세스를 식별하기 위해서 사용되는 개념이에요. 


포트에 대한 구체적인 개념은 하드웨어에서 사용할때랑 소프트웨어에서 사용할때랑 달라지긴 하지만,

이곳에서는 정말 단순하게 포트에 대해서 설명하도록 할거에요.


여기서부터 원격접속의 원리가 설명이 되니 집중해서 봐주세요~!


앞서 우리는 공인IP와 사설IP에 대해서 알아보았어요. 만약 우리집의 컴퓨터에서 내가 있는 회사의 컴퓨터에 접속하려면 아래와 같은 순서를 거치게 될거에요.


"우리집 사설 IP -> 우리집 공인 IP -> 회사 공인 IP -> 회사 사설 IP"


그런데 앞서 사설 IP는 중복이 가능하다고 했었죠? 그래서 우리집 사설 IP에서 회사 사설 IP로 바로 접속하지는 못하고 우리집 공인 IP와 회사 공인 IP를 거쳐야만 하는데, 만약 우리집에서 회사 사설IP로 원격접속을 하려고 한다면 어떻게 해야할까요? 회사 사설 IP로 바로 접속이 불가능하니 회사 공인 IP로 먼저 접속해야겠죠?


그런데 문제는 회사 사설 IP 주소를 모른다는 점이에요. 이러한 문제를 해결하기 위해 등장한것이 포트포워딩이라는 개념이에요!


공유기에서는 외부에서 A라는 포트가 들어올때, 사설 IP에 B라는 포트로 연결하도록 설정해 줄 수 있어요. 이런 과정이 포트를 전달(forwarding)하는것 처럼 보인다고 해서 포트 포워딩이라는 이름이 붙여졌어요. 


아래 그림을 참고해 볼게요. 공유기에 공인 IP로 들어오는 80번의 포트가 들어오면 사설 IP 192.168.0.2에 연결시켜주기 위해 192.168.0.2 IP주소에 80번 포트를 부여해줍니다. 이렇게 설정해주면, 우리집에서 회사의 컴퓨터1에 해당하는 사설IP에 원격접속할때, 12.34.56.78:80 이라고 입력해주면 먼저 회사 공인 IP역할을 하는 공유기에 접속하게되고, 회사 공유기에는 외부에서 80번 포트가 들어오면 192.168.0.2의 80번 포트로 연결하도록 설정되어 있으니 컴퓨터1로 접속하게 되는거에요. 


뭔가 말이 복잡해진거 같긴한데, 그냥 외부에서 사설IP를 접근할때 포트를 이용한다라고만 알고 계시면 될 것 같아요.


<그림3>



아래 그림에서는 외부에서 8080 포트를 이용해 접속할 때, 192.168.0.3 사설IP에 접속할 수 있도록 설정되었고, 8081 포트를 이용해 접속할 때는 192.168.0.4 사설 IP에 접속할 수 있도록 설정되었네요.

<그림4>



아래그림은 실제 ipTIME에서 포트포워딩 설정해주는 방식이에요 (자세한건 윈도우 원격접속 편을 참고해주세요~). "외부에서 공인IP:8081 방식으로 접속하면 내부 사설IP 192.168.0.4에 접근하도록 해주는데 이때 접근수단을 내부포트 80을 통해서 하도록 한다"라고 이해하면 될 것 같습니다~


<그림5>





 

이번장까지해서 원격접속에 대한 배경지식들을 알아보았어요. 그럼 다음장부터 본격적으로 원격접속 실습을 해보도록할게요!





[글 래퍼런스]

http://gotocloud.co.kr/?p=320

https://lamanus.kr/59

https://ydeer.tistory.com/18

https://run-it.tistory.com/19


[그림 래퍼런스]

그림1

https://gominless.tistory.com/entry/%EB%82%B4%EB%B6%80-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%82%AC%EC%84%A4-IP-%EC%99%B8%EB%B6%80-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B3%B5%EC%9D%B8-IP%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B4

그림2

https://opentutorials.org/course/3265/20033

그림3

https://lamanus.kr/59

그림4,5

https://opentutorials.org/course/3265/20038