EdgeRouter - EdgeRoute VTI 예제 ======================================== download at 2017-08-14T16:27:46Z `origin `_ 가상 터널 인터페이스 (Virtual Tunnel Interface, VTI)는 ipsec 터널 인터페이스를 바인딩하는 기법입니다. 이 기능은 1.6.0 버전부터 추가되었습니다.   본 문서에서는 라우터 R1과 R2를 대상으로 네트워크를 구성합니다: R1 == eth0: WAN 20.0.0.2/30, gateway 20.0.01/30 eth1: LAN 192.168.1.1/24   R2 == eth0: WAN 30.0.0.2/30, gateway 30.0.01/30 eth1: LAN 172.16.1.1/24   먼저 WAN+2LAN2 설치 위자드를 실행하여 R2의 LAN 서브넷을 변경합니다. GUI의 VPN 탭을 사용하여 기본 IPSec 사이트 투 사이트 터널을 생성합니다. 이후에는 CLI를 사용하여 IPSec 터널을 VTI 인터페이스로 사용할 수 있도록 변환합니다. R1 VPN 화면은 다음과 같습니다: |image0|   R2에도 동일한 작업을 수행하고 터널 상태를 확인하면 다음과 같습니다:   :: ubnt@R1:~$ show vpn ike sa Peer ID / IP Local ID / IP ------------ ------------- 30.0.0.2 20.0.0.2 State Encrypt Hash D-H Grp NAT-T A-Time L-Time ----- ------- ---- ------- ----- ------ ------ up aes128 sha1 14 no 14730783 28800 ubnt@R1:~$ show vpn ipsec sa Peer ID / IP Local ID / IP ------------ ------------- 30.0.0.2 20.0.0.2 Tunnel State Bytes Out/In Encrypt Hash NAT-T A-Time L-Time Proto ------ ----- ------------- ------- ---- ----- ------ ------ ----- 1 up 0.0/0.0 aes128 sha1 no 967 3600 all   이제 다른 R2 서브넷에 -I 옵션을 추가하여 특정 LAN 서브넷을 명시하여 시작 주소를 결정하고 핑 명령어를 수행할 수 있습니다.   :: ubnt@R1:~$ /bin/ping -I eth1 172.16.1.1 PING 172.16.1.1 (172.16.1.1) from 192.168.1.1 eth1: 56(84) bytes of data. 64 bytes from 172.16.1.1: icmp_req=1 ttl=64 time=1.27 ms 64 bytes from 172.16.1.1: icmp_req=2 ttl=64 time=0.791 ms 64 bytes from 172.16.1.1: icmp_req=3 ttl=64 time=0.827 ms ^C --- 172.16.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.791/0.964/1.276/0.223 ms ubnt@R1:~$ show vpn ipsec sa Peer ID / IP Local ID / IP ------------ ------------- 30.0.0.2 20.0.0.2 Tunnel State Bytes Out/In Encrypt Hash NAT-T A-Time L-Time Proto ------ ----- ------------- ------- ---- ----- ------ ------ ----- 1 up 252.0/252.0 aes128 sha1 no 1127 3600 all   첨부한 내용은 VTI로 변환하기 이전의 R1, R2의 설정 파일입니다.   `R1 /config/config.boot `__ `R2 /config/config.boot `__   이제 VTI로 변겨알 때의 장단점을 확인해보도록 하겠습니다. 먼저 VTI 인터페이스를 R1, R2에 설정하고, 주소를 부여합니다.   :: ubnt@R1:~$ configure [edit] ubnt@R1# set interfaces vti vti0 address 40.0.0.1/30 [edit] ubnt@R1# commit [ interfaces vti vti0 ] Warning: Interface vti0 is not referenced in vpn configuration.   R1의 사이트 투 사이트 설정을 확인해 봅시다:   :: ubnt@R1# show vpn ipsec site-to-site peer 30.0.0.2 { authentication { mode pre-shared-secret pre-shared-secret secret } connection-type initiate ike-group FOO0 local-address 20.0.0.2 tunnel 1 { allow-nat-networks disable allow-public-networks disable esp-group FOO0 local { prefix 192.168.1.0/24 } remote { prefix 172.16.1.0/24 } } } [edit]   터널을 VTI 바인딩으로 변경합니다:   :: ubnt@R1# edit vpn ipsec site-to-site peer 30.0.0.2 [edit vpn ipsec site-to-site peer 30.0.0.2] ubnt@R1# delete tunnel 1 [edit vpn ipsec site-to-site peer 30.0.0.2] ubnt@R1# set vti bind vti0 [edit vpn ipsec site-to-site peer 30.0.0.2] ubnt@R1# set vti esp-group FOO0 [edit vpn ipsec site-to-site peer 30.0.0.2] ubnt@R1# top [edit] ubnt@R1# compare [edit vpn ipsec site-to-site peer 30.0.0.2] -tunnel 1 { - allow-nat-networks disable - allow-public-networks disable - esp-group FOO0 - local { - prefix 192.168.1.0/24 - } - remote { - prefix 172.16.1.0/24 - } -} +vti { + bind vti0 + esp-group FOO0 +} [edit] ubnt@R1# commit [edit]   VTI의 가장 큰 차이점은 더 이상 터널에 로컬/원격 서브넷을 기반으로 정의되지 않는다는 점입니다. VTI는 라우팅 가능한 인터페이스이기 때문에 R1에 VTI 인터페이스를 추가하여 172.16.1.1로 경로 추가가 가능합니다.   :: set protocols static interface-route 172.16.1.0/24 next-hop-interface vti0 R2 설정: :: set protocols static interface-route 192.168.1.0/24 next-hop-interface vti0 원격 서브넷에 핑을 수행합니다. 라우팅 가능한 인터페이스이기 때문에 고정 경로를 삭제하고 대신에 OSPF를 사용하여 경로를 동적으로 확인하도록 합니다.   :: ubnt@R1:~$ configure [edit] ubnt@R1# delete protocols static interface-route [edit] ubnt@R1# set protocols ospf parameters router-id 20.0.0.2 [edit] ubnt@R1# set protocols ospf area 0.0.0.0 network 40.0.0.0/30 [edit] ubnt@R1# set protocols ospf area 0.0.0.0 network 192.168.1.0/24 [edit] ubnt@R1# set protocols ospf area 0.0.0.0 network 192.168.2.0/24 [edit] ubnt@R1# set interfaces vti vti0 ip ospf network point-to-point [edit] ubnt@R1# commit [ protocols ospf ] Starting routing daemon: ospfd. [edit] save;exit   라우팅 테이블에서 라우터가 학습한 경로를 확인할 수 있습니다. :: ubnt@R1:~$ show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route S>* 0.0.0.0/0 [1/0] via 20.0.0.1, eth0 C>* 20.0.0.0/30 is directly connected, eth0 O 40.0.0.0/30 [110/10] is directly connected, vti0, 24w2d15h C>* 40.0.0.0/30 is directly connected, vti0 C>* 127.0.0.0/8 is directly connected, lo O>* 172.16.1.0/24 [110/20] via 40.0.0.2, vti0, 00:13:53 O 192.168.1.0/24 [110/10] is directly connected, eth1, 24w2d15h C>* 192.168.1.0/24 is directly connected, eth1 O 192.168.2.0/24 [110/10] is directly connected, eth2, 24w2d15h C>* 192.168.2.0/24 is directly connected, eth2 양쪽 원격 LAN 서브넷에 접근이 가능함을 확인할 수 있습니다. 하지만 VTI 없이는 4개의 터널을 생성해야만 같은 기능을 수행할 수 있습니다: :: 192.168.1.0/24 --- 172.16.1.0/24 192.168.1.0/24 --- 172.16.2.0/24 192.168.2.0/24 --- 172.16.1.0/24 192.168.2.0/24 --- 172.16.2.0/24 첨부된 설정파일은 VTI, OSPF를 사용하는 R1, R2의 설정파일입니다. `R1 /config/config.boot VTI `__ `R2 /config/config.boot VTI `__   VTI는 인터페이스이기 때문에 방화벽, 서비스 품질등의 옵션을 추가할 수 있습니다.   :: ubnt@R1# set interfaces vti vti0 ? Possible completions: address IP address description Description disable Disable interface firewall Firewall options ip IPv4 routing parameters ipv6 IPv6 routing parameters mtu Maximum Transmission Unit (MTU) redirect Incoming packet redirection destination traffic-policy Traffic-policy for interface   알려진 한계: #. 지점간의 인터페이스이기 때문에 종단점의 주소를 반드시 알아야 합니다. "local-address any"나 "peer 0.0.0.0" 은 동작하지 않습니다. .. |image0| image:: /hc/en-us/article_attachments/202818390/interface.png