'네트워크'에 해당되는 글 143건

  1. 2009.01.09 [CISCO] Catalyst Switch간 Port trunking 세팅
  2. 2009.01.07 [리눅스] OpenVPN을 이용한 VPN 구현 (2)
  3. 2009.01.02 mii-tool (NIC 설정툴) 사용법, 네트워크 연결상태
2009.01.09 16:09

[CISCO] Catalyst Switch간 Port trunking 세팅

Network Diagram

구 성 들

Catalyst 3512-XL

주 석: 다음의 스크린 캡쳐는 3512XL 스위치에서 사용한 명령어를 보여주고 있다. 명령어와 명령어 사이의 파란색 이탤리체는 명령어와 절차를 설명하기 위한것이다.
!-- privileged 모드로 진입
!-- 스위치에 TELNET 패스워드 설정
.
switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
switch(config)#hostname 3512xl
3512xl(config)#enable password mysecret
3512xl(config)#line vty 0 4
3512xl(config-line)#login
3512xl(config-line)#password mysecret
3512xl(config-line)#exit
3512xl(config)#no logging console
3512xl(config)#^Z
!--VLAN 1의 IP 와default gateway는 관리 목적을 위한 것이다.
3512xl#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
3512xl(config)#int vlan 1
3512xl(config-if)#ip address 10.10.10.2 255.255.255.0
3512xl(config-if)#exit
3512xl(config)#ip default-gateway 10.10.10.1
3512xl(config)#end
!-- Set the VTP Mode.
!-- 우리 예제에서는 VTP TRANSPARENT 모드로 셋팅 하였다.
!-- VTP 모드로 셋팅에 관한것은 여러분의 네트워크에 달려있다.
!-- 보다 자세한 VTP에 관해서는
!-- 다음의
!-- Configuring VTP, VLANs, and VLAN Trunks on Catalyst 2900XL and 3500XL Switches
를 참고하라.
3512xl#vlan database 3512xl(vlan)#vtp transparent Setting device to VTP TRANSPARENT mode. !-- 디폴터 상태의 VLAN1에 VLAN2 추가. 3512xl(vlan)#vlan 2 VLAN 2 added: Name: VLAN0002 3512xl(vlan)#exit APPLY completed. Exiting.... !-- FASTETERNET 0/1에 트렁킹 활성화. 3512xl#configure terminal Enter configuration commands, one per line. End with CNTL/Z. 3512xl(config)#int fastEthernet 0/1 3512xl(config-if)#switchport mode trunk !-- 트렁킹 encapsulation 중에 isl로 활성화 3512xl(config-if)#switchport trunk encapsulation isl !-- 혹은 dot1q을 설정: 3512xl(config-if)#switchport trunk encapsulation dot1q !-- dot1q의 경우에, 링크 반대편이 NATIVE VLAN !-- 인지 확인할 필요가 있다. !-- 3512XL은, 디폴터로 native VLAN은 1 이다. !-- 당신의 네트웍의 필요에 따라 VLAN1의 NATIVE VLAN !-- 을 바꿀수 있다. !-- 그러나 라우터에 따라 NATIVE VLAN을 바꾸는 것은 !-- 매우 중요한 것이다. !-- 필용에 의해 다음의 명령어를 사용하여 NATIVE VLAN을 바꿀수 있다: !-- 3512xl(config-if)#switchport trunk native vlan !-- 트렁크상에서 모든 VLAN들을 수용한다. 3512xl(config-if)#switchport trunk allowed vlan all 3512xl(config-if)#exit !-- 다음 명령어의 설정으로 FastEthernet 0/2은 !-- VLAN2로 옮겨가고 portfast가 인터페이스 상에 활성화 된다. 3512xl(config)#int fastEthernet 0/2 3512xl(config-if)#switchport access vlan 2 3512xl(config-if)#spanning-tree portfast 3512xl(config-if)#exit !-- FastEthernet 0/3은 이미 디폴터로 VLAN1에 있다. !-- 인터페이스 상의 portfast 활성화. 3512xl(config)#int fastEthernet 0/3 3512xl(config-if)#spanning-tree portfast 3512xl(config-if)#^Z !-- 왜 PORTFAST를 활성화 하는지 자세한 사항은 !-- 다음을 참조하라: !-- Using Portfast and Other Commands to Fix Workstation Startup Connectivity Delays .!-- 저장하는 것을 잊지 말아라. 3512xl#write memory Building configuration... 3512xl#

3512xl#show running-config
Building configuration...

Current configuration:

!
version 12.0
no service pad
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname 3512xl
!
no logging console
enable password mysecret
!
!
!
!
!
ip subnet-zero
!
!
!
interface FastEthernet0/1
  switchport mode trunk
!
!-- 대신에 인터페이스 FASTETHERNET 0/1이
!-- 만약 802.1Q로 구성 되었다면,
!-- 아래와 같이 볼수 있을 것이다:
!-- interface FastEthernet0/1
!-- switchport trunk encapsulation dot1q
!-- switchport mode trunk
!
interface FastEthernet0/2
 switchport access vlan 2
 spanning-tree portfast
!
interface FastEthernet0/3
 spanning-tree portfast
!
interface FastEthernet0/4
!
중간 생략
!
interface FastEthernet0/12
!
interface GigabitEthernet0/1
!
interface GigabitEthernet0/2
!
interface VLAN1
 ip address 10.10.10.2 255.255.255.0
 no ip directed-broadcast
 no ip route-cache
!
ip default-gateway 10.10.10.1
!
line con 0
 transport input none
 stopbits 1
line vty 0 4
 password mysecret
 login
line vty 5 15
 login
!
end

Cisco 2600 Router

주 석:다음의 스크린 캡쳐는 2600 라우터에서 사용한 명령어를 보여주고 있다. 명령어와 명령어 사이의 파란색 이탤리체는 명령어와 절차를 설명하기 위한것이다.
!-- privileged 모드로 진입
!-- 라우터에 TELNET 패스워드 설정.
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname c2600

c2600(config)#enable password mysecret
c2600(config)#line vty 0 4
c2600(config-line)#login
c2600(config-line)#password mysecret
c2600(config-line)#exit
c2600(config)#no logging console
c2600(config)#^Z

c2600#configure terminal 상태에서
라인마다 명령어를 설정하고 CNTL/Z을 사용하여 빠진다.

!-- 트렁크 구성을 위하여 FastEthernet 0/0 을 선택한다.
!-- 여기서 진행된것은 L2 도 Layer 3 (L3) 구성도 아니다.
c2600(config)#int fastEthernet 0/0
c2600(config-if)#no shut
c2600(config-if)#exit

!-- 서브 인터페이스 FastEthernet 0/0.1 상에 트렁킹 설정.
!-- 서브 인터페이스 상에 실제의 트렁킹을 구성을 지정.
c2600(config)#int fastEthernet 0/0.1

!-- 트렁킹 Encapsulation중 isl을 설정
c2600(config-subif)#encapsulation isl 1

!-- 혹은dot1q로 설정:
!-- dot1q의 경우에, 링크 반대편이 NATIVE VLAN
!-- 인지 확인할 필요가 있다.
!-- 3512XL은, 디폴터로 native VLAN은 1 이다.
!-- 라우터상에 NATIVE VLAN으로 VLAN1으로 설정.
c2600(config-subif)#encapsulation dot1Q 1 ?
  native  Make this is native vlan
  
c2600(config-subif)#encapsulation dot1Q 1 native
!-- 만약 스위치에서 VLAN1이 아닌 다른 NATIVE VLAN 이라면,
!-- 위의 명령을 사용 하여
!--라우터에서 같은 VLAN으로 NATIVE VLAN을 설정하여 주어야 한다.

주 석: encapsulation dot1Q 1 native 명렁어는 Cisco IOS version 12.1(3)T에서 추가 되었다. 만약 이것보다 이전 버전의 Cisco IOS라면, 라우터에 802.1Q 트렁킹를 구성하기 위해 다음의 801.1Q configuration for Cisco IOS Versions Earlier than 12.1(3)T 부분을 참조하라.
!-- Configure L3 information on the sub-interface 0/0.1.
c2600(config-subif)#ip address 10.10.10.1 255.255.255.0
c2600(config-subif)#exit

!-- FastEthernet 0/0.2 sub-interface에 트렁킹 설정.
!-- sub-interfaces상에 실제 트렁킹 구성예.
c2600(config)#int fastEthernet 0/0.2

!-- encapsulation isl로 트렁킹 설정
c2600(config-subif)#encapsulation isl 2

!-- dot1q 설정:
c2600(config-subif)#encapsulation dot1Q 2

!-- sub-interface 0/0.2에 L3 정보(IP) 설정.
c2600(config-subif)#ip address 10.10.11.1 255.255.255.0
c2600(config-subif)#exit
c2600(config)#^Z

!-- 저장하기.
c2600#write memory
Building configuration...
[OK]
c2600#

주 석: 이 설정이 동작하도록 만들고 워크 스테이션1과 워크스테이션2 사이에 ping이 완전하게 이루어지기 위해서는 워크스테이션의 디폴터 게이터웨이가 정확히 설정 될 필요가 있다.workstation1의 디폴터 게이터웨이는 10.10.11.1 이고 workstation2의 의 디폴터 게이터웨이는 10.10.10.1 이어야 한다.

다음의 것들은 단지 소프트웨어적인것 뿐이다.만약 라우터와 스위치 사이에 802.1Q 트렁킹을 설정 하였고, 위에서의 절차를 따랐서 구성 하였어도 VLAN간 PING이 되지 않 는 다면 BUG NABIGATOR TOOL을 사용하여 확인 하여야 한다. Bug Navigator에 대한 보다 많은 정보를 보려면, Tools Information 부분을 보아라.


c2600#show running-config
Building configuration...
 
Current configuration:
!
version 12.1
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname c2600
!
no logging console
enable password mysecret
!
!
!
!
!
ip subnet-zero
!
!
!
!
!
!
!
!
!
!
interface FastEthernet0/0
 no ip address
 duplex auto
 speed auto
!
interface FastEthernet0/0.1
 encapsulation isl 1
 ip address 10.10.10.1 255.255.255.0
 no ip redirects
!
!-- 만약 802.1Q 로 구성하면
!--FastEthernet0/0.1 인터페이스상에서
아래와 같이 볼수 있을 것이다:
!-- interface FastEthernet0/0.1
!-- encapsulation dot1Q 1 native
!-- ip address 10.10.10.1 255.255.255.0
!
!
interface FastEthernet0/0.2
 encapsulation isl 2
 ip address 10.10.11.1 255.255.255.0
 no ip redirects
!
!-- 만약 802.1Q 로 구성하면
!--FastEthernet0/0.2 인터페이스상에서
아래와 같이 볼수 있을 것이다:
!-- interface FastEthernet0/0.2
!-- encapsulation dot1Q 2
!-- ip address 10.10.11.1 255.255.255.0
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
!
ip classless
no ip http server
!
!
!
line con 0
 transport input none
line aux 0
line vty 0 4
 password mysecret
 login
!
no scheduler allocate
end

Cisco IOS 12.1(3)T보다 이전 버전의 라우터에서 801.1Q 구성하기

이 문서의 앞에서 설명 하였듯이, 802.1Q 트렁킹을 구성할때 링크 양쪽이 native VLAN 으로 일치 하는 것은 매우 중요하다.Cisco IOS 버전이12.1(3)T 이전일때,서브 인터페이스아래 명령어가 불가능 하므로 encapsulation dot1Q 1 native와 같이 NATIVE VLAN을 설정 할수가 없다.

이전의 Cisco IOS 버전에서는 SUB-INTERFACE로 VLAN1을 설정하지 않는것이 중요하다. VLAN1상의 라우터는 tag dot1q 프레임을 사용하고 스위치는 tag 되지 않은것을 사용한다. 결과적으로 스위치와 라우터상의 VLAN1을 통하여 트래픽을 보낼수가 없다.

현재의 lab 구성상에서는 다음의 절차에 의해서 Cisco 2600 라우터를 구성 하였다:

!-- privileged 모드로 진입
!-- 라우터에 텔넷 패스워드 설정
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname c2600
c2600(config)#enable password mysecret
c2600(config)#line vty 0 4
c2600(config-line)#login;
c2600(config-line)#password mysecret
c2600(config-line)#exit
c2600(config)#no logging console
c2600(config)#^Z

c2600#configure terminal

!-- 트렁킹 구성을 위한 FastEthernet 0/0 선택
c2600(config)#int fastEthernet 0/0
c2600(config-if)#no shut

!-- 메인 인터페이스에 VLAN1에 IP ADDRESS가 설정 되었다.
!-- 그리고 서브 인터페이스에는 VLAN1을 위한 encapsulation을 설정 하지 않는다.
c2600(config-if)#ip address 10.10.10.1 255.255.255.0
c2600(config-if)#exit

!-- 서브 인터페이스 fastEthernet 0/0.2상에
!-- VLAN2 dot1q encapsulation 설정

c2600(config)#int fastEthernet 0/0.2
c2600(config-subif)#encapsulation dot1Q 2
c2600(config-subif)#

!-- Configuring L3 information on the sub-interface 0/0.2.
c2600(config-subif)#ip address 10.10.11.1 255.255.255.0
c2600(config-subif)#exit
c2600(config)#^Z


!-- 구성 저장
c2600#write memory
Building configuration...
[OK]
c2600#
c2600#show running-config
Building configuration...

Current configuration:
!
version 12.1
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname c2600
!
no logging console
enable password mysecret
!
!
!
!
!
memory-size iomem 7
ip subnet-zero
!
!
!
!
!
!
!
interface FastEthernet0/0
 ip address 10.10.10.1 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/0.2
 encapsulation dot1Q 2
 ip address 10.10.11.1 255.255.255.0
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
!
ip classless
no ip http server
!
!
line con 0
 transport input none
line aux 0
line vty 0 4
 password mysecret
 login
!
no scheduler allocate
end

c2600#

debug and show Commands

Catalyst 2900XL/3500XL 상에서는 다음의 명령어를 사용한다:

  • show int {FastEthernet | GigabitEthernet} switchport

  • show vlan

  • show vtp status

On the Cisco 2600 router, use the following commands:

  • show vlan

  • show interface

Sample show Command Output

Catalyst 3500XL Switch

show int {FastEthernet | GigabitEthernet} switchport

이 명령어는 PORT의 설정과 운용 상태를 확인하기 위해 사용한다. 트렁크 양쪽 모두 NATIVE VLAN으로 일치하는지 확인할때도 역시 사용한다. 포트가 802.1Q 트렁킹 모드일때 NATIVE VLAN이UNTAGGED로 사용된다. 보다 자세한 내용은Configuring VTP, VLANs, and VLAN Trunks on Catalyst 2900XL and 3500XL Switches을 참조하라.

3512xl#show int fastEthernet 0/1 switchport
Name: Fa0/1
Switchport: Enabled
Administrative mode: trunk
Operational Mode: trunk
Administrative Trunking Encapsulation: isl
Operational Trunking Encapsulation: isl
Negotiation of Trunking: Disabled
Access Mode VLAN: 0 ((Inactive))
Trunking Native Mode VLAN: 1 (default)
Trunking VLANs Enabled: ALL
Trunking VLANs Active: 1,2
Pruning VLANs Enabled: 2-1001

Priority for untagged frames: 0
Override vlan tag priority: FALSE
Voice VLAN: none
Appliance trust: none

주 석: 802.1Q 트렁키을 위해서 위의 명령어가 아래와 같이 바뀌었다.

3512xl#show int fastEthernet 0/1 switchport
Name: Fa0/1
Switchport: Enabled
Administrative mode: trunk
Operational Mode: trunk
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Negotiation of Trunking: Disabled
Access Mode VLAN: 0 ((Inactive))
Trunking Native Mode VLAN: 1 (default)
Trunking VLANs Enabled: ALL
Trunking VLANs Active: 1,2
Pruning VLANs Enabled: 2-1001

Priority for untagged frames: 0
Override vlan tag priority: FALSE
Voice VLAN: none

show vlan

이 명령어는 각 인터페이스(포트)들이 정확한 VLAN에 속했는지 확인하기 위하여 사용된다.예제에서는 Fa0/2 인터페이스만이 VLAN2 속한다.그 나머지들은 VLAN1에 속한다..

3512xl#show vlan
VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa0/3, Fa0/4, Fa0/5, Fa0/6,
                                                Fa0/7, Fa0/8, Fa0/9, Fa0/10,
                                                Fa0/11, Fa0/12, Gi0/1, Gi0/2
2    VLAN0002                         active    Fa0/2
1002 fddi-default                     active    
1003 token-ring-default               active    
1004 fddinet-default                  active    
1005 trnet-default                    active    

...(output suppressed)

show vtp status

이 명령어는 스위치의 VLAN 트렁킹 프로토콜을 확인하기 위하여 사용된다.This command is used to check the VLAN trunking protocol (VTP) configuration 예제에서는 transparent mode를 사용 하였다.정확한 VTP 모드는 네트워크의 토폴로지에 달려 있다. 보다 자세한 VTP에 대해서는 Configuring VTP, VLANs, and VLAN Trunks on Catalyst 2900XL and 3500XL Switches를 참조하라.

3512xl#show vtp status
VTP Version                     : 2
Configuration Revision          : 0
Maximum VLANs supported locally : 254
Number of existing VLANs        : 6
VTP Operating Mode              : Transparent
VTP Domain Name                 : 
VTP Pruning Mode                : Disabled
VTP V2 Mode                     : Disabled
VTP Traps Generation            : Disabled
MD5 digest                      : 0xC3 0x71 0xF9 0x77 0x2B 0xAC 0x5C 0x97
Configuration last modified by 0.0.0.0 at 0-0-00 00:00:00

Cisco 2600 Router

show vlan

이 명령은 설정된 각 VLAN이 L2인지 L3인지 정보를 말해준다.

c2600#show vlan
 
Virtual LAN ID:  1 (Inter Switch Link Encapsulation)
 
   vLAN Trunk Interface:   FastEthernet0/0.1
 
   Protocols Configured:   Address:              Received:        Transmitted:
           IP              10.10.10.1                  40                  38
 
Virtual LAN ID:  2 (Inter Switch Link Encapsulation)
 
   vLAN Trunk Interface:   FastEthernet0/0.2
 
   Protocols Configured:   Address:              Received:        Transmitted:
           IP              10.10.11.1                   9                   9

주 석: 위의 명령어들이 802.1Q 트렁키을 위해 다음과 같이 바뀌었다.

c2600#show vlan
 
Virtual LAN ID:  1 (IEEE 802.1Q Encapsulation)
 
   vLAN Trunk Interface:   FastEthernet0/0.1
 
 다음의 인터페이스들은 NATIVE VLAN으로 구성 되어져 있다.

FastEthernet0/0
 
   Protocols Configured:   Address:              Received:        Transmitted:
           IP              10.10.10.1                   0                   2
 
Virtual LAN ID:  2 (IEEE 802.1Q Encapsulation)
 
   vLAN Trunk Interface:   FastEthernet0/0.2
 
   Protocols Configured:   Address:              Received:        Transmitted:
           IP              10.10.11.1                  42                  19

주 석: 802.1Q 트렁킹을 위해, 12.1(3)T보다 이전의 버전에서 명령어 변경은 다음과 같다.

c2600#show vlan

Virtual LAN ID:  2 (IEEE 802.1Q Encapsulation)

   vLAN Trunk Interface:   FastEthernet0/0.2

   Protocols Configured:   Address:              Received:        Transmitted:
           IP              10.10.11.1                   6                   4

주 석: VLAN1에 어떤 서브 인터페이스도 IEEE 802.1Q encapsulation 구성이 없음을 보여준다.

show interface

이 명령어는 인터페이스의 설정과 운용 상태를 확인하기 위해 사용된다.

c2600#show interfaces fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
  Hardware is AmdFE, address is 0003.e36f.41e0 (bia 0003.e36f.41e0)
  MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  Full-duplex, 100Mb/s, 100BaseTX/FX
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:00:00, output 00:00:07, output hang never
  Last clearing of "show interface" counters never
  Queueing strategy: fifo
  Output queue 0/40, 0 drops; input queue 0/75, 0 drops
  5 minute input rate 0 bits/sec, 1 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     217 packets input, 12884 bytes
     Received 217 broadcasts, 0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog
     0 input packets with dribble condition detected
     45 packets output, 6211 bytes, 0 underruns(0/0/0)
     0 output errors, 0 collisions, 4 interface resets
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier
     0 output buffer failures, 0 output buffers swapped out
c2600#show interfaces fastEthernet 0/0.1
FastEthernet0/0.1 is up, line protocol is up
  Hardware is AmdFE, address is 0003.e36f.41e0 (bia 0003.e36f.41e0)
  Internet address is 10.10.10.1/24
  MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ISL Virtual LAN, Color 1.
  ARP type: ARPA, ARP Timeout 04:00:00
c2600#show interfaces fastEthernet 0/0.2
FastEthernet0/0.2 is up, line protocol is up
  Hardware is AmdFE, address is 0003.e36f.41e0 (bia 0003.e36f.41e0)
  Internet address is 10.10.11.1/24
  MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ISL Virtual LAN, Color 2.
  ARP type: ARPA, ARP Timeout 04:00:00

주 석: 802.1Q 트렁킹을 위해서 위의 명령어들이 다음과 같이 바뀌었다.

c2600#show interfaces fastEthernet 0/0.1

FastEthernet0/0.1 is up, line protocol is up
  Hardware is AmdFE, address is 0003.e36f.41e0 (bia 0003.e36f.41e0)
  Internet address is 10.10.10.1/24
  MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation 802.1Q Virtual LAN, Vlan ID  1.
  ARP type: ARPA, ARP Timeout 04:00:00
c2600#show interfaces fastEthernet 0/0.2
FastEthernet0/0.2 is up, line protocol is up
  Hardware is AmdFE, address is 0003.e36f.41e0 (bia 0003.e36f.41e0)
  Internet address is 10.10.11.1/24
  MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation 802.1Q Virtual LAN, Vlan ID  2.
  ARP type: ARPA, ARP Timeout 04:00:00

Trackback 0 Comment 0
2009.01.07 11:29

[리눅스] OpenVPN을 이용한 VPN 구현

VPN의 종류와 필요성에 대해서는 많은 이들이 숙지하고 있다. 하지만 비용이나 불편함 때문에 실제 도입을 꺼려지는 경우가 상당수에 이르는데, 이는 오픈소스로 개발돼 배포중인 OpenVPN이라는 프로그램을 통해 극복할 수 있다. VPN 도입의 가장 큰 걸림돌이었던 비용 문제를 해결하면서 고성능의 VPN을 구현할 수 있도록 지원하는 OpenVPN의 특징에 대해 알아보자. 

 

 VPN의 종류와 필요성에 대해서는 많은 이들이 숙지하고 있다. 하지만 비용이나 불편함 때문에 실제 도입을 꺼려지는 경우가 상당수에 이르는데, 이는 오픈소스로 개발돼 배포중인 OpenVPN이라는 프로그램을 통해 극복할 수 있다. VPN 도입의 가장 큰 걸림돌이었던 비용 문제를 해결하면서 고성능의 VPN을 구현할 수 있도록 지원하는 OpenVPN의 특징에 대해 알아보자.

- OpenVPN은 하나의 UDP 포트를 통해 모든 트래픽을 터널링할 수 있다. 즉 웹 접속(HTTP)을 하거나 DNS 질의를 할 때(UDP/53), ping(ICMP)을 날려도 중간에 패킷을 캡처하면 500/UDP를 통해 전송되는 것처럼 보이게 한다.

- 안전한 VPN 통신을 위해 별도의 모듈이 필요없이 널리 사용하고 있는 OpenSSL에서 지원하는 강력한 암호화와 인증 기능 등을 그대로 이용할 수 있다.

- OpenVPN은 시스템 내에서 별도의 데몬 형태로 작동하기 때문에 IPsec 기반의 VPN 프로그램처럼 복잡한 커널 패치나 커널 모듈이 필요하지 않으며, 설치 방법도 간단하다.

- 모든 패킷이 VPN을 통해 터널링되고 압축 혹은 암호화됨에도 불구하고 시스템에 부하를 유발하지 않으며, 속도도 빠르다.

이외에도 OpenVPN은 많은 특징과 확장 가능성을 가지고 있다. 더 자세한 내용은 홈페이지(http://openvpn.net/)를 참고하기 바란다.

지금부터는 OpenVPN을 이용해 (그림 1)처럼 전자우편이나 웹 서버 등의 용도로 많이 사용되는 리눅스 서버와 윈도우 PC 간에 VPN을 연동해 안전한 네트워크를 구성하는 사례를 살펴보자. 

 
(그림 1)처럼 IDC 등의 전산 센터에 있는 서버에 VPN 데몬을, PC에 VPN 클라이언트 프로그램을 설치한다. 그 뒤 VPN 서버에 접속해 인증을 받으면, VPN 서버로부터 별도의 VPN용 IP를 할당받아 VPN 터널을 통해 접속할 수 있다.

물론 이때의 서버 접속은 인터넷은 물론 VPN 터널을 통해서도 가능하다.

 

· VPN 서버 설치와 설정

먼저 서버에서 VPN 데몬을 설정하자. OpenVPN에서는 TUN이나 TAP이라는 별도의 가상 인터페이스로 VPN 통신을 하므로, 우선 커널에서 이 드라이버를 지원하도록 다음과 같이 설정한 뒤 커널을 컴파일해야 한다.

[*]   Universal TUN/TAP device driver support

이후 디바이스를 설정하기 위해 다음의 명령어를 실행하는데, 이미 설정돼 있는 경우가 대부분이다.

# mkdir /dev/net
# mknod /dev/net/tun c 10 200
                         
다음으로 OpenVPN을 설치하기 전에 OpenSSL과 LZO라는 두 프로그램을 먼저 설치한다. 이들 프로그램은 VPN 이용 시, 패킷을 암호화하고 압축해 전송할 때 필요한 모듈로, 다음 사이트에서 다운로드해 설치하면 된다.
 
* OpenSSL : http://www.openssl.org/
* LZO      : http://www.oberhumer.com/opensource/lzo/

프로그램 설치가 끝났으면 OpenVPN 홈페이지에서 소스를 다운로드해 './configure ; make; make install'로 설치하면 된다. VPN 클라이언트와 서버 간 인증을 위해서는 인증서가 필요하므로 먼저 서버에서 인증서를 생성한다. 인증서를 생성할 때나 사인을 할 때는 OpenSSL을 이용하므로 미리 설치돼 있어야 한다.

먼저 Root CA 인증서와 비밀키를 생성해야 하는데, 다음 명령어를 실행하면 1년 동안 유효한 CA와 비밀키(개인키)를 생성할 수 있다.

# openssl req -nodes -new -x509 -keyout my-ca.key -out my-ca.crt -days 365

다음은 클라이언트와 서버에서 사용할 키를 각각 생성한다.

# openssl req -nodes -new -keyout client.key -out client.csr
# openssl req -nodes -new -keyout server.key -out server.csr

Root CA를 이용해 서버와 클라이언트 인증서에 각각 사인한다. 

# openssl ca -out server.crt -in server.csr
# openssl ca -out client.crt -in client.csr

다음으로 서버에서 암호화 협상 시 필요한 Diffe Hellman 파라미터를 생성한다.

# openssl dhparam -out dh1024.pem 1024

이제 나머지는 서버에 그대로 두고, client.crt와 client.key 그리고 my-ca.key 파일을 클라이언트 PC의 적당한 디렉토리로 복사하면 된다. 이제 서버의 설정 파일을 살펴보자.

[서버 설정 파일 - openvpn.conf]

port 500 : OpenVPN은 기본적으로 UDP를 이용해 패킷을 터널링해 전달하는데, 이때 포트는 사용되지 않은 어떤 포트를 사용해도 관계없다.

proto udp : 기본 값인 UDP를 사용하는 것이 좋다. TCP는 권장하지 않는다.

dev tap : OpenVPN 서버와 클라이언트 상호 통신에 필요한 인터페이스를 지정하는데, TUN이나 TAP을 지정할 수 있다.

ifconfig 10.105.11.1 255.255.0.0 : VPN 서버가 사용할 IP를 지정한다. TAP에 이 IP가 할당돼 원격지 PC와  통신할 수 있게 되는데, 가급적 사용하지 않는 사설 IP를 사용하는 것이 좋다.

keepalive 10 120 : 클라이언트와 서버 간에 VPN 연동이 활성화됐는지 체크하기 위해 사용되는데, 매 10초마다 ping을 발송해 120초 동안 응답이 없으면 원격지의 네트워크가 다운된 것으로 파악한다는 의미다.

comp-lzo : 압축 알고리즘을 사용하도록 한다. 서버에 이 같이 설정했다면, 클라이언트에도 동일하게 설정하도록 한다.

persist-key
persist-tun
user nobody          
group nobody   
: 초기화된 후에 OpenVPN 데몬이 nobody 권한으로 작동하도록 한다. 

status       openvpn-status.log
log          openvpn.log              
log-append  openvpn.log
: OpenVPN의 로그를 생성하는 설정이다.

tls-server : SSL 키 교환 시에 서버 역할을 하므로 tls-server로 지정한다.

dh  dh1024.pem
ca  my-ca.crt             
cert  server.crt                  
key server.key
:  CA 파일이나 인증서의 공개키 혹은 비밀키를 지정한다.

이후 서버에서 --mode server를 추가해 다음과 같이 실행하면 앞에서 지정한 포트로 데몬이 작동하는 것을 확인할 수 있다.

# openvpn --config /etc/server.conf --daemon --mode server


· VPN 클라이언트 설치와 설정

다음으로는 윈도우 PC의 클라이언트 프로그램 설정에 관한 내용을 살펴보자. 윈도우 클라이언트 프로그램으로는 OpenVPN GUI라는 프로그램이 많이 사용되는데, 웹 사이트(http://openvpn.se/)에서 다운로드해 설치하면 된다. 설치 이후 '시작->프로그램->OpenVPN'을 선택하면 다음과 같은 메뉴가 보이는데, 여기에서 OpenVPN GUI를 실행하면 된다. 이후 우측의 트레이에 생긴 아이콘에 오른쪽 마우스를 클릭하면 사용 가능한 메뉴가 나오는데, 여기에서 Edit Config를 선택하면 메모장이 뜨면서 설정작업을 진행할 수 있다. 서버 설정과 크게 다르지 않으므로 쉽게 이해될 것이다.
                 

(화면 1) OpenVPN 메뉴

[클라이언트 설정 파일 - config.ovpn 파일]

remote 220.11.xx.xx : VPN 데몬이 설치돼 있는 서버의 IP를 설정한다.

port 500 : VPN 서버와 통신할 포트를 지정해야 하는데, 서버에서 지정된 포트와 동일한 포트를 설정한다.

proto udp : 역시 기본 값인 UDP를 사용하도록 한다.

dev tap : 앞의 서버와 동일하게 설정한다.

ifconfig 10.105.11.3 255.255.0.0 : VPN 클라이언트 PC에 할당할 IP를 지정한다.

ping 10
verb 4       
: 상호간에 망이 살아있는지 확인하기 위해 매 10초마다 ping을 발송한다. 로그 수준은 4로 지정한다.
 
comp-lzo : 서버에서 지정한대로 압축 알고리즘을 지정한다.

tls-client : SSL을 통한 클라이언트 역할을 하므로 tls-client라고 정의한다.
 
ca my-ca.crt
cert client.crt         
key client.key
: 서버에서 살펴본 바와 같이 CA와 클라이언트 키를 지정한다. 나머지는 앞에서 살펴본 내용과 동일하다.

설정이 끝난 후 PC에서 OpenVPN GUI를 실행하면 (화면 2, 3과) 같이 서버와 클라이언트 간에 VPN 연동이 되는 것을 알 수 있다. 

(화면 2)OpenVPN GUI를 통해 연결된 화면

(화면 3)VPN 연결 후 IP 할당 화면

설정이 끝나면 VPN에서 지정된 IP를 할당받게 되고, 비공인 VPN IP로 접속하면 VPN을 통해 안전하게 터널링돼 접속하게 된다. 이때의 VPN 트래픽은 암호화되고 터널링되므로 누군가가 중간에서 가로챘다 하더라도 패킷 내용을 해석할 수 없으므로 스니핑이 불가능하다. 한편, 패킷을 터널링하는 과정으로 인해 다소 속도가 저하될 수 있으나 거의 인지할 수 없는 수준이다.

VPN을 이용하면 패킷을 암호화하는 것뿐만 아니라 파이어월을 사용할 때도 매우 편리하다. 외국  출장 등을 이유로 외부에서 접속하더라도 VPN을 통하면 항시 고정된 IP를 사용할 수 있기 때문이다. 따라서 파이어월에서는 접속을 허용해야 할 사용자가 유동 IP를 사용하더라도 단 한 개의 UDP 포트만 허용하면 되기 때문에 보안과 편리함 모두를 만족시킬 수 있다.

지금까지 단순하면서도 가장 많이 사용하는 구조에서의 VPN 활용 방법에 대해 살펴봤다. VPN은 이외의 다양한 환경에서도 응용이 가능하므로 홈페이지를 통해 자세한 내용을 참고하기 바란다.


작성자 : 홍석범 | 오늘과 내일 차장  

원   문 : http://www.ionthenet.co.kr/newspaper/view.php?idx=11247



OpenVPN 에 대한 참고 글

http://j2k.naver.com/j2k_frame.php/korean/kano.feena.jp/?OpenVPN

http://j2k.naver.com/j2k_frame.php/korean/www.komoto.org/vpn/openvpn.html

간단한 예

  1. 회사(학교) 네트워크는 방화벽 안에 있다
  2. 사무실의 1194/udp 포트는 외부에서 접근 가능하다
  3. 방화벽에서 192.168.0.0 네트워크는 신뢰하고 있다
  4. 사무실과 집의 컴퓨터는 tun (터널링)을 지원한다
  5. 사무실과 집의 컴퓨터는 같은 내용의 static.key 를 가지고 있다
  6. 사무실과 집의 컴퓨터는 192.168.0.1 과 192.168.0.2 로 PeerToPeer 연결하는 한가지 예이다. 사무실의 VPN 서버를 여러대의 클라이언트를 거느릴 수 있도록 하기위해서는 PeerToPeer 연결이 아닌 넷 마스크 구성을 하여야 한다

사무실 설정

# mkdir /etc/openvpn
# cd /etc/openvpn
# openvpn --genkey --secret static.key

생성된 static.key 파일은 집에도 복사해둔다

office.conf:

port 1194
proto udp
dev tun
ifconfig 192.168.0.1 192.168.0.2
up ./office.up
secret static.key
user nobody
group nobody
ping 60
ping-restart 300
ping-timer-rem
persist-tun
persist-key
verb 3

office.up:

#!/bin/sh
route add -net 192.168.0.0 netmask 255.255.255.0 gw $5

집 설정

home.conf:

port 1194
proto udp
dev tun
remote a.b.c.d
ifconfig 192.168.0.2 192.168.0.1
up ./home.up
secret static.key
user nobody
group nobody
ping 60
ping-restart 300
ping-timer-rem
persist-tun
persist-key
verb 3

remote a.b.c.d 에서 a.b.c.d 는 사무실의 인터넷 주소다. ifconfig 부분이 사무실 설정과 약간 다르다. static.key 는 미리 가져다 두어야 한다.

home.up:

#!/bin/sh
route add -net 192.168.0.0 netmask 255.255.255.0 gw $5

Trackback 0 Comment 2
  1. openvpn 2009.04.01 19:38 address edit & del reply

    이해가 되지 않는 분들은 아래 링크를 추가로 참고하셔도 좋을것 같네요...
    http://wiki.kldp.org/wiki.php/OpenVPN

  2. 2014.04.01 16:00 address edit & del reply

    비밀댓글입니다

2009.01.02 10:29

mii-tool (NIC 설정툴) 사용법, 네트워크 연결상태


[목차]
1. mii-tool 정의
2. mii-tool 연결 상태 확인
3. mii-tool를 이용한 속도변경
4. 기타

1. mii-tool 정의
mii-tool(Media Independent Interface(MII) tool)은 네트워크 인터페이스의 연결상태를 확인하고, 강제적으로 랜카드의 속도와 duplex 모드(100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD)를 변경하는데 사용하는 툴이다.

2. mii-tool을 통한 네트워크 연결상태 확인
2-1. mii-tool을 옵션없이 실행하면 랜카드의 속도, duplex 모드, 연결 상태를 보여주며 -v 옵션을 추가하면 보다 상세한 MII 상태를 볼 수 있다. Root 권한으로 실행해야 합니다.

[root@ancigo root]# mii-tool
eth0: negotiated 100baseTx-FD, link ok ( 100MB, Full Duplex로 autonegotiation됨 )
eth1: no link             ( 연결되어 있지 않음 )
[root@ancigo root]# mii-tool -v
eth0: negotiated 100baseTx-FD, link ok
 product info: Intel 82555 rev 4
 basic mode:  autonegotiation enabled
 basic status: autonegotiation complete, link ok
 capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
 advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
 link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
eth1: no link
 product info: Intel 82555 rev 4
 basic mode:  autonegotiation enabled
 basic status: no link
 capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
 advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

2.2. -w 옵션을 사용하면 실시간으로 연결 상태를 확인할 수 있다.
만약 갑자기 no link라고 나온다면 회선에 문제가 생겼거나 연결된 장비간의 회선속도나 duplex 모드가 맞지 않은 경우이다.

[root@ancigo root]# mii-tool -w
08:58:00 eth0: negotiated 100baseTx-FD, link ok
08:58:00 eth1: no link
21:23:11 eth0: no link (연결이 끊긴 상태에서)
21:23:15 eth0: negotiated 100baseTx-FD, link ok (다시 연결됨)


3. mii-tool을 이용한 네트웍 속도 변경
3-1. autonegotiation으로 두 장비간의 연결 속도와 duplex 모드를 자동으로 맞추게되지만 제대로 되지 않아 충돌(Late Collision)이 많이 발생하는 경우나 원하는 속도로 변경을 해야할 때 mii-tool은 유용하게 쓰일 수 있다. 다음은 100MB, Full duplex 모드로 변경 하는 예이다.

[root@ancigo root]# mii-tool -F 100baseTx-FD eth0
[root@ancigo root]# mii-tool
eth0: negotiatied 100baseTx-FD flow-control, link ok

3-2. 현재 위에 설정된 100MB를 10MB 전환한후 restart라는 옵션을 사용해서 자동으로 속도를 변경하는 예이다.

[root@ancigo root]# mii-tool
eth0: negotiated 100baseTx-FD flow-conftrol, link ok (현재 지원되는 속도)
[root@ancigo root]# mii-tool -F 10baseTx-FD eth0
(또는 mii-tool --force 10baseTx-FD eth0)
[root@ancigo root]# mii-tool
eth0: 10 Mbit, full duplex, link ok
[root@ancigo root]# mii-tool --restart eth0
[root@ancigo root]# mii-tool
eth0: negotiated 100baseTx-FD flow-conftrol, link ok

4. 기타 : NIC 관련 명령어들
4-1. ifconfig : NIC 상태 설정 내용 확인(IP, N/M, packet 등)
4-2. netconfig : NIC 설정 툴(IP, GW, N/M, DNS 세팅)
4-3. ifup, ifdown : NIC up/down 수행

자세한 사용법은 “명령어 -help”, 또는 “man 명령어”를 참고해주십시요.

 

 

 

저작권 안내

저작권자 ⓒ 리눅스원(주) 무단 링크 금지
링크, 담아가기, 퍼가기를 원하시는 분은 출처를 반드시 게재하시고, 링크를 걸어주시기 바랍니다.

리눅스원 호스팅팀.


Trackback 0 Comment 0