이전 컴잘알 시리즈에 적었지만, 내 본업은 시스템 어드민이고, 시스템 어드민이 주로 하는 일 중 하나가 네트워킹이기 때문에 이번 글이야말로 내 분야에 대해 글을 싼다고 볼 수 있겠다.
이번 글은 글만 수두룩 빼애액 빼애액한데, 그림을 넣을려고 해도 너무 전문적인 것 밖에 없어서 많이 못넣었어. 가능한 건 만들어서 넣었으니 허접함을 감안하길 바람.
그래도 VPN을 통해서 게임을 하는 게 어떤지 궁금한 캡슐리어는 천천히 읽어봐. 나중에라도 도움이 될 거야. 그리고 쉽게 쓰도록 노력했어.
대부분의 게이머들은 VPN은 외국겜할 때 김치 IP 차단된 거 가능하게 하는 프로그램 정도로만 알고있지? 하지만 VPN은 원래 기업에서 직원들이 외부로부터 내부 전산망을 접속할 때 데이터가 유출되지 않게끔 좀 더 안전한 연결을 확보하기 위한 시도에서부터 시작했어. 아래 그림은 목적지가 WWW라고 되어있는데, 그냥 그걸 회사라고 생각하고 봐줘.
어차피 오늘의 주제가 VPN이니 VPN에 대해 설명을 해야하는데, 이걸 설명하려면 사실상 현 세대 IT 네트워킹 기술의 근간이 되는 TCP/IP에 대해 간략하게라도 설명을 해야 알아먹을 수 있기 때문에, 좀 더 원론적인 부분부터 시작해보자. 컴알못을 위해서 아주 쉽게, 그리고 복잡한 내용은 대충 건너뛰고, 용어도 아주 컴알못스러운 단어들만 쓸테니까 현업에 종사하는 입갤러들은 좀 이해해줬으면 해.
TCP/IP
컴알못들도 한 번쯤은 들어봤을 이 TCP/IP라는 단어는, 현재 우리가 인터넷을 할 때 사용하는 기술이야. 지금 이 글을 보고있는 입갤러의 컴퓨터는 바로 TCP/IP를 통해서 이 글을 보고있는 셈이지. TCP는 아주 간단하게 말하자면, 내가 데이터를 주고받을 때 확실히 받았는지 상대방이랑 반드시 확인을 한다는 방식이야. 다운로드하다가 중간에 삼천포로 빠진 데이터가 있으면, 전송자한테 다시 요청해서 다 받아내지. 그렇다면, 확인을 안하는 방식도 있겠네? 맞아. 그건 UDP라고 불러. UDP는 데이터를 한 번 보내면 그 이후는 나 몰라라야. 보통 실시간 영상 스트리밍이 UDP를 사용하는 경우가 많은데, 짐작하다시피 실시간이니까 어차피 지나간 영상은 의미가 없지. 이브에서도 일부 데이터는 UDP를 사용하는데, 어떤 데이터를 위해서 쓰는지는 공개가 안되어있는 거 같아.
IP는 쉽게 설명해서 현재 우리가 쓰는 IP 주소라는 것을 이용하는 걸 IP라고 해. IP도 버전이 있는데, 현재 버전은 4이고 32비트야. 즉, 2의 32승만큼의 크기를 갖지. 2^32 = 대충 43억개 약간 안되는데, 다들 이브 캡슐리어니까 밀/빌 단위에 익숙하지? 대충 4.3빌개 정도 돼. 엄청 많아보이지만, 사실 오래 전부터 부족해서 난리야. IP 갯수의 상당수는 미국이 갖고있어서, 미국에 사는 사람들은 가정용 인터넷인데도 불구하고 IP 주소가 거의 바뀌지 않을 정도로 주소가 남아돌지만, 한국에서는 수시로 바뀌지. 너무 부족하거든. 인터넷을 일정시간 동안 안쓰는 집의 주소를 빼서 다른 집에 주는 거야. 카드 돌려막기랑 비슷하지.
그래서 이 문제를 해결하기 위해서 IP주소의 크기를 늘리는 연구를 20년 넘게 이전부터 해왔는데, 현재 상용화되서 쓰이고 있는 버전은 6이고 IPv6라고 표기해. 크기는 128비트이고. 2의 128승이니까 알아서 계산기 때려봐. 사실 사용되기 시작한 건 꽤 오래됐는데, 아직도 IPv4를 쓰는 이유는, 전 세계 대부분의 전산망들이 IPv4로 구축되어져있는데 이걸 v6로 갈아엎으려니 너무나도 대규모의 작업이라 엄두가 안나서 못하고 있지. 쉽게 비유해보자면, 어느 한 국가가 전 국토에 깔린 전기를 110v에서 220v로 하루아침에 갈아타려는 작업과 비슷하다고 보면 되지않나 싶네. 가정에서야 콘센트만 바꾸면 되겠지만 전기회사 입장에서는 변전소, 변압기, 전신주 등등 여러가지가 있을텐데 내가 전기는 잘 몰라서 비유가 맞나 모르겠군. 참고로 2014년부터 SK텔레콤에서 갤럭시 노트4부터 음성이랑 데이터 통신에 v6를 사용하고 있다고 해. 하지만, 전 세계가 v4에서 v6로 전부 갈아타는데에는 아직도 수십년 이상 걸릴 것으로 예상해. 일단 내가 일하는 분야(오픈스택 클라우드)에서조차도 v6는 아예 관심 제외대상일 정도니깐.
내부 전산망
위에 TCP/IP에 대해 설명했으니까, 이제 좀 더 심화학습에 들어가보지.
우리가 알고있는 모든 IP주소라는 건, 전 세계에서 인터넷을 통해 어디에서나 접속이 가능해. 그러다보니, 내부에서만 쓸 수 있는 주소도 있었으면 좋겠다고 생각해서, 내부 전용 주소가 따로 만들어졌어. 입갤러들이 공유기 설정할 때 보면 주소가 대부분 192.168.1.1 뭐 이런 주소가 나오지? 이게 바로 내부 전산망 주소야.
내부 전산망은 192.168 주소만 있는 건 아니고, 총 3개의 클래스가 있어. 10.0.0.0, 172.16.0.0, 그리고 192.168.0.0 이렇게 3개인데, 난 10.0.0.0이 타이핑하기 쉽다는 이유만으로 집에서 10.0.1.1을 설정해서 쓰고있지. 192.168 이거 타자치기 너무 귀찮지 않아?
암튼, 3가지 타입의 차이점은 사이즈가 달라. 공유기에서 기본값으로 설정된 192.168.1.1이라는 주소는 사실 사용 가능한 네트워크의 크기가 가장 작다는 이유만으로 공유기들이 기본값으로 채택한 것 같은데, A 클래스인 10.0.0.0은 총 1,600만개의 내부 IP주소를 설정할 수 있고, B클래스인 172.16.0.0은 백만개, 그리고 마지막 C클래스는 6만 5천개 가량을 설정할 수 있지.
이딴 얘기를 왜 하냐고? VPN 써서 핑 30 이하로 낮추는걸 설명하려면 알아야하니까 설명하는 거야.
공유기
자 이제 공유기 얘기를 해보자. 원론적인 질문부터 해보지. 우리는 왜 공유기를 쓸까?
이유는 단 하나야. 한정되어있는 IP주소를 여러 대의 기기들이 같이 나눠쓰기 위해서 쓰는 거야. 말 그대로 "공유"하는 기계잖아? IP주소를 공유하기 위해 만들어진 이 기계는, 인터넷 회선 제공업체(ISP)가 공인 IP를 할당해주면 공유기는 그 IP 주소를 받아서 NAT/Masquerade라는 기술을 사용해서 외부로 인터넷이 되게 해주지.
그래서 공유기는, 공유기에 연결하는 기기들에게 위에 설명한 내부 전산망용 IP주소를 하나씩 할당해주는데, 원래는 사용자가 기기들에게 번호표 나눠주듯 일일히 하나씩 번호를 줘야해. 너는 192.168.1.10 쓰고, 너는 192.168.1.11 써. 근데 이렇게 하면 겁나 불편하겠지? 이걸 자동화해주는, 저번에 구글 스프레드시트 글에 적은거 기억나남? 컴덕은 자동화에 환장하지, 암튼 이걸 자동화해주는 프로그램을 DHCP라고 불러.
대충 넘어가려고 했는데, 내면의 설명충이 등판해서...
늬들이 공유기 설정할 때, 서브넷 마스크라고 해서 255.255.255.0 이라는거 적지? 대부분은 원래 255.255.255.0 적는 거에요 라고 알고있고, 그 값만 넣어야한다고 알고있지만, 사실은 이 주소에는 기술적으로 굉장히 많은 것들을 담고있어. 다 설명하기에는 무리지만, 255.255.255.0과 관련된 내부의 어떤 특수한 주소를 통해서 공유기에 연결된 기기들이 "나 IP주소 필요함. 할당 좀 해주삼" 하고 외치면 공유기가 "옛다" 라고 내주는 거지. 이런 일련의 작업들을 다 퉁쳐서 DHCP라고 해.
근데 NAliper가 말한 이유 중에서 "니네가 통신사에서 받는 공인IP를 사설공유기가 사설 IP로 바꿔주는 과정에서 핑이 지연될수있다"라는 말은 현업 시스템 어드민 입장에서는 납득이 안돼. 왜냐면, NAliper가 말한 "통신사측에서 보내주는 공인 IP를 사설IP로 바꿔서 PC에 보낸다"가 바로 공유기가 하는 일이거든. 통신사에서 제공하는 공유기들도 마찬가지일테고. 하지만, 이 발언이 고객센터 직원 입장에서 했다면 이해는 돼. 사설 공유기 못쓰게 하고싶을테니까.
어쨌든 아쉽게도 이 DHCP 작업에는 네트워크 속도가 지연이 될만한 요소가 전혀 없어. 공유기 입장에서는 쌩판 처음 보는 녀석이 나타나서 "어이 공유기 형씨, IP 좀 주소" 하면, 처음 번호표를 발부하느라 시간이 0.00001 초쯤 걸릴 수 있겠지만, 어차피 이건 운영체제가 부팅되면서 이루어지는 작업이기 때문에 이브 할 때는 이런 일이 생기지 않을 뿐더러, 각 기기들은 할당받은 IP를 캐쉬에 저장을 시켜놓기 때문에, 할당된 주소를 쓰는 다른 기기가 없으면 각 기기들은 알아서 캐쉬에 저장된 주소를 불러다 쓰게 되지. 컴퓨터가 켜진 상태에서는, 공유기들이 할당한 주소를 잘 쓰고 있는지 중간중간 한 번씩 확인도 해주기 때문에 사설 IP로 바꿔주는 과정에서는 사실상 지연되는 작업이 없다고 보면 돼. 모바일은 좀 지연될 수 있어. 전원 관리 때문에 화면 꺼지면 내부적으로는 와이파이도 같이 꺼지니까, 화면 켜질 때 WiFi 연결해야하고, 그다음 DHCP를 요청하니까 여기서 약간 지연은 생길 수 있고, 또 WiFi 자체의 태생적인 문제가 있어서 지연될 소지는 다분하지만 이건 여기서 설명하지 않을께.
여기까진 이해 되삼?
VPN
이제 드디어 대망의 VPN을 설명할 차례야.
맨 위에서 VPN은, 직원들이 회사의 내부 전산망에 접속할 때 좀 더 안전하게 접속하기 위해서 만들어졌다고 했지? 이게 뭔말인지 알아야만 게임할 때 VPN은 허상이라는 걸 알게되니까 설명을 해보지.
보통 회사들은 내부에서 너무나도 당연한 얘기지만 내부 전산망 주소를 사용해. 대기업들은 10.0.0.0이라는 큰 A클래스 네트워크를 사용할테고, 총 직원 규모가 500명 이하라면 내가 일하는 곳처럼 B클래스를 사용하게 돼. 뭐 A클래스 쓴다고해서 문제가 있는 건 아니지만, 좀 더 높은 상위 기관이랑 통신을 할 때 네트워크 주소가 서로 겹친다거나, 아니면 관리상의 이유로 인해서 보통은 각자 사이즈에 맞는 클래스를 쓰지.
예를 들어보자.
우리 회사에 사원 관리용 웹사이트가 있다고 쳐. 여기는 외부에서는 접속이 안되고, 회사 내에서만 접속이 가능해. 그리고 내 주소는 123.123.123.123이고 사원관리용 내부 웹사이트 주소는 172.16.2.3 이라고 치자.
인터넷에서 이 주소 암만 쳐봐야 접속이 안돼. 이 주소는 국제 인터넷 표준화 기구에서 공식적으로 문서화 시킨 내부 전산망 주소이므로 컴퓨터들이 알아서 내부 네트워크를 검색하게 되어있지 (To 컴잘알: 대충 넘어갑시다).
그런데, 월화수목금금금 일하는 헬조선의 기업들은 자기 직원들이 퇴근해서도 집에서 일을 할 수 있게 해주고 싶었어. 그러다보니 외부 세계 인터넷과 내부 회사 전산망 간에 터널을 뚫어서 서로 통신을 하게 만드는 방법을 개발했어. 그런데 이 터널이 외부 해커들이 엿보면 안되니까, 이 터널을 들락날락하는 정보들을 암호화까지 시켜놨지. 이 암호화 방식은 여러가지가 있는데, 보안에 취약한 암호화 기법들은 이미 다 사장됐고, 현재 쓰이는 암호화 방식들은 사실상 외부에서는 훔쳐보는 게 불가능해. 암튼 그래서 VPN 서버를 하나 장만했고, 46.46.46.46이라는 공인 IP를 부여했어. 이제 집에서 인터넷을 통해 VPN 서버까지는 접속이 가능하게 된 거지.
자 그렇다면, 보내는 쪽도 암호화하고 받는 쪽도 암호화를 한다면, 암호화해서 받은 데이터를 다시 복호화시켜야하겠지? 암호화/복호화라는 게, 굉장히 수학적인 계산식이라서 CPU에 부담을 많이 주게 돼. 그런데 문제는, 대부분의 게이머들이 공유기에 딸려나오는 VPN 기능을 사용하고있고, 결국 구리고 구린 공유기에 달린 CPU가 VPN의 암호화/복호화를 하게 되는거지. 대부분의 국산 공유기 CPU들은 성능이 아주 구려서 모 회사의 공유기는 한 1년 지나면 망가지지.
참고로, 내가 애플에서 애플 에어포트 익스트림 베이스 스테이션이라는 겁나 비싼 공유기를 무려 10년 전에 샀는데 아직도 쓰고있어. 그리고 최근에 구입한 pfSense라는 방화벽에는 구린 씨퓨가 달려있긴하지만 대신 Cryptographic Accelerator라는 VPN 암호/복호처리용 보조프로세서가 달려있지. 그래야 공유기에 달린 CPU가 오래 가거든.
암튼, 다들 짐작하겠지만, CPU가 이 데이터들을 암호화/복호화 하는 과정에서는 당연히 지연이 생긴다. 공유기가 VPN 암호화/복호화 하는 거 말고도 할 일이 참 많거든. 기기들 DHCP 확인해야지, 외부에서 접속 들어오는거 차단/허용해줘야지, ISP랑 통신해야지, 다른 컴퓨터에서 다운로드하는거 처리해줘야지... 무쟈게 바쁘신 몸이라 VPN 데이터 처리하는 과정에서 지연이 생기겠지만, 일단 입갤러들의 공유기는 비싼 거라서 CPU에서 생기는 지연은 없다고 치자. 암튼 VPN 처리과정은 버튼 하나 눌러주는 정도로 간단한 건 아냐.
위에 예에서 내 주소는 123.123.123.123이고 사원관리용 내부 웹사이트 주소는 172.16.2.3 이라고 가정했지? 아까 위에서 회사에서는 외부 접속용 VPN으로 46.46.46.46 이라는 주소의 VPN 서버를 만들었다고 했지? 그러면 46.46.46.46 이라는 VPN 서버는 스스로가 터널이 되서 나와 내부 웹사이트를 연결시켜 주게 되지.
자, 개념은 간단해 그렇지? 이제 왜 VPN이 핑 줄이는데 도움이 안되는지를 알아보자.
다들 도스창 열어서 같이 따라해볼 수 있게해줄게.
우리가 인터넷을 할 때, 인터넷 창 열고 www.naver.com 이라고 치면, 직행열차처럼 우리집에서 네이버까지 한 방에 갈까? 사실 여기에는 www.naver.com이라는 주소를 IP주소로 변환하는 과정이 하나 더 있지만, 글이 너무 길어지니 일단 그건 생략할게. 암튼 한 방에 갔으면 참 좋겠지만, "아쉽게도" 라고 말할 수 없을 정도로 너무나도 많은 톨게이트를 거쳐가야돼. 도스창 열고 아래 명령어를 쳐서 엔터키만 치고 다시 이 글로 돌아와. 시간이 좀 걸리거든.
tracert www.naver.com
이 명령어는, 현재 내 컴퓨터에서 목적지까지 가는데 거쳐가는 모든 톨게이트를 다 보여줘. 이 톨게이트를 전문용어로 게이트웨이라고 하는데, 거의 대부분은 방화벽들이 이 역할을 해. 그깟 국내 네이버 웹사이트 접속하는데 거치는 게이트웨이가 너무 많지? 보통은 적어도 10개 이상은 거쳐갈 거야. 그리고 보통 이러한 경로들은 각 게이트웨이마다 캐쉬 같은 형태로도 저장이 되어있기 때문에, 접속할 때마다 게이트웨이가 휙휙 바뀌진 않아.
또한 이러한 경로를 전문용어로 라우팅 테이블Routing table이라고 하는데, 중간중간 거쳐가는 최적의 게이트웨이들의 최적의 경로를 알고있다면, 내가 직접 경로를 수정해서 쓰는 것도 가능해.
이브온라인의 핑을 줄이기 위해서 VPN을 접속한다면 당연히 해외에 있는 VPN을 사용하겠지? 그렇다면, 생각을 해보자. 우리집에서 네이버까지 가는데만 해도 이렇게 많은 게이트웨이를 거쳐가는데, 너무나도 당연하겠지만 우리집에서 VPN 서버까지 접속하는데도 수없이 많은 게이트웨이를 거쳐가겠지? 그리고 그 VPN 서버에서 이브 서버로 접속하려면 거기서도 또 또다른 게이트웨이들을 거쳐가겠지?
뿐만 아니라, 네트워크를 통해서 주고받는 데이터들은 전문용어로 패킷packet이라고 부르는데, 이 패킷에는 주고받아야할 내용 외에도 다른 부가적인 데이터들이 산더미처럼 덕지덕지 붙어있어. 이걸 전문용어로 캡슐encapsulation이라고 부르는데, 본래 주고받아야할 데이터 앞에 필요한 데이터들을 캡슐처럼 마구 붙이게 되는데, 거치는 게이트웨이 하나마다 캡슐이 하나씩 감싸지게 돼. 거치는 게이트웨이가 많을수록 캡슐이 많아지는 거지. 게다가 위에 TCP에서 설명했지만, 데이터를 주고받는 컴퓨터들끼리는 서로 잘 받았는지 보냈는지 확인을 하기 때문에, 중간에 샌 패킷들을 다시 또 보내달라고 요청하게 되고 이러면 또 늦어지지.
자, 과연 VPN이 핑을 줄이는데 도움이 될까?
만약 줄이는데 도움이 된다면 가능성은 단 하나야. 울집에서 VPN 서버까지 거치는 게이트웨이들이 겁나 짧고, 그 VPN에서 다시 이브서버까지 거치는 게이트웨이들이 겁나 짧아서, 울집-이브 보다 울집-VPN-이브가 더 짧으면 가능해.
그렇다면 왜 게임하는 애들이 VPN은 대체 왜 쓰는 걸까?
VPN의 개발목적이, 내부 네트워크에 접속하기 위해서라고 했지? 만약, 지역 제한을 걸어놓는 서비스가 있다면 한국에서는 당연히 접속이 차단돼. 그런데, VPN을 통하면, VPN 서버 측에서 해당 지역의 IP 주소를 할당해주기 때문에 마치 내가 현지에 있는 컴퓨터처럼 인식되는 거지. 대신 캡슐이 겁나 많이 쌓여서 느려지지만, 뭐 그래도 차단되는 것보단 낫겠지.
그럼 이제 VPN 논란 끗?
아 오늘도 출근했는데 할 일이 없어서 글만 싸지르네...
NAliper.에게:
니가 LG U에서 어떤 일을 하는지 잘 모르겠지만,
만약 임원이라면, 나처럼 일하는 시간에 글 싸지르면서 일 잘하는 부하직원 괴롭히지 않는 훌륭한 임원이 되길 바라며,
만약 직원이라면, 나처럼 일하는 시간에 글만 싸지르지는 무능한 직원이 되지않길 바래.
P.S.
1. 아 솔직히, 여기까지 다 이해했으면 CCNA 자격증 공부 시작해도 되겠는데...
2. 나 누구 가르치는데 소질있는듯? ㅋ
3. 나 암크 아님
끗
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.