이 포스트는 널널한 개발자님 강의를 참조하며 작성하였습니다.
VPN의 V는 Virtual이다. 즉, VPN은 Virtual + private Network이다. 그러면 PN이란것은 NAT기반 사설주소를 애기하는걸까? 이게 아니고 쉽게 말해서 PN이란 LAN이다. 그러니까 거리상으로 LAN이라기 보다 물리적으로 통제가 되는 네트워크를 LAN으로 보면 된다. 즉, 상대적 개념이다. 예를들어 우리집에 홈 네트워크가 있다. 이 홈 네트워크에서 gateway역할을 해주는게 공유기이다. 그리고 이 공유기에 각 종 호스트가 붙을 것이다. 그러면 이렇게 해서 작은 LAN이 완성되는 것이다. 즉, 사설망을 개념적으로 표현했을 때 이런것이고 즉, 요약하면 물리적으로 통제가 가능한 네트워크라고 보면 될 것이다. 그리고 상대적 개념이라고 위에서 언급했는데 쉽게 생각해서 우리집 LAN이랑 어느 기업의 LAN이랑 규모부터 다르다는것은 누구도 알 것이다. 즉, 이런 면에서 상대적 개념이라고 언급한 것이다. 그러면 왜 사설망을 쓸까? 우리가 인터넷이라고 하는 것은 완벽히 public 네트워크이다. 이 네트워크를 구현하고자 TCP/IP기술을 쓰고 있다. 즉, 인터넷은 비유적으로 우리 주민들이 쓰는 공공재 즉, 공원같은것으로 보면 좋을 것이다. 이런 공원에서 주민들이 같이 이용하는데 어느 누군가가 집 화장실이 아닌 공원 한 가운데에서 볼일을 보면 아주 큰일이 일어날 것이다. 즉, 이런 열린공간에서 사적행동은 안된다. 특히 보안성이 요구되는 경우에는 더욱 그럴 것이다. 그래서 PN이라 하는 것은 보안성이 요구되는 사설 네트워크를 의미하며 이 네트워크는 우리만 사용이 가능하다.
VPN에 이야기에 앞서 예시를 하나 들어보겠다. 어느 A라는 회사가 있다. 이 회사는 초창기에 PC 1대로 서비스를 운영하다가 점점 발전하면서 PC 여러대를 붙이고 그러다 L2 스위치, 라우터등 다양한 네트워크 스위치를 붙여서 하나의 LAN을 완성시킬 정도로 회사가 성장했다. 그리고 이 회사가 부산에 지점을 내려고 계획중에 있다. 그런데 회사의 문제가 생겼다. 회사에는 DB서버가 있는데 이 DB서버에는 회사의 기밀, 영업통계등의 자료가 들어가져 있고 서울본사 직원들이 이 DB서버에 접속해서 영업통계를 내고 분석하는 작업을 하고 있었는데 이 작업을 부산지사에서 똑같이 해야할 필요성이 생긴것이다. 그러면 문제는 어떻게 서울본사에 있는 DB서버를 부산지사와 연결할까? 딱 처음 드는 생각은 인터넷으로 연결하면 된다는 생각이 들었다. 하지만 인터넷은 public 네트워크이고 DB는 private하므로 인터넷 연결을 했다가 보안사고를 이끌 가능성이 있다. 그래서 다른 생각은 LAN선을 연결하자는 생각이 들었다. 하지만 모든 사람들이 알듯이 물리적으로도 불가능한 일이다. 그러면 다른 방법으로는 KT같은 ISP한테 요청을 하는 것이다. KT 전공망중에 1개를 우리 회사만 쓸 수 있게 우리회사 LAN을 확장시켜달라고 하는 것이다. 이러면 부산지사에서 DB서버 접속이 가능은 해진다. 하지만 문제는 가격이 엄청 비싸며 네트워크 속도는 인터넷의 10배 느려진다. 그래서 생각이 든게 인터넷이 public하니까 private한 DB를 인터넷 기반으로 하되 보안문제만 해결하면 가능하다는 생각이 들고 그래서 나온게 VPN이다. VPN 기술의 본질은 인터넷이라는 public한 네트워크를 인프라로 쓰되 이 위에서 PN이 요구하는 보안성을 확보해서 네트워크를 확장하는 기술 즉, LAN처럼 사설 네트워크를 확장하는 기술이 VPN이다. 그러니까 public망을 논리적으로 private하게 만들어주는 기능이 VPN인데 어떻게 구축을 할까? 그냥 인증과 암호화를 하면 된다. 즉, 무결성과 기밀성을 유지해야 하는데 무결성은 Hash알고리즘으로 기밀성은 암호기술로 유지가 가능하다.
결론적으로 이렇게 암호화하면 다른 누군가가 우리 회사 기밀 트래픽을 본다하더라도 암호화되어 있기에 확인이 불가능하다. 즉, 이렇게 암호화하는 기술을 고급스럽게 터널링 기술이라 한다.
💡 참고
재택근무에서 내 PC로 회사의 private한 네트워크를 접속할 때 VPN을 사용한다.
VPN이 장점만 있는게 아니다. 단점이 있는데 물리적으로 보호받지 못하다보니 만약에 암호화를 시켜도 이것을 해독해버리면 끝인것이다.