기본편: https://www.clien.net/service/board/lecture/15872844CLIEN
포트편: https://www.clien.net/service/board/lecture/15873771CLIEN
네임편: https://www.clien.net/service/board/lecture/15874590CLIEN
서브넷편: https://www.clien.net/service/board/lecture/15882226CLIEN
여태 보았던 내용에서 우리는 네트워크(혹은 서브넷)들이 모여서
거대한 인터넷을 구성한다는 것을 어느 정도 이해하게 되었습니다.
그런데 이렇게 네트워크의 네트워크를 구성하는 기술을 꼭 인터넷에 연결하지 않더라도
이 기술을 가져다 자기네들끼리만 네트워크를 구성하는 용도로 쓸 수도 있습니다.
즉 인터넷 처럼 누구나 사용하는 공용 네트워크(Public Network)가 아니라
사설 네트워크(Private Network)를 만드는 거죠.
특히 기업 같은 데서는 이런 사설 네트워크를 인트라넷(Intranet)이라고 부르게 됩니다.
규모만 작은 또 다른 인터넷인 셈이죠.
당연히 여기는 인터넷에 포함되는 곳이 아니기 때문에
인터넷의 IP 주소나 DNS를 관리하는 IANA의 규약 없이 임의로 IP 주소나 도메인 네임을 할당할 수 있게 됩니다.
그런데 이렇게 임의로 IP 주소를 부여하다보면 실제 인터넷에도 존재하는 IP 주소를 사용하는 경우가 있을 수 있습니다.
이게 사설 네트워크로 인터넷과 떨어져있을 때는 별 문제가 없지만
실수가 됐든 어쨌든 간에 인터넷과 연결이 되는 순간 실제로 그 IP 주소를 쓰는 네트워크와 쫑나게 되죠. (찌찌뽕?!)
그래서 이런 문제를 미연에 방지하기 위해 아예 IANA에서는 Private Network(사설망) 용 IP 주소를 미리 할당해 둡니다.
그게 우리가 VPN이나 공유기를 쓸 때 자주 보게 되는 아래의 IP 대역이죠.
- 10.0.0.0/8 (10.0.0.0 ~ 10.255.255.255)
- 172.16.0.0/12 (172.16.0.0 ~ 172.31.255.255)
- 192.168.0.0/16 (192.168.0.0 ~ 192.168.255.255)
인터넷에서는 위의 IP 주소를 가진 데이터가 돌아다니지 않도록 하고 있으며 오직 사설망에서만 쓸 수 있습니다.
그리고 아까와 같은 문제가 발생하지 않도록 사설망에서는 위의 주소를 사용하도록 권고하고 있습니다.
여튼 이렇게 별도로 구분된 사설망을 유지할 수 있는 기능도 인터넷 표준의 일부가 되어 있는 상황에서
이 기능을 다른 용도로 쓰는 재발견이 일어나게 됩니다.
IP 주소는 0.0.0.0 부터 255.255.255.255 까지 사용이 가능하지만 이런 저런 이유로 사용할 수 없는 IP를 빼면
37억개 정도가 사용가능합니다.
현재 세계 인구 수의 절반도 안되는 수준이죠.
하지만 우리는 휴대폰에 IP주소 한 개, 집 컴퓨터에 IP주소 한 개, 회사 컴퓨터에 IP 주소 한 개 이런 식으로
혼자서 여러 개의 IP 주소를 쓰고 있는 상황입니다.
그러다보니 IP 주소가 택도 없이 부족해지게 되었습니다.
심지어 유럽의 IP 주소를 IANA로부터 받아 관리하는 Ripe NCC 은 2012년에 이미 할당가능한 IP 주소를 다 썼다고도 했고요.
그나마 다행(?)인 것은 우리는 누구보다 빠르게 인터넷을 들여온 덕에 주소의 중요성을 인지하고
그럭저럭 쟁여놔서 다른 나라보다 IP 주소가 꽤나 많은 편입니다.
https://www.yna.co.kr/view/AKR20150108010800071
어쨌든 그래도 부족한 건 매 한가지 죠.
세상 모든 인터넷 기기를 업데이트 하지 않는 한 임의로 주소 범위를 늘리는 것도 불가능한 상황이다보니
생각을 쥐어짜낸 것이 사설망 1개를 호스트 1개 처럼 쓰면 주소를 덜 써도 되겠다 하는 것입니다.
예를 들어 아래와 같이 16개의 호스트가 있다면 원래는 IP 주소를 1부터 16까지 16개의 주소가 있어야만 합니다.
하지만 각각 여러 개씩 묶어서 호스트를 하나의 사설망으로 묶고 공유기를 달아주면
101부터 104까지 4개의 주소로 모두가 인터넷을 사용할 수 있게 됩니다.
이렇게 호스트 대신 서브넷으로 인터넷에 붙이는 방법을 사용하게 되면서
IP 주소 1개로도 수 많은 호스트를 붙일 수 있게되고 주소 고갈을 회피할 수 있게 되었습니다.
근데 이렇게 하고나니 엄청난 문제가 하나 생깁니다.
사실 사설망은 외부에서는 내부가 아무 것도 보이지 않습니다.
일반인들이 삼성전자 직원들이 사용하는 인트라넷에 접근할 수 없듯이 말이죠.
우리가 볼 때는 위의 네트워크에서 16개의 호스트와 4개의 게이트웨이가 모두 보이지만
101번 사설망의 1번 호스트 입장에서 봤을 땐
아래와 같이밖에 보이지 않습니다.
다른 네트워크의 게이트웨이도 그저 호스트 1개로만 보이고, 뒷쪽에 네트워크가 있는지도 모르죠.
그러다보니 103번 사설망 공유기 뒷 쪽에 있는 호스트와 통신을 하고 싶어도 도대체 접근 방법을 알 수가 없습니다.
이래서 등장하는 것이 바로 포트 포워딩(Port forwarding)입니다.
아마 공유기 설정 관련해서 가장 많은 질문과 답변이 오고 가는 것이 이 바로 포트 포워딩과 관련된 내용일텐데요,
이 포트 포워딩이라는 야바위를 통해서 이 문제를 해결합니다.
이름부터 '포트' 포워딩이니 포트와 관련된 이야기라는 건 쉽게 짐작 가능하죠?
우리는 '포트편' 설명의 그림을 통해 포트가 하는 일을 알 수 있었죠.
https://www.clien.net/service/board/lecture/15873771CLIEN
우선 윗 상황을 간략화 해서 아래와 같은 상황을 가정해 봅시다.
168.126.63.101(이하 101번) 호스트가 202.30.38.103(이하 103번) 공유기 뒷 편의
192.168.0.2(이하 2번)와 통신을 하고자 합니다.
하지만 (어림도 없지!) 사설 IP 주소 대역은 인터넷을 통할 수 없기 때문에 연결이 불가능 합니다.
반대로, 사설망에서 외부로의 연결은 별 문제가 없습니다.
그런데... 외부에서는 내부가 안 보인다고 했죠? 101번 호스트 입장에서는 윗 그림의 상황이 여전히 아래 그림의 상태로만 보이게 됩니다. 공유기 뒷쪽 사설망 부분은 아무 것도 보이지 않고 마치 공유기가 요청하고 있는 것 처럼 보입니다.
하지만 공유기는 받은 파일을 그대로 사설망 내부의 목적 호스트에게 그대로 전달을 해 줌으로서
데이터가 도달할 수 있게 되죠.
이렇게 하면 어쨌든 연결이 되긴 하는데, 사설망에는 호스트가 하나만 있는게 아니죠?
내부망에 여러 대의 호스트가 있다면 데이터가 왔을 때 이걸 누구에게 패스해 줄 지 알 수가 없게됩니다.
이 때 데이터가 어느 호스트의 것인지 구분을 하기 위해 포트가 사용됩니다.
TCP #3 -> 192.168.0.2 TCP #2 TCP #8 -> 192.168.0.4 TCP #2
예를 들어 위와 같이 포트를 연결을 해 두었다면 101번 호스트에서 파일을 보낼 때
2번 호스트로 보내고 싶다면 103번의 3번 포트로.
4번 호스트로 보내고 싶다면 103번의 8번 포트로 데이터를 넣어주면 됩니다.
그러면 공유기는 주소 변환 테이블을 참조해서 3번 포트로 온 정보는 2번 호스트로
8번 포트로 온 정보는 4번 호스트로 휙휙 던져줍니다.
이게 바로 '포트 포워딩'이죠.
원래는 포트라는게 여러 데이터를 구분하기 위해 있었던 것인데,
이제는 여러 호스트를 구분하는 용도로도 활용되게 된 것입니다.
그럼 주소 변환 테이블에 없는 포트는 어떻게 될까요?
그냥 아무 일도 일어나지 않습니다.
공유기를 쓰면 외부에서 내부 컴퓨터로 원격 데스크탑 같은 걸 할 수 없는 이유가 바로 이거죠.
원격 데스크탑 같은 건 특정 포트로 연결을 시도하는데 주소 변환 테이블에 등록이 안 되어 있는 포트라면
그냥 연결 자체를 거부해 버립니다.
이 때문에 무조건 사설망 내부 컴퓨터로 연결하려면 공유기의 포트와 내부 컴퓨터를 짝지어 줘야합니다.
아래는 IPTime 공유기의 포트포워드 설정 항목에 들어갔을 때 볼 수 있는 규칙 설정 항목과
위 그림과의 매칭되는 포인트를 연결한 설명입니다.
위에는 그냥 예시로 외부 포트(8)와 내부 포트를(2) 다른 숫자로 지정했지만
대개의 경우는 외부 포트와 내부 포트를 같은 숫자로 사용하는 것이 편합니다. 헛갈리니까요.
근데 열어주고 싶은 포트가 너무 많은 경우 포트 하나 하나를 일일이 지정해서 등록하는 건 너무 귀찮은 일이죠.
그래서 아예 기본 값으로 지정이 되지 않은 포트는 전부 특정 호스트로 포워딩을 하는 기능이 있습니다.
그게 바로 DMZ 입니다. 우리가 알고 있는 휴전선의 DMZ랑 똑같은 단어 맞습니다.
DMZ를 설정하게 되면 미지정된 포트들은 전부 DMZ에서 지정한 IP로 보내지게 됩니다.
포트는 1부터 65535번까지 있기 때문에 아래와 같이 설정해도 DMZ랑 동일한 효과가 나게 됩니다.
이외에도 Twin IP(Super DMZ) 같은 메뉴들도 있습니다만, 일반적으로는 해당 메뉴를 사용할 일은 없습니다.
Super 라고해서 혹하면 안 되고요, 느려질 수 있기 때문에 Twin IP는 꼭 필요한 경우에만 쓰시는 것이 좋습니다.
이 정도로 해서 네트워크가 왜 이렇게 생겼는지에 대한 내용이 마무리 되었습니다.
읽는 분들에게 네트워크에 대한 이해에 작은 도움이라도 되면 좋겠네요.
즐거운 하루 되세요. ^^)/
글이 괜히 술술 읽히는게 아녔어요.
그리고 덕분에 왜 ipv6를 많이 안쓰는데도 ip가 부족하다고 난리가 아직 안났는지 드디어 배웠네요. 항상 궁금했어요. ip 모자란다고 들은지가 10년이 넘었는데 그대로인거 같아서요
늘 잘읽고 있습니다! 아무것도 모른체로 집 네트워크 구성하였는데 그때 몰랐던 것들, 다른 분들의 선례들이 어떤 이유였는지 이제 명확해지는 느낌입니다!
/Vollago
여러대의 사설 ip망에서 공용ip망으로 나가고 들어올때 공용 ip 게이트장비에서 사설ip를 위한 어떤 태그를 달고 나가나요.?
별다른 태그를 달고 나가지는 않고 게이트웨이에서 장부에 기록만 합니다.
자세한 내용은 NAT 라는 것을 검색해 보시면 됩니다.
카페베네가 그란데로 바뀌었어요!!
지식의 지평을 넗여주셔서 감사합니다. 고등학교 기술교과 내용에 실으면 참 좋겠다는 생각이 듭니다.
코끼리코님도 새해 복 많이받으세요.