VPN을 통해 홈 네트워크에서 AWS에 동적 라우팅 연결(NAT Traversal) - VyOS 편

11707 단어 VyOSAWSNatTraversal

개시하다


안녕하세요.업무 중에 AWS를 사용했지만 이전에 자신이 VPN을 사용한 적이 없기 때문에 검증으로 자신의 네트워크에서 AWS의 Site-SitVPN으로 연결을 시도해 봤다.

전제 조건


AWS와의 연결은 Site-SitVPN으로 구성됩니다.
우리 집은 전문 심판의 NTT 광선을 거쳐 NTT에서 보내는 표준형 광전화 공유기를 설치했다.라우터는 PPPOE(Pop over Ethernet) 인증을 통해 네트워크 속성에 연결되고 인터넷에 연결됩니다.
글로벌 고정 IP 주소에 대한 계약이 체결되지 않았기 때문에 이번에는 라우터가 취득한 글로벌 IP 주소를 사용해 NAT Traversal을 통해 VPN을 연결하기로 했다.
라우터는 테스트를 위해 가상 환경에서 구축할 수 있는 Vyatta(VyOS)를 사용합니다.

NAT-T가 뭐예요?


NAT Traversal은 NAT의 IP 주소 변환에 대해 애플리케이션이 정의하는 표준입니다.IPSec에서는 RFC 3947에서 IPSec NAT-T를 인터넷 측면 포트에서 NAT 내부 VPN 장치로 매핑하여 통신합니다.
  • IKE (UDP/500)
  • NAT-T (UDP 4500)
  • 매혹NTT 빛의 라우터를 설정할 수 없습니다!?


    NAT 호랑이바 원숭이를 위해 오랜만에 집에 연결된 라우터에 포트 매핑 설정을 살펴본다.
    저것은 회색이어서 설정할 수 없습니다.
    //또는 NAT 설정을 몰라요!포트 매핑이 없습니까?
    ・・・ 이전에는 PPPoE 인증 설정과 관련이 없습니다!이거 뭐야?
    확인해 보니 현재 IPv6의 IPoE 방식은 기본 계약이 되었다. IPv4망의 인터넷 연결이 아니라 IPv6망의 통신을 전제로 한다.이전에는 NTT 프레이츠망 시대가 PPPoE 인증을 전제로 했지만, 사회는 진화하고 있다.
    IPv4망에 비해 IPv6망은 통신의 혼란 없이 고속 인터넷 접속이 가능하지만 이대로는 검증이 불가능하기 때문에 변경하기로 했다.
    나는 IPv6 서비스를 중단하라고 전문가의 콜센터에 전화를 걸었다.1주일 정도 걸리지만 1일 뒤 메일을 보내 IPv4로 전환했다는 연락이 왔다.라우터 설정을 다시 보고 그리운 IPv4를 설정할 수 있습니다.

    가정용 공유기 옆에 포트 매핑을 설정해 주세요.


    집에 있는 라우터는 NTT광의 PR-S300NE입니다.화면을 설정하는'정적 IP 마스카라 설정'부터 진행한다.
    이 설정에서 192.168.12는 VPN 장치입니다.
  • UDP:4500 - IKE
  • UDP: 500-NAT 이동식 원숭이

  • AWS 측면 설정


    단계는 다음과 같습니다.
  • Customer Gateway
  • VPN Gateway
  • VPN 설정
  • Customer Gateway 설정


    IP 주소 자체에서 얻은 글로벌 IP 주소로 설정합니다.
    고정 IP의 PPPoE 형식을 사용할 수 없는 경우 주소를 매번 수정하십시오.

    가상 개인 Gateway 설정


    AWS에 대한 가상 개인 Gateway를 설정합니다.

    사이트 간 VPN 연결 설정


    Customer Gateway와 가상 개인 Gateway를 사용하여Site-to-SitVPN을 설정합니다.

    설정되면 다운로드 설정에서 객체로 사용할 VPN 설정 파일을 다운로드할 수 있습니다.
    VyOS에 대한 VPN 설정이 다운로드되어 적용됩니다.

    VyOS 설치


    공식 사이트ova 이미지 구축 환경을 다운로드합니다.

    VyOS Configuration


    AWS 측에서 다운로드한 VPN 설정 정보를 가져옵니다.
  • VyOS의 NAT 이동바 원숭이를 설정하기 위해 AWS의 설정 파일을 재생하기 전에 다음과 같은 내용을 설정한다.
  • set vpn ipsec nat-traversal enable
    set vpn ipsec ipsec-interfaces interface eth0
    set vpn ipsec nat-networks allowed-network 0.0.0.0/0
    
  • AWS 설정 파일에 유입된 후 AWS 측이 VPN으로 향하는local-address를 NAT 앞의 IP로 덮어씁니다.
  • set vpn ipsec site-to-site peer 18.181.XXX.XXX local-address 192.168.1.12
    set vpn ipsec site-to-site peer 54.250.XXX.XXX local-address 192.168.1.12
    
    VyOS 설정 예
    vyos@awsvpnr:~$ show configuration
    interfaces {
        ethernet eth0 {
            address 192.168.1.12/24
            description OutSide
            duplex auto
            hw-id 08:00:27:0c:fe:cd
            smp_affinity auto
            speed auto
        }
        ethernet eth1 {
            address 172.16.1.1/24
            description InSide
            duplex auto
            hw-id 08:00:27:dc:b0:7d
            smp_affinity auto
            speed auto
        }
        loopback lo {
        }
        vti vti0 {
            address 169.254.XX.XX/30
            description "VPC tunnel 1"
            mtu 1436
        }
        vti vti1 {
            address 169.254.XX.XX/30
            description "VPC tunnel 2"
            mtu 1436
        }
    }
    protocols {
        bgp 65000 {
            neighbor 169.254.XX.XX {
                remote-as 64512
                soft-reconfiguration {
                    inbound
                }
                timers {
                    holdtime 30
                    keepalive 10
                }
            }
            neighbor XXX.XXX.XXX.XXX {
                remote-as 64512
                soft-reconfiguration {
                    inbound
                }
                timers {
                    holdtime 30
                    keepalive 10
                }
            }
            network 0.0.0.0/0 {
            }
        }
    }
    service {
        ssh {
            port 22
        }
    }
    system {
        config-management {
            commit-revisions 100
        }
        console {
        }
        gateway-address 192.168.1.1
        host-name awsvpnr
        login {
            user vyos {
                authentication {
                    encrypted-password ****************
                    plaintext-password ****************
                }
                level admin
            }
        }
        ntp {
            server 0.pool.ntp.org {
            }
            server 1.pool.ntp.org {
            }
            server 2.pool.ntp.org {
            }
        }
        package {
            auto-sync 1
            repository community {
                components main
                distribution helium
                password ****************
                url http://packages.vyos.net/vyos
                username ""
            }
        }
        syslog {
            global {
                facility all {
                    level notice
                }
                facility protocols {
                    level debug
                }
            }
        }
        time-zone Asia/Tokyo
    }
    vpn {
        ipsec {
            esp-group AWS {
                compression disable
                lifetime 3600
                mode tunnel
                pfs enable
                proposal 1 {
                    encryption aes128
                    hash sha1
                }
            }
            ike-group AWS {
                dead-peer-detection {
                    action restart
                    interval 15
                    timeout 30
                }
                ikev2-reauth no
                key-exchange ikev1
                lifetime 28800
                proposal 1 {
                    dh-group 2
                    encryption aes128
                    hash sha1
                }
            }
            ipsec-interfaces {
                interface eth0
            }
            nat-networks {
                allowed-network 0.0.0.0/0 {
                }
            }
            nat-traversal enable
            site-to-site {
                peer 18.181.XXX.XXX {
                    authentication {
                        mode pre-shared-secret
                        pre-shared-secret ****************
                    }
                    connection-type initiate
                    description "VPC tunnel 1"
                    ike-group AWS
                    ikev2-reauth inherit
                    local-address 192.168.1.12
                    vti {
                        bind vti0
                        esp-group AWS
                    }
                }
                peer 54.250.XXX.XXX {
                    authentication {
                        mode pre-shared-secret
                        pre-shared-secret ****************
                    }
                    connection-type initiate
                    description "VPC tunnel 2"
                    ike-group AWS
                    ikev2-reauth inherit
                    local-address 192.168.1.12
                    vti {
                        bind vti1
                        esp-group AWS
                    }
                }
            }
        }
    }
    

    VPN 정보 확인


    AWS 관리 콘솔에서 VPN 연결 상태가 UP인지 확인할 수 있습니다.

    VyOS 측면 VPN 상태
    vyos@awsvpnr:~$ show vpn ipsec sa
    Peer ID / IP                            Local ID / IP
    ------------                            -------------
    18.181.XXX.XXX                           192.168.1.12
    
        Description: VPC tunnel 1
    
        Tunnel  State  Bytes Out/In   Encrypt  Hash    NAT-T  A-Time  L-Time  Proto
        ------  -----  -------------  -------  ----    -----  ------  ------  -----
        vti     up     25.1K/23.9K    aes128   sha1    yes    2670    3600    all
    
    
    Peer ID / IP                            Local ID / IP
    ------------                            -------------
    54.250.XXX.XXX                            192.168.1.12
    
        Description: VPC tunnel 2
    
        Tunnel  State  Bytes Out/In   Encrypt  Hash    NAT-T  A-Time  L-Time  Proto
        ------  -----  -------------  -------  ----    -----  ------  ------  -----
        vti     up     24.9K/25.0K    aes128   sha1    yes    2996    3600    all
    
    
    vyos@awsvpnr:~$
    

    라우팅 확인

    vyos@awsvpnr:~$ show ip bgp neighbors
    BGP neighbor is 169.254.XXX.XXX, remote AS 64512, local AS 65000, external link
      BGP version 4, remote router ID 169.254.XXX.XXX
      BGP state = Established, up for 00:35:09
      Last read 14:52:14, hold time is 30, keepalive interval is 10 seconds
      Configured hold time is 30, keepalive interval is 10 seconds
      Neighbor capabilities:
        4 Byte AS: advertised and received
        Route refresh: advertised and received(old & new)
        Address family IPv4 Unicast: advertised and received
      Message statistics:
        Inq depth is 0
        Outq depth is 0
                             Sent       Rcvd
        Opens:                  1          0
        Notifications:          0          0
        Updates:                2          2
        Keepalives:           212        212
        Route Refresh:          0          0
        Capability:             0          0
        Total:                215        214
      Minimum time between advertisement runs is 30 seconds
    
     For address family: IPv4 Unicast
      Inbound soft reconfiguration allowed
      Community attribute sent to this neighbor(both)
      1 accepted prefixes
    
      Connections established 1; dropped 0
      Last reset never
    Local host: 169.254.XXX.XXX, Local port: 179
    Foreign host: 169.254.XXX.XXX, Foreign port: 38641
    Nexthop: 169.254.XXX.XXX
    Nexthop global: ::
    Nexthop local: ::
    BGP connection: non shared network
    Read thread: on  Write thread: off
    
    BGP neighbor is 169.254.XXX.XXX, remote AS 64512, local AS 65000, external link
      BGP version 4, remote router ID 169.254.XXX.XXX
      BGP state = Established, up for 00:34:58
      Last read 14:52:12, hold time is 30, keepalive interval is 10 seconds
      Configured hold time is 30, keepalive interval is 10 seconds
      Neighbor capabilities:
        4 Byte AS: advertised and received
        Route refresh: advertised and received(old & new)
        Address family IPv4 Unicast: advertised and received
      Message statistics:
        Inq depth is 0
        Outq depth is 0
                             Sent       Rcvd
        Opens:                  1          1
        Notifications:          0          0
        Updates:                4          2
        Keepalives:           211        211
        Route Refresh:          0          0
        Capability:             0          0
        Total:                216        214
      Minimum time between advertisement runs is 30 seconds
    
     For address family: IPv4 Unicast
      Inbound soft reconfiguration allowed
      Community attribute sent to this neighbor(both)
      1 accepted prefixes
    
      Connections established 1; dropped 0
      Last reset never
    Local host: 169.254.XXX.XXX, Local port: 44927
    Foreign host: 169.254.XXX.XXX, Foreign port: 179
    Nexthop: 169.254.XXX.XXX
    Nexthop global: ::
    Nexthop local: ::
    BGP connection: non shared network
    Read thread: on  Write thread: off
    
    vyos@awsvpnr:~$
    

    총결산


    AWS 측은 NAT-T를 의식하지 못하고 일반적인 Site-to-site VPN만 설정했다.
    공식 사이트에 기재된 바와 같이 사용자 측이 포트를 통해 NAT-T를 비추어 UDP 500(IKE), 4500(NAT-T)의 소통을 하면 문제없이 통신할 수 있다는 조건이 있다.
    누구를 도울 수 있을지 영광입니다.

    좋은 웹페이지 즐겨찾기