대부분의 일반적인 VPN 솔루션은 단일 연결을 지원하는 방식으로 작동한다. 그 연결은 데스크탑 컴퓨터에서 사무실까지의 연결일 수 있으며, 그럴 경우 TCP 및/또는 UDP 기반 통신과 같은 일부 전송 프로토콜만 지원하도록 제한될 수 있다.
단일 연결이나 네트워크 및 라우팅된 연결을 지원하는 것은 괜찮지만, 시스템에 호스트 및/또는 네트워크를 더 추가하려고 하면 시스템이 더 복잡해진다. 예를 들어, 여러 호스트와 네트워크를 범위로 하고 다른 기본 프로토콜을 통해 통신을 제공하는 VPN 솔루션을 제공하기가 복잡한데다 자원도 부족할 수 있다.
이에 대한 간단한 예를 그림 1에서 볼 수 있다. 일반적인 VPN 솔루션을 사용할 때, VPN Client 1과 VPN Client 2 간의 라우팅은 VPN Host를 통해 모든 네트워크 트래픽을 라우팅해야만 가능하다. 특히 개별 호스트가 모두 동일한 네트워크 상에 있거나 인터넷과 같은 공용 인터페이스를 통해 통신 중인 경우 이와 같은 방법은 많은 비용이 든다.
그림 1. 일반적인 VPN 솔루션
사용하려는 애플리케이션이 TCP 또는 UDP 기반인 경우 프로토콜 한계는 괜찮다. 회사 인트라넷(HTTP)이나 메일 서비스(IMAP, SMTP)에 액세스해야 하는 상황에서는 이런 제한사항이 문제가 되지 않는다. 그러나 VPN 솔루션 내에서는 라우팅 및 프로토콜 지원에 제한이 있다.
GNU 가상 사설 이더넷을 사용하면 여러 호스트에서 완전한 가상 네트워크를 구성하고 빌드할 수 있다. 일반적인 VPN의 지점간 접근 방식과는 달리, GVPE에서는 가상 네트워크에 포함할 호스트 수를 원하는 만큼 설정할 수 있고 원할 때 언제든지 호스트를 작동하거나 중지할 수 있다.
이 기사에서 자세히 다루지는 않겠지만, GVPE는 새로운 연결 방법을 통해 작동할 수도 있다. 예를 들어, 기본 IP, HTTP(프록시를 통하는 방법 포함), DNS 및 ICMP에서 가상 네트워크를 지원하는 네트워크 트래픽을 라우팅할 수 있다. HTTP 프록시를 통하거나 공용 네트워크 외부의 디바이스를 통해 외부와 연결하기 위해 내부적으로 제한되는 컴퓨터 간에 가상 네트워크를 빌드할 때 이 방법을 사용할 수 있다.
GVPE에 의해 작성된 네트워크 인터페이스도 일반 네트워크 디바이스이므로, 연결 시 IP 프로토콜 이외의 프로토콜을 라우팅할 수 있다. 그 밖에도, 가상 네트워크 상에서 전송되는 정보는 그림 2에 표시된 것처럼 가상 네트워크 내에서 자동으로 적당한 호스트로 라우팅되고 구성된다.
그림 2. GVPE를 사용하는 VPN 솔루션
기존의 VPN과 비교할 때, 패킷의 라우팅과 배포가 훨씬 더 유연하다. 더 중요한 점은, 호스트 간 통신이 다양한 전송 프로토콜을 통해 이루어질 수 있기 때문에, Amazon EC2와 IBM Cloud, 내부 클라우드와 그리드 솔루션, 데스크탑과 클라이언트와 같은 공용 클라우드의 호스트에 존재하는 가상 네트워크를 작성하는 데 GVPE를 사용할 수 있다는 사실이다. 그림 3에서 이 점을 확인할 수 있다.
그림 3. 공용 및 사설 네트워크에서 가상 네트워크 작성
편의를 위해 가상 네트워크 내부의 모든 호스트에 대한 구성 정보가 공유되므로, 설정 및 구성 확장이 매우 용이하다.
GNU 가상 사설 이더넷의 보안은 공용/개인 키 메커니즘을 사용하는 OpenSSL 라이브러리를 통해 처리된다. 가상 네트워크 내부의 각 호스트에는 고유한 호스트 키가 제공되고 통신 채널을 암호화하는 데 공용 버전이 사용된다.
한편, 가상 사설망(VPN)이 이더넷 레벨 네트워크 환경을 기반으로 하므로, 각각의 호스트가 기본 이더넷 네트워크에 존재하는 것처럼 각 호스트에는 고유한 MAC 주소도 제공된다. 즉, 발신인(필요한 경우에는 수신인)의 MAC 주소를 사용하여 정보의 원본을 확인할 수 있으므로 보안 레벨이 더욱 강화되는 효과를 볼 수 있다.
하지만, 단순하고 빠른 처리를 위해 보안 네트워크의 인증과 설정은 일반적인 비밀번호 또는 인증 확인 응답 메커니즘이 아니라 공용/개인 키를 통해서만 처리된다. 따라서 부팅 시간 중에 GVPE 설치를 설정하고 사용할 수 있으므로, 연결을 수동 설정할 필요 없이 장애 또는 다시 부팅 시 가상 네트워크가 다시 작성될 수 있다.
동적 네트워크 디바이스 작성을 지원하는 데 필요한 추가 네트워킹 드라이버를 설치해야 할 수도 있지만, GVPE는 Linux®와 다수의 UNIX® 배포 버전에서
작동한다. Solaris, Mac OS X 및 Windows®를 포함한 다양한 플랫폼에서 이 서비스를 사용하는 방법에 관한 자세한 정보는 gvpe.osdep
매뉴얼 페이지를 참조한다(mingw 또는 cygwin 사용). 이 설치 작업을 수행할 때 Linux를 사용할 것이다.
GVPE를 설치하기 전, 커널에 TUN/TAP 네트워크 커널 드라이버가 포함되도록 구성되었는지 확인해야 한다. 커널 구성에서 이 드라이버를 사용해야 한다. Debian/Ubuntu 및 Fedora를 포함한 다수의 데스크탑 Linux 설치 버전에서는 이미 TUN/TAP 드라이버를 사용하도록 설정되어 있을 수도 있다.
설치 작업을 계속 진행하려면 OpenSSL과 OpenSSL 헤더/라이브러리도 설치되어 있어야 한다. 그 밖에도, 실제로 설치 작업을 수행하기 전에 어떤 암호화 및 다이제스트 방법을 사용할지, OpenSSL 설치에서 지원할 항목은 무엇인지 등 몇 가지 사항을 결정해야 한다.
GVPE는 aes-128, aes-192, aes-256 및 bf(blowfish) 암호와 sha512, sha256, sha1, ripemd160, md5 및 md4 다이제스트 알고리즘을 지원한다.
목록 1에 표시된 것처럼, openssl 도움말을 사용하여 지원되는 암호 및 메시지 다이제스트 형식의 목록을
결정할 수 있다.
목록 1. OpenSSL의 도움말
$ openssl help openssl:Error: 'help' is an invalid command. Standard commands asn1parse ca ciphers crl crl2pkcs7 dgst dh dhparam dsa dsaparam ec ecparam enc engine errstr gendh gendsa genrsa nseq ocsp passwd pkcs12 pkcs7 pkcs8 prime rand req rsa rsautl s_client s_server s_time sess_id smime speed spkac verify version x509 Message Digest commands (see the 'dgst' command for more details) md2 md4 md5 mdc2 rmd160 sha sha1 Cipher commands (see the 'enc' command for more details) aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx idea idea-cbc idea-cfb idea-ecb idea-ofb rc2 rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 rc4-40 rc5 rc5-cbc rc5-cfb rc5-ecb rc5-ofb |
여기에 나열한 모든 다이제스트 및 암호가 다 지원되는 것은 아니지만, OpenSSL에서는 사용할 암호 및 다이제스트를 지원해야 한다.
구성 스크립트에 --enable-digest 옵션을 사용하여 다이제스트를 설정하고 --enable-cipher에 사용할
암호를 설정한다. 이 정보를 지정하지 않으면 ripemd160 다이제스트와 aes-128 암호가 사용된다.
GVPE 및 GVPE 구성 파일을 설치할 위치도 정해야 한다. 기본 접두부는 /usr/local이다(/usr/local/bin에서 명령을 실행하여 /usr/local/etc/gvpe에서 구성을 찾음).
이런 의사결정을 한 후 다음을 수행하여 GVPE를 컴파일하고 설치한다.
- GVPE 패키지를 다운로드한다.
- GVPE 패키지를 추출한다.
$ tar zxf gvpe-2.2.tar.gz
- gvpe-2.2 디렉토리로 변경한다.
$ cd gvpe-2.2
- Configure를 실행하여 사용할 옵션을 설정한다.
$ configure --prefix=/usr/local --enable-digest=sha512 --enable-cipher=aes-256
- 컴파일:
$ make
- 설치:
$ make install
설치에 필요한 명령과 문서가 복사된다. 구성 파일은 각 시스템마다 고유하게 설정해야 한다.
가상 네트워크를 설정하려면 다음 6가지 단계를 수행해야 한다. 원하는 만큼 많은 수의 시스템에서 이 단계를 수행할 수 있지만, 데모의 목적상 처음에는 한 가상 네트워크를 공유하는 두 시스템에 대한 솔루션만 설정하기로 한다.
- 전체 네트워크에 대한 구성 설정
- 공용/개인 키 작성
- 각 호스트 상의 네트워크를 설정하기 위한 스크립트 작성
- 각 시스템에 GVPE 구성 복사
- 각 시스템에 대한 호스트 키 설정
- GVPE 시작
각 단계를 개별적으로 설명한다.
구성 파일은 전체 구성과 구조의 핵심이다. 각 시스템에서 가상 네트워크의 레이아웃과 구성을 파악하기 위해 구성 파일을 사용하므로, 네트워크에 있는 모든 시스템이 구성 파일을 공유한다.
네트워크에 있는 각각의 호스트에 대해 노드 이름(가상 네트워크 내에서 호스트 식별)과 그 호스트와 통신하기 위한 공용 전송으로 사용될 호스트 이름 또는 통신 대상의 두 가지 값만 설정하면 된다. 우선, 표준 TCP/IP 네트워크에 대한 액세스 권한이 있다고 가정하자.
파일의 첫 부분에서는 모든 노드에서 사용할 글로벌 옵션을 지정하며, 사용자가 직접 각각의 개별 노드에 대한 옵션을 지정한다. 목록 2에 gvpe.conf라는 예제 구성 파일이 표시되어 있다.
목록 2. gvpe.conf 구성 파일
# Specify the use of UDP and the default port enable-udp = yes udp-port = 407 # Set the name of the virtual device created ifname = vpn0 # Set the first node node = private1 hostname = 192.168.1.20 # Set the second node node = private2 hostname = remote.example.com |
이 구성 파일에서는 첫 번째 노드인 private1을 설정하고 IP 주소를 지정한다(이 경우에는 로컬 네트워크 상의 IP 주소). 두 번째 노드의 경우 호스트 이름이 사용되며, 그 호스트의 IP 주소는 GVPE가 시작될 때 확인된다.
글로벌 옵션은 UDP 사용과 UDP 포트를 설정하고 작성될 가상 디바이스의 이름을 구성한다. 편의를 위해, 디바이스 이름을 vpn0으로 설정했다. 이는 /dev에
있거나 ifconfig의 출력에서 확인할 수 있는 이름이며, 가상 네트워크 디바이스와 라우팅을 구성하는 데 필요하다.
각 호스트에 대한 공용/개인 키를 작성해야 한다. 이 키는 호스트의 암호화 및 식별에 모두 사용된다. 제어 명령인 gvpectrl: $ gvpectrl -c /usr/local/etc/gvpe -g를
사용하면 자동으로 작성할 수 있다.
이 명령을 사용하면 구성 디렉토리에 두 개의 디렉토리가 작성된다. Hostkeys 디렉토리에는 각 호스트에 대한 호스트 키(개인) 정보가 포함된다. Pubkeys 디렉토리에는 각 호스트에 대한 공용 키가 포함된다.
각 호스트는 통신을 위해 공용 키가 필요할 것이므로, 가상 네트워크에 있는 모든 호스트에 공용 키를 복사해야 한다. 각각의 특정 호스트에서는 호스트 키만 필요하다. 즉, 가상 네트워크에서 private1로 작동 중인 호스트에는 private1 호스트 키(hostkeys/private1에 있을 것임)만 복사하면 된다.
각 호스트에서 가상 네트워크가 작성되면 새로 작성된 네트워크 디바이스에 IP 주소를 지정하여 구성하고 시스템 간에 데이터를 라우팅할 수 있도록 라우팅을 구성해야 한다.
각 시스템에서 GVPE가 시작될 때 가상 인터페이스 설정을 위해 if-up 스크립트(interface up의 축약어)가 실행된다. GVPE는 이를 통해 (노드 이름, 인터페이스 이름 및 GVPE에서 생성된 MAC 주소 식별과 같은) 정보를 설정하기 위한 스크립트에서 사용할 수 있는 몇 가지 표준 쉘 환경 변수를 제공한다.
아래 목록 3에서 if-up 스크립트 샘플을 볼 수 있다.
목록 3. if-up 스크립트 샘플
#!/bin/sh ip link set $IFNAME address $MAC mtu $MTU up [ $NODENAME = private1 ] && ip addr add 10.0.1.1 dev $IFNAME [ $NODENAME = private2 ] && ip addr add 10.0.2.1 dev $IFNAME ip route add 10.0.0.0/16 dev $IFNAME |
첫 행에서는 지정된 MTU를 사용하여 인터페이스의 MAC 주소를 설정한다. 이런 변수는 GVPE에 의해 설정되므로, 이 명령은 실제로는
ip link vpn0 address fe:fd:80:00:00:01 mtu 1500 up과 같은 형태로 확장된다.
두 번째 및 세 번째 행에서는 가상 사용자의 IP 주소를 설정한다. 인라인 테스트를 통해 어떤 호스트에 어떤 IP 주소를 지정할지 선택할 수 있다. 여기서 가상 네트워크의 IP 주소를 설정한다. 아직 사용하고 있지 않은 네트워크 범위를 선택해야 한다(전형적인 예: 10.0.0.0 범위 또는 192.168.0.0 범위).
이 경우에는 private1로 지정된 노드는 IP 주소 10.0.1.1에서, private2로 지정된 노드는 IP 주소 10.0.2.1에서 설정된다.
마지막 행에서는 새로 작성된 가상 인터페이스를 통해 10.0.0.0 네트워크에 대한 모든 트래픽을 경로 재지정하는 기본 라우팅을 설정한다.
이제 스크립트, 구성 및 키 정보가 있으므로, 각 시스템에 이 정보를 복사할 필요가 있다. 현재 네트워크에는 추가 시스템이 하나밖에 없으므로 한 번만 구성을 복사하면 되지만, 각자의 네트워크에 있는 각 시스템에 대해 이 프로세스를 반복할 수 있다.
복사 작업은 rsync를 사용하거나 scp, sftp 또는 NFS와 같이 다른 프로토콜을 통해서도 수행할 수 있다. etc/gvpe 디렉토리에서 gvpe.conf, if-up 및 공용 키 디렉토리(pubkey)만 복사하면 된다.
예를 들어, rsync를 사용할 때는 목록 4에 표시된 것처럼 hostkeys 디렉토리를 제외한 모든 내용을 새 시스템에 복사하는 다음 명령을 사용할 수 있다.
목록 4. rsync를 이용한 복사
$ rsync -avzessh /usr/local/etc/gvpe remote.example.com:/usr/local/etc/. --exclude hostkeys |
이제 private1 노드에서 개인 키를 /usr/local/etc/gvpe/hostkey에 복사한다. 그 노드에 대한 모든 것을 설정했다고 가정하면
$ cp /usr/local/etc/gvpe/hostkeys/private1 /usr/local/etc/gvpe/hostkey를 실행하면 된다.
private2가 될 호스트에서는 생성된 디렉토리에서 private2 호스트 키를 복사한다. 목록 5에서와 같이, remote.example.com 호스트에서는 scp 명령이 사용된다.
목록 5. scp를 이용한 복사
$ cd /usr/local/etc/gvpe $ scp 192.168.1.20:/usr/local/etc/gvpe/hostkeys/private2 /usr/local/etc/gvpe/hostkey |
구성을 완료한 상태에서 GVPE 서비스를 시작하고 두 시스템을 함께 연결할 수 있다.
GVPE 프로세스는 간단하고 자동으로 이루어진다. 이 프로세스가 시작될 때는 보통 백그라운드에서 디먼으로 실행된다. 따라서 간단히
$ gvpe만 실행하면 된다.
하지만, 출력에서 몇 가지 로그 정보를 얻을 수도 있다. -l 매개변수를 사용하여 다른 레벨의 로깅을 지정할 수 있다. 테스트를
위해, -D 매개변수를 사용하여 GVPE가 디먼 모드로 전환하지 못하게 할 수도 있다. 또한, 목록 6에 표시된 것처럼
노드 이름을 지정해야 한다.
목록 6. 노드 이름 지정
$ gvpe -D -l info private1 gvpe daemon 2.22 (Jun 13 2010 11:05:50) starting up. |
이제 네트워크에서 두 번째 가상 호스트가 될 호스트에서는 private2에서 가상 네트워크를 시작하기 위한 명령을 실행한다. 목록 7에 나타낸 것처럼, 이 명령을 실행하면 UDP를 사용하여 다른 호스트와 연결이 설정된 것으로 표시되어야 한다.
목록 7. private2 가상 네트워크 시작
$ gvpe -l info -D private2 gvpe daemon 2.22 (Jun 13 2010 08:30:01) starting up. private1(udp/192.168.1.20:407): connection established (direct), protocol version 0.1. |
목록 8에 나타낸 것처럼, private1에서 이와 유사한 행이 출력되어야 한다.
목록 8. 또 다른 private2 성공 메시지
private2(udp/192.168.1.10:407): connection established (direct), protocol version 0.1. |
Ping을 사용하고 if-up 스크립트에서 설정한 원격 IP 주소를 지정하여 네트워크를 테스트할 수 있다.
예를 들어, private1에서 10.0.2.1로 ping을 실행할 수 있다(목록 9 참조).
목록 9. 10.0.2.1로 ping
$ ping 10.0.2.1 PING 10.0.2.1 (10.0.2.1) 56(84) bytes of data. 64 bytes from 10.0.2.1: icmp_seq=1 ttl=64 time=12.1 ms 64 bytes from 10.0.2.1: icmp_seq=2 ttl=64 time=1.62 ms ^C --- 10.0.2.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 1.629/6.891/12.154/5.263 ms |
전체 가상 네트워크의 상태를 모니터하려면 목록 10에 표시된 것처럼 -s 옵션을 포함한 gvpectrl
명령을 사용한다.
목록 10. 가상 네트워크의 상태 모니터링
$ gvpectrl -s Configuration # of nodes: 2 this node: <unset> MTU: 1500 rekeying interval: 0 keepalive interval: 0 interface: vpn0 primary rsa key: <default> rsa key size: 1280 ID# MAC Com Conmode Node Host:Port 1 fe:fd:80:00:00:01 Y always private1 192.168.1.20:407 2 fe:fd:80:00:00:02 Y always private2 www.example.com:407 |
(디먼 모드 이외의 모드에서 시작한 경우) Control-C와 함께 kill 명령을 사용하여 연결을 강제 종료할 수 있지만, 최선의 방법은 목록 11에
표시된 gvpectrl 명령을 사용하는 것이다.
목록 11. 연결을 정상적으로 강제 종료
$ gvpectrl --kill preparing shutdown... private2(udp/192.168.1.10:407): connection lost exiting. |
물론, 이는 전혀 실제 네트워크를 반영하지 못할 수도 있는 작은 내부 네트워크에 불과하다. 실제로, 이런 가상 네트워크는 공용 네트워크에서 또는 여러 호스트를 함께 단일 가상 네트워크로 연결하는 데 사용될 것이다.
공용 네트워크 상에 배치할 때는 원격 호스트에서도 기본적인 설정과 구성이 동일하다. 사용자가 설정하는 키가 인증에 사용될 것이며, 암호화는 공용/개인 키를 통해 자동으로 처리될 것이다.
더 중요한 고려사항은 각 호스트와의 통신에 사용하는 통신 방법이다. 다른 VPN 솔루션과는 달리, 동일한 기본 가상 네트워크 환경을 계속 지원하고 작성하는 동안 여러 호스트 간에 서로 다른 기본 전송 방법을 혼합 및 일치시킬 수 있다.
다른 프로토콜을 설정하려면 구성 파일 내에서 각 가상 노드의 프로토콜을 구성하기만 하면 된다. 목록 12에서 이 점을 확인할 수 있으며, 여기서는 구성 파일에 세 개의 호스트(private3, private4, private5)가 새로 추가되었다.
목록 12. 세 개의 호스트 새로 추가
enable-udp = yes udp-port = 407 # Set the name of the virtual device created ifname = vpn0 # Set the first node node = private1 hostname = 192.168.1.20 # Set the second node node = private2 hostname = remote.example.com node = private3 hostname = ec2.amazon.com enable-tcp = yes tcp-port = 443 node = private4 hostname = 129.168.23.47 enable-rawip = yes node = private5 hostname = 192.168.100.20 udp-port = 20000 |
private3의 경우 Amazon EC2를 사용하여 호스트와 통신하고 있다. 이와 같은 외부의 공용 네트워크와 통신할 때는 방화벽에 통신을 제한하는 요소가 있을 수 있다. 사용할 수 있는 대상에 한계가 있지만, 이 예제를 통한 설명을 위해 일반적으로 보안 HTTP 통신에 사용되는 포트인 포트 443에서 직접 TCP/IP 통신을 사용한다. 이는 다른 포트가 방화벽에 의해 정상적으로 차단되는 경우에 유용할 수 있다. 가상 네트워크가 작동하도록 하려면 두 가지 경로 모두에 네트워크 포트 액세스 권한이 있어야 한다.
private4에서는 원시 IP 프로토콜을 사용 중이므로 방화벽이 아니라 호스트에 대한 직접 액세스 권한이 있는 것으로 가정한다. 대부분의 표준 라우터에서 사용하는 NAT(네트워크 주소 변환) 환경을 포함한 대부분의 방화벽에서는 보통 이를 지원하지 않으므로, 완전한 액세스 권한이 있을 때만 사용할 수 있다.
private5에서는 private1과 private2에서 기본적으로 사용되는 UDP 프로토콜을 사용하지만, 다른 포트 번호를 사용할 필요가 있다. 이 경우에는 일반적으로 특수한 권한이 필요한 범위를 벗어나는 포트 번호(1024 미만)를 설정했는데, 이는 사용자에게 루트 액세스 권한이 없는 시스템에서 실행될 수 있다는 뜻이다.
앞서 설명한 ping 예제에서 보여준 바와 같이, IP 네트워크의 기본 요소들이 이미 작동 중이고 ping과 같은 서비스는 일반적으로 호스트 상의 모든 인터페이스에서 기본적으로 사용된다.
다른 서버와 애플리케이션의 경우 가상 네트워크 인터페이스를 직접 사용하도록 애플리케이션을 구성하거나(이 예제에서는 vpn0), IP 애플리케이션인 경우에는 특정 서버가 바인드하거나 클라이언트가 원격 서버와 통신할 때 연결하는 IP 주소를 구성하고 변경해야 한다.
예를 들어, Apache를 통해 웹 서비스 환경에 대한 연결을 지원하고 수신 대기할 시스템을 구성하려는 경우 Apache 구성에서 Listen 지시문을 새 가상 디바이스
IP 주소(예: Listen 10.0.2.1:80)로 다시 설정해야 한다.
GVPE에서 완전히 새로운 네트워크를 작성 중이므로, 다른 애플리케이션 또는 서비스를 구성할 때와 같은 방법으로 서버나 클라이언트를 구성해야 한다.
유용하게 활용할 수 있는 한 가지 트릭은 가상 네트워크를 사용할 수 있는 특수한 상황을 구성하는 것이다. if-up 스크립트와 똑같이 etc/gvpe 디렉토리에 있어야 하는 node-up 및 node-down 스크립트를 사용하면 이렇게 구성할 수 있다.
이런 스크립트는 노드가 작동 또는 중지될 때마다 호출된다. 다양한 솔루션에 이 스크립트를 사용할 수 있지만, 공통적인 사항은 어떤 서비스를 시작하거나 서버 및 서비스 존재 여부를 등록하는 것이다.
예를 들어, 그리드 또는 클라우드 환경 내에서 사용 시, node-up 명령을 사용하여 해당 시스템을 이제 사용할 수 있다는 사실을 다른 시스템에서 알 수 있도록 클라우드 또는 네트워크에 새 호스트를 등록하는 스크립트를 호출할 수도 있다.
가상 사설망(VPN)을 작성하는 것은 대체로 복잡한 프로세스이며, 그 결과가 항상 원했던 만큼 실용적이고 유연성이 뛰어난 것은 아니다. GVPE를 사용하면 단순히 몇 가지 특정 프로토콜을 라우팅하고 지원하는 데 사용되는 IP 대상이 아니라, 완전 가상 네트워크를 작성할 수 있다. 뿐만 아니라, GVPE는 계속 보안을 유지하면서도 다시 시작할 수 있고 영구적인 서비스로 손쉽게 설정 및 구성할 수 있다.
이 기사에서는 GVPE와 다른 VPN 솔루션의 주요 차이점을 살펴보았다. GVPE 도구를 이용한 가상 네트워크의 기본적인 설정에 대해서도 자세히 살펴보았다. 공용 통신 네트워크 상에서 GVPE 구성 작업을 하는 방법과 새 가상 네트워크를 사용하여 사용자 정의 애플리케이션으로 작업하는 방법도 알 수 있었다.
교육
-
무료로 제공되는 developerWorks
On demand demos를 통해 IBM 및 오픈 소스 기술에 대해 배우고 제품 기능을 익히자.
-
GVPE 홈 페이지를 통해 GVPE에 대해 더 자세히 알아보자.
-
IBM RedBook을 통해 가상 사설망(VPN)에 대한 심층적인 정보를 파악할 수 있다.
-
developerWorks 팟캐스트에서 소프트웨어
개발자의 흥미로운 인터뷰와 토론을 확인할 수 있다.
-
developerWorks
기술 행사 및 웹 캐스트: developerWorks 기술 행사 및 웹 캐스트를 통해 최신 정보를 얻을 수 있다.
-
Amazon EC2: Amazon Elastic Compute Cloud에 대해 자세히 살펴볼 수 있다.
-
IBM Cloud: IBM Cloud 솔루션의 세계에 입문하기에 좋은 홈 페이지이다.
제품 및 기술
-
DVD로 제공되거나 다운로드할 수 있는 IBM 시험판 소프트웨어를 사용하여 차기 오픈 소스 개발 프로젝트를 구현해 보자.
토론
-
developerWorks 블로그를 통해 developerWorks 커뮤니티에 참여할 수 있다.
- Twitter의 developerWorks 페이지를 살펴보자.
-
developerWorks 블로그를 통해 developerWorks 커뮤니티에 참여할 수 있다.
- My developerWorks 커뮤니티에 참여하자.
-
AIX 및 UNIX® 포럼에 참여하자.
- AIX Forum
- AIX Forum for developers
- Cluster Systems Management
- Performance Tools Forum
- PowerVM Forum
- 기타 AIX and UNIX Forums
Martin Brown은 8년 넘게 기술 필자로 활약해왔다. Brown은 다양한 주제를 다루는 수 많은 책을 집필했고 기사를 작성했다. Brown은 펄, 파이썬, 자바(Java™), 자바스크립트, 베이직, 파스칼, 모듈라-2, C, C++, 레볼, gawk, 셸 스크립트, 윈도우(Windows®), 솔라리스, 리눅스, BeOS, 맥 OS X을 비롯하여 웹 프로그래밍, 시스템 관리, 통합에 이르리까지 다양한 개발 언어와 플랫폼을 경험했다. Brown은 마이크로소프트(Microsoft®) SME(Subject Matter Expert)이며 ServerWatch.com, LinuxToday.com, IBM developerWorks에 주기적으로 기고한다. Brown은 또한 컴퓨터월드, 애플 블로그, 기타 사이트에 주기적으로 블로그 기사를 올린다. 연락 주소는 Brown이 운영하는 웹 사이트를 참조하기 바란다.