EdgeRouter - EdgeRouter와 Azure 사이의 경로 기반 사이트 투 사이트 VPN (BGP over IKEv2/IPsec)

download at 2017-09-26T18:37:58Z origin

 Overview


이 문서는 Azure VPN 게이트웨이와 EdgeRouter 사이에서 BGP (경계 게이트웨이 프로토콜) 동적 라우팅을 사용하여 경로 기반 사이트 투 사이트 IPsec VPN을 구성하는 방법에 대하여 서술합니다. BGP 설정은 BGP 세션을 피어 (Azure 게이트웨이와 온 프레미스 VPN)간 IKEv2/IPsec 세션을 생성하도록 합니다. BGP 세션은 내부 facing 인터페이스와 IKEv2/IPsec 세션을 통하여 생성된 세션입니다. BGP 설정은 추가적인 설정 단계와 파워셸에 대한 지식, 적용 상황에 대한 이해를 필요로 합니다. 더 많은 정보는 Azure Route-Based (VTI over IKEv2/IPsec) 사이트 투 사이트 VPN을 참조하십시오.

경로기반 VPN은 가상 터널 인터페이스(VTI)의 사용, Azure에 연결할 때 IKEv2의 사용도에 따라서 정의됩니다. 경로 기반 VPN 타입과 달리 정책 기반 VPN은 로컬 원격지 서브넷의 사용에 따라서 다르게 정의합니다. 제시된 예제는 BGP의 동적 라우팅 엔트리를 생성하는 것에 집중하고 있으며, 직접 고정 라우팅 엔트리를 생성하는 것도 가능합니다. Azure Policy-Based (IKEv1/IPsec) 와  Azure Route-Based (VTI over IKEv2/IPsec) 문서를 참조하십시오.

book_25x25.png NOTES & REQUIREMENTS: EdgeOS 1.9.7 이상의 펌웨어가 설치된 모든 EdgeRouter 모델에서 적용 가능합니다. 커맨드라인 인터페이스와 Azure 포탈, 고급 네트워킹에 대한 지식, 파워셸에 대한 지식도 요구됩니다. 해당 주제에 대한 내용은 관련 문서 섹션의 문서를 확인하시기 바랍니다.

이 문서에서 사용한 장비:

  • EdgeRouter-X (ER-X)
  • Azure VPN 게이트웨이
  • 피어의 테스트 클라이언트 (Host1 and Server1)

추가 Azure 요구사항:

  • EdgeRouter의 퍼블릭 IP (NAT 구성을 받지 않아야 합니다)
  • 활성화된 Azure 구독 정보

더 많은 Azure VPN과 요구사항은 About VPN Devices 문서를 참조하세요.


Table of Contents


  1. 네트워크 다이어그램
  2. Steps - 경로 기반 VPN
  3. Steps - Azure 게이트웨이
  4. Steps - 테스팅 및 검증
  5. 관련 문서

네트워크 다이어그램


맨위로 가기

네트워크 토폴로지는 아래와 같습니다. EdgeRouter (ER)와 Azure VPN 게이트웨이 (GW)의 인터페이스와 IP 주소는 다음과 같습니다:

ER-X

  • eth0 (WAN) - 203.0.113.1
  • eth1 (LAN) - 192.168.1.1/24
  • vti0 -
  • BGP AS - 65510
  • BGP Update Source - 192.168.1.1

Azure GW

  • Virtual Gateway - 192.0.2.1
  • Virtual Network - 172.16.0.0/22
  • Default Subnet - 172.16.1.0/24
  • BGP AS - 65515
  • BGP Update Source 172.16.0.254

image1


Steps - 경로 기반 VPN


맨위로 가기

라우팅과 인터페이스 설정은 이미 완료했으며, 서로 통신이 가능하다고 가정합니다.

IPsec과 관련있는 UDP 포트와 프로토콜은 다음과 같습니다:

  1. UDP 500 (IKE)
  2. ESP (Protocol 50)
  3. UDP 4500 (NAT-T)

생성하는 VPN 타입은 IPsec 터널의 고정 VTI (IPIP 캡슐화)으로 명명합니다. VTI 인터페이스 (vti0)을 통해 패킷은 라우팅 되며, 이후에 IPsec을 사용하여 암호화 하는 것을 의미합니다. 경계 게이트웨이 프로토콜 (BGP)는 사이트 간의 라우팅을 활성화 하기 위해 사용합니다.

처음에는 ER의 환경설정에 대하여 설명하고 이후에는 Azure의 게이트웨이에 대하여 설정합니다. Azure IPsec 피어 IP 주소는 Dashboard > All Resources > Public IP address에서 찾아 볼 수 있습니다.

www.png  GUI STEPS: 라우터의 웹 관리 포털 (GUI)에 접속합니다.

  1. ER의 IPsec 피어와 보안 설정을 정의합니다. (<secret>을 원하는 패스워드로 설정합니다.)

VPN > IPsec Site-to-Site > +Add Peer

  • 고급 옵션 확인
  • 자동 방화벽 개방과 NAT부터 얻는 트래픽을 제외
Peer: 192.0.2.1 (needs to be the Azure public IP address, not 0.0.0.0)
Description: IPsecAzure
Local IP: 203.0.113.1 (needs to be the local public IP address, not any)
Encryption: AES-256
Hash: SHA1
DH Group: 2
Pre-shared Secret: <secret>
Local subnet: 192.168.1.0/24 (does not matter because it will be removed later)
Remote subnet: 172.16.0.0/22 (does not matter because it will be removed later)

info_i_25x25.png

Note

현재는 경로 기반 VTI 환경설정은 다이나믹 피어 주소와 동적 DNS (DynDNS)를 사용한 전체 주소 도메인 네임을 지원하지 않습니다. VTI 종단에서 알려진 IP 주소로 연결하는 것이 필요하며, local-address any혹은 peer 0.0.0.0 은 정상 동작하지 않습니다.

image4

CLI_circle.png  CLI STEPS: 커맨드라인 인터페이스에 접속합니다. GUI의 CLI 버튼을 사용하던가, PuTTY와 같은 프로그램을 사용합니다.

  1. 환경설정 모드로 진입합니다.
configure
  1. 현재 IPsec VPN 피어 환경설정을 확인합니다. (관련 정보만 아래에 출력됩니다.)
show vpn
ipsec {
   esp-group FOO0 {
       proposal 1 {
           encryption aes256
           hash sha1
       }
   }
   ike-group FOO0 {
       proposal 1 {
           dh-group 2
           encryption aes256
           hash sha1
       }
   }
   site-to-site {
       peer 192.0.2.1 {
           local-address 203.0.113.1
           tunnel 1 {
               esp-group FOO0
               local {
                   prefix 192.168.1.0/24
               }
               remote {
                   prefix 172.16.1.0/24
               }
           }
...

info_i_25x25.png

Note

Azure VPN 게이트웨이는 다른 암호화, 해싱 기법도 사용할 수 있습니다. 보안 설정으로는 AES256, SHA1을 선택할 수 있습니다. 지원하는 보안 설정은 About VPN Devices 를 참조하십시오.

3. ESP/IKE 생애 시간(초 단위)을 변경합니다.

set vpn ipsec esp-group FOO0 lifetime 27000
set vpn ipsec ike-group FOO0 lifetime 28800 (default)
  1. 완전 순방향 비밀성(PFS)을 비활성화합니다.
set vpn ipsec esp-group FOO0 pfs disable
  1. IKE 키 교환 버전을 1 에서 2로 변경합니다.
set vpn ipsec ike-group FOO0 key-exchange ikev2
  1. IPsec 커넥션 타입을 변경합니다.
set vpn ipsec site-to-site peer 192.0.2.1 connection-type respond

info_i_25x25.png

Note

VPN 커넥션 타입은 주로 비 기능 연결이 재협상 (키링)하는 횟수에 영향을 줍니다. respond 값은 1 으로 설정되어 재시도를 수행하며, initiate 옵션으로 커넥션을 계속해서 재시도 할 수 있습니다.

  1. VPN이 사용할 VTI를 생성합니다. (정의된 IP 주소가 필요하지 않습니다.)
set interfaces vti vti0
  1. VTI 인터페이스 타입의 MSS 세팅 값을 낮춥니다.
set firewall options mss-clamp interface-type vti
set firewall options mss-clamp mss 1350

info_i_25x25.png

Note

GRE 터널과 달리 VTI 인터페이스는 24 바이트의 오버헤드를 요구하지 않습니다. MTU 값은 IPsec 오버헤드에 따라서 자동적으로 낮아질 수 있습니다. 최대 세그먼트 크기 (MSS)는 1350보다 작아야 Azure에 연결되었을 떄 모든 상황에 대하여 대처할 수 있습니다.

  1. VTI를 포인팅 하는 원격 BGP 피어링 주소를 라우팅 엔트리에 생성합니다.
set protocols static interface-route 172.16.0.254/32 next-hop-interface vti0

info_i_25x25.png

Note

이 작업은 Azure가 'gateway subnet'의 소스로 BGP 세션 (BGP 피어링 주소)를 사용하기 때문에 필요합니다. 고정 경로를 사용한다면 ER은 BGP 접근 주소를 알고 있을 것입니다. (이 예제에서는 172.16.0.254) Azure가 BGP로 사용할 피어링 주소는 아래의 Azure 게이트웨이 환경설정에서 파워셸 명령어를 입력하여 확인할 수 있습니다.

  1. IPsec 터널을 삭제합니다.
delete vpn ipsec site-to-site peer 192.0.2.1 tunnel 1
  1. VTI 인터페이스와 IPsec 피어 환경설정을 연결합니다.
set vpn ipsec site-to-site peer 192.0.2.1 vti bind vti0
set vpn ipsec site-to-site peer 192.0.2.1 vti esp-group FOO0
  1. (선택사항) IPsec 오프로딩 기능을 활성화 하여 ESP 성능을 향상시킵니다.
set system offload ipsec enable (this requires a reboot to become active)
  1. BGP 접두사 리스트를 생성하여 전달받은 접두사를 필터링 하는 것에 사용합니다.
set policy prefix-list BGP rule 10 action deny
set policy prefix-list BGP rule 10 description 'Deny Local Gateway Address'
set policy prefix-list BGP rule 10 prefix 203.0.113.1/32

set policy prefix-list BGP rule 20 action deny
set policy prefix-list BGP rule 20 description 'Deny Azure Gateway Address'
set policy prefix-list BGP rule 20 prefix 192.0.2.1/32

set policy prefix-list BGP rule 30 action deny
set policy prefix-list BGP rule 30 description 'Deny Local Peering Address'
set policy prefix-list BGP rule 30 prefix 192.168.1.1/32

set policy prefix-list BGP rule 40 action deny
set policy prefix-list BGP rule 40 description 'Deny Azure Peering Address'
set policy prefix-list BGP rule 40 prefix 172.16.0.254/32

set policy prefix-list BGP rule 100 action permit
set policy prefix-list BGP rule 100 description 'Local Subnets'
set policy prefix-list BGP rule 100 prefix 192.168.1.0/24

set policy prefix-list BGP rule 110 action permit
set policy prefix-list BGP rule 110 description 'Azure Subnets'
set policy prefix-list BGP rule 110 prefix 172.16.0.0/22

info_i_25x25.png

Note

이 예제에서는 접두사 리스트를 전달받은 접두사에 대하여 필터링을 하는 것에 사용하였습니다. 이 리스트는 BGPout 과 BGPin으로 나누어 고려할 수 있습니다. 엔트리는 Azure 가상 네트워크 환경설정에 존재하는 'Azure Subnet' 값과 일치해야 합니다. 서브넷은 /22로 매칭이 되어야 합니다. Azure가 가상 네트워크에 있는 전체 주소 스페이스를 전달하기 때문입니다.

  1. BGP neighbor와 피어링 옵션을 정의합니다.
set protocols bgp 65510 timers holdtime 180
set protocols bgp 65510 timers keepalive 60
set protocols bgp 65510 neighbor 172.16.0.254 ebgp-multihop 2
set protocols bgp 65510 neighbor 172.16.0.254 prefix-list export BGP
set protocols bgp 65510 neighbor 172.16.0.254 prefix-list import BGP
set protocols bgp 65510 neighbor 172.16.0.254 remote-as 65515
set protocols bgp 65510 neighbor 172.16.0.254 soft-reconfiguration inbound
set protocols bgp 65510 neighbor 172.16.0.254 update-source 192.168.1.1

info_i_25x25.png

Note

BGP neighbor는 Azure 게이트웨이의 퍼블릭 IP 주소가 아니라, Azure 게이트웨이 서브넷 범위의 내부 IP 주소 입니다. ebgp-multihop 명령어가 필요하며, 피어는 직접 연결되지 않습니다. (ER의 BGP 세션의 소스는 192.168.1.1 입니다.) 최대 합계 홉수를 증가하도록 하여 BGP neighborship을 확장할 수 있습니다.

  1. 로컬 서브넷에서 BGP를 알립니다.
set protocols bgp 65510 network 192.168.1.0/24

info_i_25x25.png

Note

연결된 경로 혹은 다른 라우팅 프로토콜에서 학습한 접두사를 재배포 할수도 있습니다. (set protocols bgp 65510 redistribute connected) 명령어를 사용합니다.

  1. 변경내역을 커밋합니다.
commit
  1. 환경설정을 저장합니다.
save

Steps - Azure 게이트웨이


맨위로 가기

Microsoft Azure 의 사이트 투 사이트 커넥션은 Azure 포탈에서 'new' 기능을 사용한 것을 바탕으로 진행합니다. 추가적으로 파워 셸에 대한 내용도 필요합니다. 아래의 문서를 참조하세요:

www.png  GUI STEPS: Azure 관리 포탈 (GUI)에 접속합니다.

  1. 가상 네트워크를 생성합니다.

Dashboard > New > Networking > Virtual Network

Name: ServerNetwork
Address Space: 172.16.0.0/22
Subnet name: default
Subnet Address Space: 172.16.1.0/24
Resource Group: ServerNetwork
  1. 게이트웨이 서브넷을 생성합니다.

Dashboard > Virtual Networks > ServerNetwork > Subnets > + Gateway subnet

Name: GatewaySubnet (Required / cannot be changed)
Address Range: 172.16.0.0/24 (Cannot be the same as the default subnet address space)

info_i_25x25.png

Note

가상 네트워크와 게이트웨이 서브넷은 Azure 포탈에서 생성하였습니다. 파워셸로도 동일하게 수행할 수 있습니다. 가상 네트워크를 파워셸로 생성하는 방법은 아래 문서에 있습니다.

image6

image4.png

PS STEPS: 로컬 컴퓨터에서 파워셸을 관리자 권한으로 실행합니다. 파워셸을 사용하여 Azure를 관리하는 방법에 대한 문서는 Getting started with Azure PowerShell 문서를 참조하십시오.

  1. PowerShellGet 를 설치합니다.
$psversiontable
Name                           Value
----                           -----
PSVersion                      5.1.14393.1358

Get-Module PowerShellGet -list | Select-Object Name,Version,Path
Name          Version Path
----          ------- ----
PowerShellGet 1.0.0.1 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PowerShellGet.psd1

결과가 출력되지 않거나 에러 메시지가 출력된다면 현재의 파워셸을 업데이트 하거나 추가 모듈을 설치하십시오. 추가 모듈.

info_i_25x25.png

Note

윈도우 10을 사용중이라면 파워셸이 5.0 버전이 설치되어 있습니다. PowerShellGet이 기본으로 내장되어 있습니다.

  1. 파워셸 실행 정책을 정의합니다.
Get-ExecutionPolicy
Restricted

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

PowerShellGet은 실행 정책을 통해서 스크립트를 실행합니다. 정책 예제는 제한되어 있지 않습니다. 더 많은 설명은 About Execution Policies 문서를 참조하세요.

  1. AzureRM (자원 관리자) 파워셸 모듈을 설치합니다.
Install-Module AzureRM
  1. 자원관리자 계정과 구독을 연결합니다.
Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionName "<subscription name>"
  1. Azure 포탈에서 생성한 가상 네트워크를 확인합니다. (관련 있는 출력만 표시하였습니다.)
Get-AzureRmVirtualNetwork -ResourceGroupName "ServerNetwork"
Name                   : ServerNetwork
ResourceGroupName      : ServerNetwork
Location               : eastus
ProvisioningState      : Succeeded
AddressSpace           : {
                          "AddressPrefixes": [
                            "172.16.0.0/22"
                          ]
                        }
Subnets                : [
                          {
                            "Name": "default",
                            "AddressPrefix": "172.16.1.0/24",
                            "ProvisioningState": "Succeeded"
                          },
                          {
                            "Name": "GatewaySubnet",
                            "AddressPrefix": "172.16.0.0/24",
                            "ProvisioningState": "Succeeded"
                          }
                        ]
  1. 가상 네트워크 게이트웨이 환경 설정을 사용할 앨리어싱을 정의합니다.
$Resource = "ServerNetwork"

$Location = "East US"

$vNet = Get-AzureRmVirtualNetwork -Name "ServerNetwork" -ResourceGroupName $Resource

$PublicIP = New-AzureRmPublicIpAddress -Name VirtualGateway -ResourceGroupName $Resource -Location $Location -AllocationMethod Dynamic

$GateWaySubnet = Get-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vNet

$GatewayIP = New-AzureRmVirtualNetworkGatewayIpConfig -Name "VirtualGateway" -Subnet $GatewaySubnet -PublicIpAddress $PublicIP
  • $Resource - 리소스 그룹의 이름 (ServerNetwork)
  • $Location - Azure의 위치  (East US)
  • $vNet - 이전에 생성한 가상 네트워크 (ServerNetwork / 172.16.0.0/22)
  • $PublicIP - Azure에 의해 생성된 가상 게이트웨이의 퍼블릭 IP (VirtualGateway)
  • $GatewaySubnet - 이전에 생성한 게이트웨이 서브넷 (GatewaySubnet / 172.16.0.0/24)
  • $GatewayIP - 가상 게이트웨이가 사용할 퍼블릭 IP (VirtualGateway)
  1. 가상 네트워크 게이트웨이를 생성합니다. (AS 넘버를 바꿀 수 있습니다.)
New-AzureRmVirtualNetworkGateway -Name "VirtualGateway" -ResourceGroupName $Resource -Location $Location -IpConfigurations $GatewayIP -GatewayType Vpn -VpnType RouteBased -GatewaySku VpnGw1 -Asn 65515

info_i_25x25.png

Note

가상 게이트웨이 프로비저닝은 시간이 소요됩니다. 게이트웨이 스톡 키핑 유닛 (SKU)는 VPN 커넥션의 출력량을 정의합니다. 더 많은 SKU 정보는 About VPN Gateway 에서 찾아볼 수 있습니다. 'VPNGw' SKU나 더 높은 경우에는 가상 네트워크 게이트웨이가 BGP를 지원해야 합니다.

  1. 가상 게이트웨이 세팅을 점검합니다. (관련있는 결과만 출력하였습니다.)
Get-AzureRmVirtualNetworkGateway -Name "VirtualGateway" -ResourceGroupName "ServerNetwork"
Name                   : VirtualGateway
ResourceGroupName      : ServerNetwork
Location               : eastus
ProvisioningState      : Succeeded
GatewayType            : Vpn
VpnType                : RouteBased
Sku                    : {
                          "Capacity": 10,
                          "Name": "VpnGw1",
                          "Tier": "VpnGw1"
                        }
BgpSettings            : {
                          "Asn": 65515,
                          "BgpPeeringAddress": "172.16.0.254",
                          "PeerWeight": 0
                        }

BgpPeeringAddress를 기억하십시오. BGP 피어의 neighbor 주소는 EdgeRouter (172.16.0.254)에서 사용할 것입니다. neighbor 주소를 set protocols bgp 65510 neighbor명령어를 ER 환경설정에서 사용할 떄 정의합니다.

  1. 로컬 게이트웨이를 생성합니다. (AS를 변경할 수 있습니다.)
New-AzureRmLocalNetworkGateway -Name "LocalGateway" -ResourceGroupName $Resource -Location $Location -GatewayIpAddress "203.0.113.1" -AddressPrefix "192.168.1.0/24" -Asn 65510 -BgpPeeringAddress "192.168.1.1"
  • GatewayIpAddress - EdgeRouter의 퍼블릭 IP (ER)
  • AddressPrefix - ER의 로컬 서브넷
  • BgpPeeringAddress - ER의 Neighbor IP 주소 (Update Source)
  • Asn - 지율 시스템 넘버 (65510)
  1. 로컬 게이트웨이 세팅을 점검합니다. (관련 있는 결과만 표시합니다.)
Get-AzureRmLocalNetworkGateway -Name "LocalGateway" -ResourceGroupName "ServerNetwork"
Name                     : LocalGateway
ResourceGroupName        : ServerNetwork
Location                 : eastus
ProvisioningState        : Succeeded
GatewayIpAddress         : 76.237.8.193
LocalNetworkAddressSpace : {
                            "AddressPrefixes": [
                              "192.168.1.0/24"
                            ]
                          }
BgpSettings              : {
                            "Asn": 65510,
                            "BgpPeeringAddress": "192.168.1.1",
                            "PeerWeight": 0
                          }
  1. 가상 게이트웨이와 로컬 게이트웨이의 앨리어싱을 설정합니다.
$VirtualConnection = Get-AzureRmVirtualNetworkGateway -Name "VirtualGateway"  -ResourceGroupName $Resource
$LocalConnection  = Get-AzureRmLocalNetworkGateway -Name "LocalGateway" -ResourceGroupName $Resource
  1. 가상 게이트웨이 커넥션을 만들고 초기화 합니다.
New-AzureRmVirtualNetworkGatewayConnection -Name "IPsecER" -ResourceGroupName $Resource -VirtualNetworkGateway1 $VirtualConnection -LocalNetworkGateway2 $LocalConnection -Location $Location -ConnectionType IPsec -SharedKey '<secret>' -EnableBGP $True
  • Name - VPN 커넥션 이름 (locally significant)
  • VirtualNetworkGateway1 - 이전에 생성한 가상 게이트웨이 (VirtualGateway)
  • LocalNetworkGateway2 - 이전에 생성한 로컬 게이트웨이 (LocalGateway)
  • SharedKey - 사이트간 미리 공유할 시크릿
  • EnableBGP - 특별히 활성화 되어야함, 그렇지 않으면 BGP가 활성화되지 않음 ($True)
  1. 가상 게이트 웨이 커넥션을 검증합니다. (관련 있는 결과만 출력합니다.)
Get-AzureRmVirtualNetworkGatewayConnection -Name "IPsecER" -ResourceGroupName "ServerNetwork"
Name                    : IPsecER
ResourceGroupName       : ServerNetwork
Location                : eastus
ProvisioningState       : Succeeded
ConnectionStatus        : Connected
EgressBytesTransferred  : 3854
IngressBytesTransferred : 3104

image8

image9


Steps - 테스팅 및 검증


맨위로 가기

  1. IPsec 보안 옵션을 검증하고 ER의 상태를 확인합니다:
show vpn ipsec sa
peer-192.0.2.1-tunnel-vti: #2, ESTABLISHED, IKEv2, ecdf3193545e701f:ee1b587910cc8b32
 local  '203.0.113.1' @ 203.0.113.1
 remote '192.0.2.1' @ 192.0.2.1
 AES_CBC-256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
 established 787s ago, rekeying in 27228s
 peer-192.0.2.1-tunnel-vti: #1, INSTALLED, TUNNEL, ESP:AES_CBC-256/HMAC_SHA1_96
   installed 787 ago, rekeying in 25448s, expires in 26213s
   in  c92b831a,   4180 bytes,    85 packets,     3s ago
   out 596eba1a,   3366 bytes,    62 packets,     3s ago
   local  0.0.0.0/0
   remote 0.0.0.0/0

sudo ipsec statusall
Status of IKE charon daemon (strongSwan 5.2.2, Linux 3.10.14-UBNT, mips):
 uptime: 26 minutes, since Jul 04 19:48:43 2017
 malloc: sbrk 376832, mmap 0, used 276328, free 100504
 worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 2

Listening IP addresses:
 192.168.1.1
 203.0.113.1
Connections:
peer-192.0.2.1-tunnel-vti:  203.0.113.1...192.0.2.1  IKEv2
peer-192.0.2.1-tunnel-vti:   local:  [203.0.113.1] uses pre-shared key authentication
peer-192.0.2.1-tunnel-vti:   remote: [192.0.2.1] uses pre-shared key authentication
peer-192.0.2.1-tunnel-vti:   child:  0.0.0.0/0 === 0.0.0.0/0 TUNNEL
Routed Connections:
peer-192.0.2.1-tunnel-vti{1}:  ROUTED, TUNNEL
peer-192.0.2.1-tunnel-vti{1}:   0.0.0.0/0 === 0.0.0.0/0
Security Associations (1 up, 0 connecting):
peer-192.0.2.1-tunnel-vti[2]: ESTABLISHED 14 minutes ago, 203.0.113.1[203.0.113.1]...192.0.2.1[192.0.2.1]
peer-192.0.2.1-tunnel-vti[2]: IKEv2 SPIs: ecdf3193545e701f_i ee1b587910cc8b32_r*, rekeying in 7 hours
peer-192.0.2.1-tunnel-vti[2]: IKE proposal: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
peer-192.0.2.1-tunnel-vti{1}:  INSTALLED, TUNNEL, ESP SPIs: c92b831a_i 596eba1a_o
peer-192.0.2.1-tunnel-vti{1}:  AES_CBC_256/HMAC_SHA1_96, 4343 bytes_i (89 pkts, 12s ago), 3497 bytes_o (65 pkts, 12s ago)
peer-192.0.2.1-tunnel-vti{1}:   0.0.0.0/0 === 0.0.0.0/0

2. ER IPsec strongSwan 환경설정을 검증합니다:

sudo cat /etc/ipsec.conf
# generated by /opt/vyatta/sbin/vpn-config.pl

config setup

conn peer-192.0.2.1-tunnel-vti
       left=203.0.113.1
       right=192.0.2.1
       leftsubnet=0.0.0.0/0
       rightsubnet=0.0.0.0/0
       ike=aes256-sha1-modp1024!
       keyexchange=ikev2
       reauth=no
       ikelifetime=28800s
       esp=aes256-sha1!
       keylife=27000s
       rekeymargin=540s
       type=tunnel
       compress=no
       authby=secret
       mark=9437186
       auto=route
       keyingtries=1
#conn peer-192.0.2.1-tunnel-vti

3. ER 외부 WAN 인터페이스를 통해서 수신하는 IKE 트래픽을 캡쳐합니다:

sudo tcpdump -i eth0 -n udp dst port 500
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 203.0.113.1.500 > 192.0.2.1.500: isakmp: phase 1 I ident
IP 192.0.2.1.500 > 203.0.113.1.500: isakmp: phase 1 R ident
IP 203.0.113.1.500 > 192.0.2.1.500: isakmp: phase 1 I ident[E]
IP 192.0.2.1.500 > 203.0.113.1.500: isakmp: phase 1 R ident[E]
IP 203.0.113.1.500 > 192.0.2.1.500: isakmp: phase 2/others I oakley-quick[E]
IP 192.0.2.1.500 > 203.0.113.1.500: isakmp: phase 2/others R oakley-quick[E]

info_i_25x25.png

Note

실시간 캡쳐의 결과이므로 아무런 결과가 발견되지 않는다면 클라이언트가 트래픽을 생성하지 않거나 트래픽 업스트림이 차단당한 것일수도 있습니다.

4. ER IPsec VPN 로그를 확인합니다:

sudo swanctl --log
[KNL] creating acquire job for policy 192.168.1.10/32[icmp/8] === 172.16.1.10/32[icmp/8] with reqid {1}
[IKE] initiating Main Mode IKE_SA peer-192.0.2.1-tunnel-1[1] to 192.0.2.1
[ENC] generating ID_PROT request 0 [ SA V V V V ]
[NET] sending packet: from 203.0.113.1[500] to 192.0.2.1[500] (160 bytes)
[NET] received packet: from 192.0.2.1[500] to 203.0.113.1[500] (108 bytes)
[ENC] parsed ID_PROT response 0 [ SA V ]
[IKE] received NAT-T (RFC 3947) vendor ID
[ENC] generating ID_PROT request 0 [ KE No NAT-D NAT-D ]
[ENC] parsed ID_PROT response 0 [ KE No V V V V NAT-D NAT-D ]
[ENC] generating ID_PROT request 0 [ ID HASH N(INITIAL_CONTACT) ]
[ENC] parsed ID_PROT response 0 [ ID HASH ]
[IKE] IKE_SA peer-192.0.2.1-tunnel-1[1] established between 203.0.113.1[203.0.113.1]...192.0.2.1[192.0.2.1]
[ENC] generating QUICK_MODE request 561157166 [ HASH SA No ID ID ]
[ENC] parsed QUICK_MODE response 561157166 [ HASH SA No ID ID N((24576)) ]
[IKE] <peer-192.0.2.1-tunnel-vti|1> CHILD_SA peer-192.0.2.1-tunnel-vti{1} established with SPIs c02f6d74_i dcfd3294_o and TS 0.0.0.0/0 === 0.0.0.0/0

info_i_25x25.png

Note

실시간 캡쳐 결과이므로 출력이 보이지 않는다면, 트래픽이 방화벽을 통해서 허용되었는지 확인하십시오. 다른 방법으로는 show vpn log | no-more명령어를 통해서 전체 IPsec 로그 히스토리를 확인할 수 있습니다.

  1. Server1 과 Host1사이에 터널을 통해 트래픽을 전송해봅니다:
sudo traceroute -n 192.168.1.10
traceroute to 192.168.1.10 (192.168.1.10), 30 hops max, 60 byte packets
1  172.16.0.10 (172.16.0.10)  1.846 ms  1.824 ms  1.812 ms
2  192.168.1.1 (192.168.1.1)  49.158 ms  53.873 ms  55.646 ms
3  192.168.1.10 (192.168.1.10)  57.799 ms *  59.623 ms

info_i_25x25.png

Note

172.16.0.10 주소는 Azure 게이트웨이의 주소입니다. 로컬 네트워크에서 Azure가는 트래픽은 169.254.0.31을 통할 때 다른 경로를 선택할 수도 있습니다.

sudo traceroute -n 172.16.1.10
traceroute to 172.16.1.10 (172.16.1.10), 30 hops max, 60 byte packets
1  192.168.1.1 (192.168.1.1)  1.726 ms  1.734 ms  1.712 ms
2  169.254.0.31 (169.254.0.31)  46.268 ms  48.562 ms  49.542 ms
3  172.16.1.10 (172.16.1.10)  56.236 ms *  55.567 ms
  1. 터널을 통해 전송하는 트래픽을 캡쳐하고 터널의 ER 상태를 점검합니다:
show interfaces vti vti0
vti0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1436 qdisc noqueue state UNKNOWN group default
   link/ipip 203.0.113.1 peer 192.0.2.1

   RX:  bytes    packets     errors    dropped    overrun      mcast
        51978        593          0          0          0          0
   TX:  bytes    packets     errors    dropped    carrier collisions
        50543        556          0          0          0          0

show interfaces vti vti0 capture
22:40:10.503017 IP 172.16.1.10 > 192.168.1.10: ICMP echo request, id 12993, seq 18, length 64
22:40:10.504918 IP 192.168.1.10 > 172.16.1.10: ICMP echo reply, id 12993, seq 18, length 64
22:40:11.509699 IP 172.16.1.10 > 192.168.1.10: ICMP echo request, id 12993, seq 19, length 64
22:40:11.512768 IP 192.168.1.10 > 172.16.1.10: ICMP echo reply, id 12993, seq 19, length 64
  1. BGP 커넥션과 ER에서 접두사 광고/수신 정보를 확인합니다:
show ip route bgp
IP Route Table for VRF "default"
B    *> 172.16.0.0/22 [20/0] via 172.16.0.254 (recursive is directly connected, vti0) ), 00:22:56

show ip bgp summary
BGP router identifier 203.0.113.1, local AS number 65510
BGP table version is 9
2 BGP AS-PATH entries
0 BGP community entries
Neighbor                 V   AS   MsgRcv    MsgSen TblVer   InQ   OutQ    Up/Down   State/PfxRcd
172.16.0.254             4 65515   46         41       9      0      0  00:38:32               2

info_i_25x25.png

Note

(총 전달된 접두사 수) 숫자를 상태/PfxRcd 상태에서 확인할 수 있습니다. 다른 'CONNECT'와 같은 상태는 BGP 세션이 활성화 되지 않았음을 뜻합니다.

show ip bgp
BGP table version is 9, local router ID is 203.0.113.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, l - labeled
             S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric    LocPrf       Weight Path
*>  192.168.1.0/24   0.0.0.0                       100          32768    i
*                    172.16.0.254         0                     0       65515 i
*>  172.16.0.0/22    172.16.0.254         0                     0       65515 i

Total number of prefixes 2

show ip bgp neighbors 172.16.0.254
BGP neighbor is 172.16.0.254, remote AS 65515, local AS 65510, external link
 BGP version 4, remote router ID 172.16.0.254
 BGP state = Established, up for 00:39:26
 Last read 00:39:26, hold time is 180, keepalive interval is 60 seconds
 Configured hold time is 180, keepalive interval is 60 seconds
 Neighbor capabilities:
   Route refresh: advertised and received (new)
   4-Octet ASN Capability: advertised and received
   Address family IPv4 Unicast: advertised and received
   Address family IPv6 Unicast: received
 Received 47 messages, 0 notifications, 0 in queue
 Sent 43 messages, 0 notifications, 0 in queue
 Route refresh request: received 0, sent 0
 Minimum time between advertisement runs is 30 seconds
 Update source is 192.168.1.1
For address family: IPv4 Unicast
 BGP table version 10, neighbor version 9
 Index 1, Offset 0, Mask 0x2
   Graceful restart: received
 Inbound soft reconfiguration allowed
 Community attribute sent to this neighbor (both)
 Inbound path policy configured
 Outbound path policy configured
 Incoming update prefix filter list is *BGP
 Outgoing update prefix filter list is *BGP
 2 accepted prefixes
 1 announced prefixes
Connections established 1; dropped 0
 External BGP neighbor may be up to 2 hops away.
Local host: 192.168.1.1, Local port: 179
Foreign host: 172.16.0.254, Foreign port: 49328
Nexthop: 192.168.1.1
Nexthop global: fe80::46d9:e7ff:fe50:8bbf
Nexthop local: ::
BGP connection: non shared network

show ip bgp neighbors 172.16.0.254 received-routes
BGP table version is 10, local router ID is 203.0.113.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric    LocPrf       Weight Path
*>  192.168.1.0/24     172.16.0.254                               0       65515 i
*>  192.168.1.1/32     172.16.0.254                               0       65515 i
*>  172.16.0.0/22    172.16.0.254                               0       65515 i

info_i_25x25.png

Note

192.168.1.0/24와 192.168.1.1/32 접두사는 Azure BGP 피어에서 다시 광고되어 전달받습니다. 이전에 정의한 필터링 prefix-list 는 라우팅 테이블에 경로가 설치되는 것을 예방합니다. (관리되어 질 수 있는 거리상의 연결된 경로도 설치를 제한합니다.)

show ip bgp neighbors 172.16.0.254 advertised-routes
BGP table version is 10, local router ID is 203.0.113.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric    LocPrf       Weight Path
*>  192.168.1.0/24     192.168.1.1                     100          32768    i

show ip bgp 192.168.1.0/24
BGP routing table entry for 192.168.1.0/24
Paths: (2 available, best #1, table Default-IP-Routing-Table)
 Advertised to non peer-group peers:
 172.16.0.254
 Local
   0.0.0.0 from 0.0.0.0 (203.0.113.1)
     Origin IGP, localpref 100, weight 32768, valid, sourced, local, best
     Last update: Tue Jul  4 20:35:08 2017
 65515
   172.16.0.254 from 172.16.0.254 (172.16.0.254)
     Origin IGP, metric 0, localpref 100, valid, external
     Last update: Tue Jul  4 20:39:21 2017

show ip bgp 172.16.0.0/22
BGP routing table entry for 172.16.0.0/22
Paths: (1 available, best #1, table Default-IP-Routing-Table)
 Not advertised to any peer
 65515
   172.16.0.254 from 172.16.0.254 (172.16.0.254)
     Origin IGP, metric 0, localpref 100, valid, external, best
     Last update: Tue Jul  4 20:39:21 2017

관련 문서


맨위로 가기