VPN을 운영하는 데는 다양한 프로토콜이 있다. 이중 PPTP(Point-to-Point Tunneling Protocol)는 TCP/IP 상에서 안전한 통신을 지원하고 멀티프로토콜 통신을 추가한 새로운 개념의 프로토콜이다. 또한 PPTP를 이용한 통신으로, 리눅스와 윈도우 간의 VPN을 쉽게 구축할 수 있다. 이 글을 통해 리눅스와 윈도우를 이용해 서버 대 서버, 서버 대 클라이언트를 구성하는 방법을 알아본다.
정낙수, 정민, 김규현_국민대학교 OSSRC 소속 개발자
서버 접속을 위한 LAN to 클라이언트 구성하기 이제 클라이언트 구성을 알아보자. 윈도우 서버와 윈도우 클라이언트를 이용해 VPN 접속하는데, VPN 서버 어드레스 입력이 필요하다.
·윈도우 2000 구성하기 설정 → 네트워크 및 전화접속 연결 → 새연결 만들기 → VPN을 통한연결 → VPN 서버 어드레스 입력
·윈도우 XP 구성하기 시작 → 프로그램 → 보조프로그램 → 통신 → 새연결 만들기 → 회사네트워크에 연결 → VPN 연결 → 초기 연결을 사용 안함 → VPN 서버 어드레스 입력
(화면 5) 네트워크 연결 마법사를 이용한 VPN 클라이언트 설정
윈도우 서버와 PPTP 클라이언트를 이용한 VPN 접속하기 위해서는 파일 다운로드(pptpclient.sourceforge.net)가 필요하다. PPP를 설치하기 위해 준비(MSCHAP v2 & MPPE)한다.
#] tar xvfz ppp-2.4.2 #] cd ppp-2.4.2 #] ./linux/mppe/mppeinstall.sh /usr/src/linux-2.4.20 커널 컴파일시 network-device-support에서 ppp-support 항목을 yes로 클릭하고 ppp의 세부항목은 꼭 module로 설정한다.
#] make xconfig #] make dep && make clean && make bzImage && make install && make modules && make #] modules_install #] cd arch/i386/boot/ #] cp bzImage /boot/vmlinuz-2.4.20 #] cp Sysmap.map /boot/Sysmap.map-2.4.20
#] vi /etc/lilo.conf image=/boot/vmlinuz-2.4.20 label=linux-2.4.20 read-only #] lilo
#] reboot
PPP & PPTP를 설치, 설정한다.
#] cd ppp-2.4.2 #] ./configure #] make #] make install
#] tar pptp-linux-1.3.1 #] cd pptp-linux-1.3.1 #] make #] make install
/etc/ppp/options.pptp lock # client에서 serial장치 외부 접근 방지 noauth # 인증 사용 안함 nobsdcomp # bsd-compression을 사용하지 않는다 nodeflate # deflate compression을 사용하지 않는다 require-mppe-40 # mppe 암호화 사용 require-mppe-128
/etc/ppp/peers/vpn pty "pptp 210.121.xxx.xxx nolaunchpppd"#VPN 서버 IP name xxxx # xxxx는 VPN 서버에 등록된 클라이언트 ID require-mppe # mppe암호화 사용 require-mschap-v2 # chapv2 인증 사용 file /etc/ppp/optios.pptp # options.pptp 설정 사용 ipparam vpn
vi /etc/ppp/chap-secrets # ID 서버 패스워드 IP xxxx vpn xxxx * # id, 서버name, passward 기록
VPN 서버에 접속한다.
#] pppd call vpn
PPTP 클라이언트 GUI 설치한다. 리눅스에서도 PPTP 클라이언트용 GUI TOOL이 있다.
#] ./rpm -Uvh pptp-php-gtk.rpm #GUI TOOL 설치 #] ./pptpconfig #TOOL 실행
(화면 6) PPTP GUI 툴
그 다음 Poptop과 윈도우 클라이언트를 이용해 VPN에 접속한다. 리눅스 서버인 Poptop과 윈도우의 원격접속 클라이언트는 서로 호환이 되기 때문에 이와 같이 설명한 방식은 윈도우 클라이언트를 구성해서 Poptop으로 구성된 서버에 연결해 사용할 수 있다. Poptop과 PPTP를 이용해 VPN에 접속한다. 리눅스 서버인 Poptop과 리눅스 클라이언트인 PPTP의 설정은 이미 설명한 그대로 사용할 수 있다.
윈도우 서버를 이용한 LAN to LAN 구성하기 이제 LAN to LAN 구성을 해보자. (그림 4)는 LAN to LAN 혹은 게이트웨이 투 게이트웨이 간의 구성도이다. 그림의 클라이언트 내부 네트워크의 호스트인 A나 B는 NAT를 통해 클라이언트의 203.0.0.55를 인터넷에 연결할 수 있다. 하지만 (그림 4)에서와 마찬가지로 호스트 A나 B는 서버의 내부 네트워크인 전자우편이나 웹 서비스를 이용할 수 없다. 하지만 VPN을 이용할 경우 클라이언트의 요청에 의해 서버는 클라이언트와 가상 터널을 만들고 호스트 A나 B는 클라이언트와 서버의 가상 터널을 통해 서비스를 이용할 수 있다.
(그림 4) LAN to LAN 구성도
윈도우 2000 서버 버전을 이용해서 LAN to LAN을 구성할 경우 그림에서 클라이언트라고 표시된 부분과 서버라고 표시된 부분이 VPN 서버가 된다. LAN to LAN 구성은 크게, 필요할때마다 연결하는 것과 영구적으로 연결하는 것, 둘로 나눌 수 있다. 필요시 연결이라고 하면 클라이언트의 호스트 A가 메일 서버에 접속하기 위해 클라이언트에 요청을 하면 클라이언트와 서버 사이에 VPN이 생긴다. 생성된 VPN은 호스트 A나 호스트 B의 사용이 없는 경우 사라지게 된다. 영구 사용할 때 연결은 호스트의 요청이나 사용 여부에 관계없이 VPN이 존재한다.
·필요시 연결 구성하기 ① 양쪽 라우터가 VPN 서버가 될 수 있게 라우팅과 원격 액세스를 시작한다. ② 라우터간 연결을 위한 인터페이스를 설정한다. ③ 상대 라우터의 내부 네트워크 대역을 고정 경로 등록을 통해 기록한다. ④ (그림 4)의 A나 B의 요청이 있으면 연결 후 해제
(그림 4)의 클라이언트와 서버의 설정은 고정 경로시 IP 설정이 상대편 대역으로 설정하는 것만 다르고 나머지 설정은 같다. 양쪽 라우터가 VPN 서버가 될 수 있게 라우팅과 원격 액세스를 시작한다(화면 7). 라우팅 인터페이스 → 새 필요시 전화 접속 인터페이스 선택한다.
(화면 7) 라우팅 및 원격 액세스 서버 설치 마법사
라우터간 연결을 위한 인터페이스를 설정한다(화면 8). 또한 연결 형식을 VPN을 사용해 연결로 선택한다(화면 9). 만들고자 하는 VPN의 인터페이스의 유형을 PPTP로 선택한다(화면 10). LAN to LAN 연결이기 때문에 상대편 게이트웨이의 어드레스를 적어준다(화면 11). 원격 라우터 접속을 위한 계정을 사용할 수 있도록 설정한다(화면 12). 상대편 라우터가 접속할 때 사용할 계정이 된다(화면 13). 상대 라우터에 연결할 사용자 인증을 기록한다(화면 14).
(화면 8) 서버의 인터페이스 이름 설정 (화면 9) 연결 형식 선택 (화면 10) 프로토콜 방식 선택 (화면 11) 대상 어드레스 입력 (화면 12) 원격 라우터가 전화 접속하도록 사용자 계정 추가 (화면 13) 상대편 라우터가 접속할 때 사용할 계정 (화면 14) 상대 라우터에 연결할 사용자 인증 기록
상대 라우터의 내부 네트워크 대역을 고정 경로 등록을 통해 기록한다(화면 15). 경로는 IP 라우팅 → 고정 경로 → 새 고정 경로를 지정한다.
(화면 15) 고정 경로
우선 수준 등록 정보 중 라우팅 및 원격액세스 → IP라우팅 → 일반 → 등록정보 → 우선수준에서 경로원본의 고정 우선순위를 낮춘다(화면 16).
(화면 16) 우선수준 등록 정보
NAT를 위해 인터넷과 연결된 NIC의 등록정보에서 인터넷 연결 공유 탭을 활성화시킨다(화면 17).
(화면 17) 연결 공유탭
(그림 4)에서 클라이언트의 호스트 A 또는 B가 요청을 하면 VPN이 구성된다.
·영구 VPN을 연결하기 위한 구성 ① 양쪽 라우터가 VPN 서버가 될 수 있도록 라우팅 및 원격 액세스를 시작한다. ② 라우터간 연결을 위한 인터페이스를 설정한다. ③ 상대 라우터의 내부 네트워크 대역을 고정 경로 등록을 통해 기록한다. ④ 클라이언트의 원격 액세스 정책을 설정한다. ⑤ 클라이언트의 요청이 있으면 영구적으로 연결된다.
기본 설정은 필요시 연결의 설정과 같다. 하지만 클라이언트의 원격 액세스 정책이 (화면 18)과 같이 달라지며 네트워크를 형성하기 위한 요청을 클라이언트가 된다. 또한 NAS-Port-Type → VPN을 선택하고, Called-Station-ID 선택 →게이트웨이 어드레스 입력한다.
(화면 18) VPN 등록 정보
Windows-Groups에서 클라이언트 계정에 필요한 그룹을 선택한다. 사용자 계정 그룹은 시작 → 프로그램 → 관리도구 → 컴퓨터관리 → 로컬 사용자 및 그룹에서 관리할 수 있다.
Poptop을 이용한 LAN to LAN 구성하기 Poptop을 이용한 LAN to LAN 구성을 위해서는 연결을 요청하는 쪽은 클라이언트가 되고 요청받는 쪽은 서버가 된다. 물론 클라이언트나 서버는 뒤쪽으로 내부 네트워크를 가지고 있다. LAN to LAN 연결 방식과 설정은 위에서 설명한 LAN to 클라이언트와 같다. 다만 내부 네트워크를 가지기 때문에 각 내부 네트워크 호스트의 패킷이 구성된 터널을 통과해야 하는지 아닌지에 대한 ROUTE 경로의 추가와 NAT가 필요하다. 때문에 클라이언트와 서버에 공통으로 상대편 내부 네트워크에 대한 고정 경로를 추가하고 iptables나 ipchains를 이용한 마스커레이드가 필요하다.
·고정 경로 추가하기 클라이언트에서 #] route add -net 192.168.0.0 netmask 255.255.0.0 dev ppp0
서버에서 #] route add -net 10.0.1.0 netmask 255.255.255.0 dev ppp0
·클라이언트 & 서버 iptables을 이용한 마스커레이드 #] vi /etc/rc.d/rc.local echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE #] reboot
이와 같은 마스커레이드는 어떤 패킷 필터링도 하지 않은 것이다. 특정 패킷 필터링이 필요한 경우 추가시켜야 한다.
Poptop과 윈도우 VPN 서버를 이용한 LAN to LAN 구성하기 Poptop과 윈도우 VPN 서버와 연결할 때 그 설정은 이미 설명한 각 서버의 구성과 다르지 않다. (그림 2)에서 클라이언트는 윈도우 VPN 서버가 되고 서버는 Poptop으로 구성한다. 일단 윈도우의 설정은 이미 설명한 윈도우 서버를 이용한 LAN to LAN 구성 방식에서 필요할 때 설정 방법과 같다. 또한 Poptop의 설정 또한 이미 설명한 Poptop을 이용한 LAN to 클라이언트 구성 방식에서 LAN 쪽의 서버 구성 방식과 같다. 각각의 설정이 맞춰진 후 윈도우의 라우팅과 원격 액세스에서 라우팅 인터페이스 항목에서 추가한 VPN 인터페이스의 연결을 선택하면 Poptop과 윈도우 VPN 서버와의 LAN to LAN 구성이 이뤄진다. VPN 서버를 구성할 경우 서두에 열거한 여러 프로토콜 중에서 어떤 것을 선택하는지 서버 구성자의 선택에 달려있다. 또한 VPN 장비를 사용해 구성할 것인지 리눅스를 이용해 저렴하게 구성할 것인지 또한 구성자의 몫이 된다. Poptop을 이용한 서버 구성의 장점은 윈도우나 리눅스를 사용하는 클라이언트가 윈도우의 원격 접속이나 리눅스의 PPTP 툴 등을 통해 서버에 간편하게 접속할 수 있으며 윈도우나 리눅스의 다른 운영체제 하에서 LAN to LAN 구성할 수 있다는 것이다. 향후 와우리눅스의 엔터프라이즈 버전에도 이런 VPN 솔루션이 탑재될 예정이라고 하니 일반 사용자가 손쉽고 저렴하게 VPN을 구성할수 있는 날도 그리 멀지 않았다. |