SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
VTI の中身
浅間 正和 @ 有限会社 銀座堂
VTI とは?


•   Virtual Tunnel Interface の略で Vyatta ( Network
    OS | Core ) 6.5R1 から実装された中身が暗号化
    される IP-IP tunnel のようなモノ
Benefits

•   They are capable of having traffic routed to them 
•   They are capable of passing routing protocols over 
    them 
•   They do not require local or remote subnets to be 
    specified 
•   They operate as if the peer interfaces are directly 
    connected 

(Vyatta VPN Reference Guide 6.5R1 v01 より引用)
Vyatta configuration の違い
                                    interfaces {
                                      vti vti0 {
                                      }
                                    }
vpn {
                                    protocols {
  ipsec {
                                      static
    site-to-site {
                                        interface-route 192.168.2.0/24 {
      peer 172.16.1.2 {
                                          next-hop-interface vti0 {
        default-esp-group ESP-G
                                          }
        ike-group IKE-G
                                        }
        local-address 172.16.1.1
                                      }
        tunnel 1 {
                                    }
          local {
                                    vpn {
            prefix 192.168.1.0/24
                                      ipsec {
          }
                                        site-to-site {
          remote {
                                          peer 172.16.1.2 {
            prefix 192.168.2.0/24
                                             ike-group IKE-G
          }
                                             local-address 172.16.1.1
        }
                                            vti {
      }
                                               bind vti0
    }
                                               esp-group ESP-G
  }
                                            }
}
                                          }
                                        }
                                      }
                                    }
                 従来                                   VTI
/etc/ipsec.conf の違い

                                     conn peer-172.16.1.2-tunnel-vti
conn peer-172.16.1.2-tunnel-1                left=172.16.1.1
        left=172.16.1.1                      right=172.16.1.2
        right=172.16.1.2                     leftsubnet=0.0.0.0/0
        leftsubnet=192.168.1.0/24            rightsubnet=0.0.0.0/0
        rightsubnet=192.168.2.0/24           ike=aes256-sha1!
        leftsourceip=192.168.1.1             ikelifetime=28800s
        ike=aes256-sha1!                     esp=aes256-sha1!
        ikelifetime=28800s                   keylife=3600s
        esp=aes256-sha1!                     rekeymargin=540s
        keylife=3600s                        type=tunnel
        rekeymargin=540s                     pfs=yes
        type=tunnel                          compress=no
        pfs=yes                              authby=secret
        compress=no                          mark=2415919105
        authby=secret                        leftupdown="/usr/lib/ipsec/vti-
        auto=start                   up-down.sh vti0"
        keyingtries=%forever                 auto=start
                                             keyingtries=%forever




                 従来                                    VTI
ip xfrm policy list 実行結果の違い


                                        src 0.0.0.0/0 dst 0.0.0.0/0
                                          dir out priority 2051
src 192.168.1.0/24 dst 192.168.2.0/24
                                          mark -1879048191/0xffffffff
  dir out priority 1859
                                          tmpl src 172.16.1.1 dst 172.16.1.2
  tmpl src 172.16.1.1 dst 172.16.1.2
                                            proto esp reqid 16384 mode tunnel
    proto esp reqid 16384 mode tunnel
                                        src 0.0.0.0/0 dst 0.0.0.0/0
src 192.168.2.0/24 dst 192.168.1.0/24
                                          dir fwd priority 2051
  dir fwd priority 1859
                                          mark -1879048191/0xffffffff
  tmpl src 172.16.1.2 dst 172.16.1.1
                                          tmpl src 172.16.1.2 dst 172.16.1.1
    proto esp reqid 16384 mode tunnel
                                            proto esp reqid 16384 mode tunnel
src 192.168.2.0/24 dst 192.168.1.0/24
                                        src 0.0.0.0/0 dst 0.0.0.0/0
  dir in priority 1859
                                          dir in priority 2051
  tmpl src 172.16.1.2 dst 172.16.1.1
                                          mark -1879048191/0xffffffff
    proto esp reqid 16384 mode tunnel
                                          tmpl src 172.16.1.2 dst 172.16.1.1
                                            proto esp reqid 16384 mode tunnel




                 従来                                       VTI
設定時の流れ
•   /opt/vyatta/sbin/vpn-config.pl が実行される
    •   /etc/ipsec.conf の生成と ipsec start の実行
•   /opt/vyatta/sbin/vyatta-vti-config.pl が実行される
    •   sudo /opt/vyatta/sbin/cfgvti add name $tunName  
        key $mark remote $remote local $local の実行
    •   sudo iptables -t mangle -D PREROUTING -s  
        $remote -d $local ( -p esp | -p udp --dport 4500 ) 
        -j MARK --set-mark $mark の実行
/opt/vyatta/sbin/cfgvti
•   git repo の build-iso/pkgs/vyatta-cfg-vpn/src/cfgvti.c 
•   … C で書かれたプログラム…なぜ…?
•   なななんと実は VTI は net/ipv4/ipip.ko ではなく
    net/ipv4/ip_vti.ko だった…。

    commit 1181412c1a671ed4e8fb1736f17e6ec617c68059
    Author: Saurabh <saurabh.mohan@vyatta.com>
    Date:   Tue Jul 17 09:44:54 2012 +0000

        net/ipv4: VTI support new module for ip_vti.

        New VTI tunnel kernel module, Kconfig and Makefile changes.

        Signed-off-by: Saurabh Mohan <saurabh.mohan@vyatta.com>
        Reviewed-by: Stephen Hemminger <shemminger@vyatta.com>
        Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_vti.ko

•   Linux kernel の main line には v3.6 から merge
•   (Vyatta 6.5R1 は v3.3 なので backport?)
•   net/ipv4/ipip.ko を元にしているが xfrm の esp
    が処理してくれる encap/decap は省かれている
•   一番重要な違いは xmit 時に mark を付けるこ
    とで xfrm policy に引っ掛けるようにしている
    こと
送受信時の流れ
•   送信時の流れ
    •   net/ipv4/ip_vti.ko の vti_tunnel_xmit が呼ば
        れる
    •   VTI を一意に表す mark を付け xfrm に流す
    •   xfrm が encap し暗号化
•   受信時の流れ
    •   Netfilter が mask を付ける
    •   mark から xfrm policy が判明し復号化と
        decap 処理
まとめ
•   Dynamic routing や QoS と組み合わせて使え
    るのはかなり便利?
•   もとは Cisco さんが最初にやった方式?
    Vyatta VPN Reference にも compatible with 3rd
    party VTI/route-based VPN connections と書か
    れているので相互接続性もバッチリ?
•   ちなみに … and is sometimes required for
    connectivity with pubic cloud offerings だそう
    です…

Mais conteúdo relacionado

Mais procurados

OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 
OpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれOpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれToru Makabe
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStackAkira Yoshiyama
 
Deep dive in Docker Overlay Networks
Deep dive in Docker Overlay NetworksDeep dive in Docker Overlay Networks
Deep dive in Docker Overlay NetworksLaurent Bernaille
 
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~Juniper Networks (日本)
 
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月VirtualTech Japan Inc.
 
大規模環境のOpenStack アップグレードの考え方と実施のコツ
大規模環境のOpenStackアップグレードの考え方と実施のコツ大規模環境のOpenStackアップグレードの考え方と実施のコツ
大規模環境のOpenStack アップグレードの考え方と実施のコツTomoya Hashimoto
 
Red Hat Certified engineer course
  Red Hat Certified engineer course   Red Hat Certified engineer course
Red Hat Certified engineer course Ali Abdo
 
eBPF - Observability In Deep
eBPF - Observability In DeepeBPF - Observability In Deep
eBPF - Observability In DeepMydbops
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線Motonori Shindo
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたakira6592
 
Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法Takeshi Fukuhara
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)Wataru NOGUCHI
 
Hyper-V ネットワークの基本
Hyper-V ネットワークの基本Hyper-V ネットワークの基本
Hyper-V ネットワークの基本Syuichi Murashima
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwardingMasakazu Asama
 
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてCentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてNobuyuki Sasaki
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門kk_Ataka
 

Mais procurados (20)

Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
 
OpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれOpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれ
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStack
 
Deep dive in Docker Overlay Networks
Deep dive in Docker Overlay NetworksDeep dive in Docker Overlay Networks
Deep dive in Docker Overlay Networks
 
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
 
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
 
大規模環境のOpenStack アップグレードの考え方と実施のコツ
大規模環境のOpenStackアップグレードの考え方と実施のコツ大規模環境のOpenStackアップグレードの考え方と実施のコツ
大規模環境のOpenStack アップグレードの考え方と実施のコツ
 
Red Hat Certified engineer course
  Red Hat Certified engineer course   Red Hat Certified engineer course
Red Hat Certified engineer course
 
eBPF - Observability In Deep
eBPF - Observability In DeepeBPF - Observability In Deep
eBPF - Observability In Deep
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
 
Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
 
Hyper-V ネットワークの基本
Hyper-V ネットワークの基本Hyper-V ネットワークの基本
Hyper-V ネットワークの基本
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwarding
 
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてCentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
 

Destaque

Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いMasakazu Asama
 
AndroidStudioのインストールをゼロからしてみる
AndroidStudioのインストールをゼロからしてみるAndroidStudioのインストールをゼロからしてみる
AndroidStudioのインストールをゼロからしてみるShigeo Ueda
 
VTI presentation
VTI presentationVTI presentation
VTI presentationjleui
 
MRAI, BGP Widthdrawn and Packet Loss
MRAI, BGP Widthdrawn and Packet LossMRAI, BGP Widthdrawn and Packet Loss
MRAI, BGP Widthdrawn and Packet LossShintaro Kojima
 
中高生向けUnity講座
中高生向けUnity講座中高生向けUnity講座
中高生向けUnity講座MakotoItoh
 
Unity恐くないよ!!
Unity恐くないよ!!Unity恐くないよ!!
Unity恐くないよ!!nakamura001
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたSAKURA Internet Inc.
 
Variable Valve Timing
Variable Valve TimingVariable Valve Timing
Variable Valve TimingSourav Bagchi
 
Variable Valve Timing (VVT)
Variable Valve Timing (VVT)Variable Valve Timing (VVT)
Variable Valve Timing (VVT)Kaustubh Gaonkar
 

Destaque (10)

Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
 
AndroidStudioのインストールをゼロからしてみる
AndroidStudioのインストールをゼロからしてみるAndroidStudioのインストールをゼロからしてみる
AndroidStudioのインストールをゼロからしてみる
 
VTI presentation
VTI presentationVTI presentation
VTI presentation
 
MRAI, BGP Widthdrawn and Packet Loss
MRAI, BGP Widthdrawn and Packet LossMRAI, BGP Widthdrawn and Packet Loss
MRAI, BGP Widthdrawn and Packet Loss
 
中高生向けUnity講座
中高生向けUnity講座中高生向けUnity講座
中高生向けUnity講座
 
Unity恐くないよ!!
Unity恐くないよ!!Unity恐くないよ!!
Unity恐くないよ!!
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみた
 
ASAMAP 開発秘話
ASAMAP 開発秘話ASAMAP 開発秘話
ASAMAP 開発秘話
 
Variable Valve Timing
Variable Valve TimingVariable Valve Timing
Variable Valve Timing
 
Variable Valve Timing (VVT)
Variable Valve Timing (VVT)Variable Valve Timing (VVT)
Variable Valve Timing (VVT)
 

Semelhante a VTI の中身

Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep DiveHirofumi Ichihara
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
VPP事始め
VPP事始めVPP事始め
VPP事始めnpsg
 
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Daisuke Nakajima
 
SCUGJ第19回勉強会:RASGWとなにかでつないでみた
SCUGJ第19回勉強会:RASGWとなにかでつないでみたSCUGJ第19回勉強会:RASGWとなにかでつないでみた
SCUGJ第19回勉強会:RASGWとなにかでつないでみたwind06106
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例SAKURA Internet Inc.
 
自宅スケーラブル・ファイルシステムのご紹介
自宅スケーラブル・ファイルシステムのご紹介自宅スケーラブル・ファイルシステムのご紹介
自宅スケーラブル・ファイルシステムのご紹介Kentaro Mitsuyasu
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_netTomoya Hibi
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用Toshiki Tsuboi
 
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)Kazuyuki Sato
 
VYATTA USERS MEETING Autumn 2013_idcf
VYATTA USERS MEETING Autumn 2013_idcfVYATTA USERS MEETING Autumn 2013_idcf
VYATTA USERS MEETING Autumn 2013_idcfIDC Frontier
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
FreeBSDでおうちのルーター
FreeBSDでおうちのルーターFreeBSDでおうちのルーター
FreeBSDでおうちのルーターhoo0005
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介Takashi Sogabe
 
Technical report for IPv6 Routing w/ bgp4+
Technical report for IPv6 Routing w/ bgp4+Technical report for IPv6 Routing w/ bgp4+
Technical report for IPv6 Routing w/ bgp4+Toshiki Tsuboi
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0Kiwamu Okabe
 
ほしいプロトコルはトンネルすればいいじゃない at JAWS DAYS 2014 Tech Deep Dive
ほしいプロトコルはトンネルすればいいじゃない at JAWS DAYS 2014 Tech Deep Diveほしいプロトコルはトンネルすればいいじゃない at JAWS DAYS 2014 Tech Deep Dive
ほしいプロトコルはトンネルすればいいじゃない at JAWS DAYS 2014 Tech Deep DiveYasuhiro Araki, Ph.D
 
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうAndroidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうksk sue
 

Semelhante a VTI の中身 (20)

Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep Dive
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Openvswitch vps 20120429資料
Openvswitch vps 20120429資料
 
SCUGJ第19回勉強会:RASGWとなにかでつないでみた
SCUGJ第19回勉強会:RASGWとなにかでつないでみたSCUGJ第19回勉強会:RASGWとなにかでつないでみた
SCUGJ第19回勉強会:RASGWとなにかでつないでみた
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例
 
自宅スケーラブル・ファイルシステムのご紹介
自宅スケーラブル・ファイルシステムのご紹介自宅スケーラブル・ファイルシステムのご紹介
自宅スケーラブル・ファイルシステムのご紹介
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_net
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
 
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
 
VYATTA USERS MEETING Autumn 2013_idcf
VYATTA USERS MEETING Autumn 2013_idcfVYATTA USERS MEETING Autumn 2013_idcf
VYATTA USERS MEETING Autumn 2013_idcf
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
FreeBSDでおうちのルーター
FreeBSDでおうちのルーターFreeBSDでおうちのルーター
FreeBSDでおうちのルーター
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
 
Technical report for IPv6 Routing w/ bgp4+
Technical report for IPv6 Routing w/ bgp4+Technical report for IPv6 Routing w/ bgp4+
Technical report for IPv6 Routing w/ bgp4+
 
Inside winnyp
Inside winnypInside winnyp
Inside winnyp
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0
 
ほしいプロトコルはトンネルすればいいじゃない at JAWS DAYS 2014 Tech Deep Dive
ほしいプロトコルはトンネルすればいいじゃない at JAWS DAYS 2014 Tech Deep Diveほしいプロトコルはトンネルすればいいじゃない at JAWS DAYS 2014 Tech Deep Dive
ほしいプロトコルはトンネルすればいいじゃない at JAWS DAYS 2014 Tech Deep Dive
 
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうAndroidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
 

VTI の中身

  • 1. VTI の中身 浅間 正和 @ 有限会社 銀座堂
  • 2. VTI とは? • Virtual Tunnel Interface の略で Vyatta ( Network OS | Core ) 6.5R1 から実装された中身が暗号化 される IP-IP tunnel のようなモノ
  • 3. Benefits • They are capable of having traffic routed to them  • They are capable of passing routing protocols over  them  • They do not require local or remote subnets to be  specified  • They operate as if the peer interfaces are directly  connected  (Vyatta VPN Reference Guide 6.5R1 v01 より引用)
  • 4. Vyatta configuration の違い interfaces { vti vti0 { } } vpn { protocols { ipsec { static site-to-site { interface-route 192.168.2.0/24 { peer 172.16.1.2 { next-hop-interface vti0 { default-esp-group ESP-G } ike-group IKE-G } local-address 172.16.1.1 } tunnel 1 { } local { vpn { prefix 192.168.1.0/24 ipsec { } site-to-site { remote { peer 172.16.1.2 { prefix 192.168.2.0/24 ike-group IKE-G } local-address 172.16.1.1 } vti { } bind vti0 } esp-group ESP-G } } } } } } } 従来 VTI
  • 5. /etc/ipsec.conf の違い conn peer-172.16.1.2-tunnel-vti conn peer-172.16.1.2-tunnel-1 left=172.16.1.1 left=172.16.1.1 right=172.16.1.2 right=172.16.1.2 leftsubnet=0.0.0.0/0 leftsubnet=192.168.1.0/24 rightsubnet=0.0.0.0/0 rightsubnet=192.168.2.0/24 ike=aes256-sha1! leftsourceip=192.168.1.1 ikelifetime=28800s ike=aes256-sha1! esp=aes256-sha1! ikelifetime=28800s keylife=3600s esp=aes256-sha1! rekeymargin=540s keylife=3600s type=tunnel rekeymargin=540s pfs=yes type=tunnel compress=no pfs=yes authby=secret compress=no mark=2415919105 authby=secret leftupdown="/usr/lib/ipsec/vti- auto=start up-down.sh vti0" keyingtries=%forever auto=start keyingtries=%forever 従来 VTI
  • 6. ip xfrm policy list 実行結果の違い src 0.0.0.0/0 dst 0.0.0.0/0 dir out priority 2051 src 192.168.1.0/24 dst 192.168.2.0/24 mark -1879048191/0xffffffff dir out priority 1859 tmpl src 172.16.1.1 dst 172.16.1.2 tmpl src 172.16.1.1 dst 172.16.1.2 proto esp reqid 16384 mode tunnel proto esp reqid 16384 mode tunnel src 0.0.0.0/0 dst 0.0.0.0/0 src 192.168.2.0/24 dst 192.168.1.0/24 dir fwd priority 2051 dir fwd priority 1859 mark -1879048191/0xffffffff tmpl src 172.16.1.2 dst 172.16.1.1 tmpl src 172.16.1.2 dst 172.16.1.1 proto esp reqid 16384 mode tunnel proto esp reqid 16384 mode tunnel src 192.168.2.0/24 dst 192.168.1.0/24 src 0.0.0.0/0 dst 0.0.0.0/0 dir in priority 1859 dir in priority 2051 tmpl src 172.16.1.2 dst 172.16.1.1 mark -1879048191/0xffffffff proto esp reqid 16384 mode tunnel tmpl src 172.16.1.2 dst 172.16.1.1 proto esp reqid 16384 mode tunnel 従来 VTI
  • 7. 設定時の流れ • /opt/vyatta/sbin/vpn-config.pl が実行される • /etc/ipsec.conf の生成と ipsec start の実行 • /opt/vyatta/sbin/vyatta-vti-config.pl が実行される • sudo /opt/vyatta/sbin/cfgvti add name $tunName   key $mark remote $remote local $local の実行 • sudo iptables -t mangle -D PREROUTING -s   $remote -d $local ( -p esp | -p udp --dport 4500 )  -j MARK --set-mark $mark の実行
  • 8. /opt/vyatta/sbin/cfgvti • git repo の build-iso/pkgs/vyatta-cfg-vpn/src/cfgvti.c  • … C で書かれたプログラム…なぜ…? • なななんと実は VTI は net/ipv4/ipip.ko ではなく net/ipv4/ip_vti.ko だった…。 commit 1181412c1a671ed4e8fb1736f17e6ec617c68059 Author: Saurabh <saurabh.mohan@vyatta.com> Date: Tue Jul 17 09:44:54 2012 +0000 net/ipv4: VTI support new module for ip_vti. New VTI tunnel kernel module, Kconfig and Makefile changes. Signed-off-by: Saurabh Mohan <saurabh.mohan@vyatta.com> Reviewed-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
  • 9. net/ipv4/ip_vti.ko • Linux kernel の main line には v3.6 から merge • (Vyatta 6.5R1 は v3.3 なので backport?) • net/ipv4/ipip.ko を元にしているが xfrm の esp が処理してくれる encap/decap は省かれている • 一番重要な違いは xmit 時に mark を付けるこ とで xfrm policy に引っ掛けるようにしている こと
  • 10. 送受信時の流れ • 送信時の流れ • net/ipv4/ip_vti.ko の vti_tunnel_xmit が呼ば れる • VTI を一意に表す mark を付け xfrm に流す • xfrm が encap し暗号化 • 受信時の流れ • Netfilter が mask を付ける • mark から xfrm policy が判明し復号化と decap 処理
  • 11. まとめ • Dynamic routing や QoS と組み合わせて使え るのはかなり便利? • もとは Cisco さんが最初にやった方式? Vyatta VPN Reference にも compatible with 3rd party VTI/route-based VPN connections と書か れているので相互接続性もバッチリ? • ちなみに … and is sometimes required for connectivity with pubic cloud offerings だそう です…