SlideShare une entreprise Scribd logo
Vyatt
                  a Co
                      re 6.4
                               対応

Vyatta 改造入門
浅間 正和 @ 有限会社 銀座堂
もくじ

•   Vyatta 改造の流れ

•   詳解 CLI 定義ファイル

•   実例: MAP 機能の追加
Vyatta 改造の流れ
                           Vyatta のソースコードを管理しているサーバ




 ② ソースコードの入手               ③ ビルド環境の構築
                           ④ パッケージの準備
                           ⑤ CLI 定義ファイルの準備
                           ⑥ ISO イメージの作成

                                出来た ISO イメージで
① ビルド環境の準備
                                    インストール


  ビルド環境: Debian GNU/Linux 6(Squeeze)/i386    インストールターゲット
ソースコードの入手
       •   ソースコードは Git で管理されている
       •   build-iso というリポジトリがメイン
       •   build-iso の pkgs 内にその他のパッケージの
           ソースコードが用意される
#   apt-get update
#   apt-get install git-core
$   git clone http://git.vyatta.com/build-iso.git
$   cd build-iso
$   git checkout --track -b oxnard origin/oxnard
$   less README
                       ※ oxnard は Vyatta のコードネームで 6.4 を表します。
                       ※ コードネームは Vyatta のロードマップで確認できます。
                         - http://www.vyatta.org/documentation/product-roadmap
ソースコードの入手
                        ※ vyatta-cfg-* は設定モードに関するパッケージです。
$ git submodule init    ※ vyatta-op-* は一般モードに関するパッケージです。
$ ls pkgs/
barnyard2              ppp                   vyatta-ipv6-rtradv
conntrack-tools        squashfs              vyatta-keepalived
daq                    squidguard            vyatta-lldp
...
linux-firmware         vyatta-cfg-system     vyatta-snort
linux-image            vyatta-cfg-vpn        vyatta-strongswan
live-initramfs         vyatta-cluster        vyatta-util
...

          ※ iptables や linux-image(kernel) のように Debian のものをそのまま使わず
            Vyatta で独自に手を入れたものもここに含まれます。

$ git submodule update pkgs/linux-image
$ cd pkgs/linux-image
$ git checkout --track -b oxnard origin/oxnard
ビルド環境の構築
•   最新情報は build-iso/README に書かれている
    ので必ず読む
•   基本的には Debian のパッケージで構築するが
    一部(squashfs-tools 等)は Vyatta 独自パッケージ
    を用いる
•   Vyatta のパッケージをインストールした際
    Debian のものに置き換わらないよう /etc/pat/
    preferences.d 内に Pin を打つ必要がある
パッケージの準備
     •   既存の Vyatta パッケージを改造したい:
         ☞   build-iso/pkgs 内のソースコードを改造後以下の
             コマンドを実行(linux-image の例)
                           ※ make (パッケージ名) で build-iso/pkgs ディレクトリ
$ make clean-linux-image   内に “パッケージ名_バージョン.deb” というファイル
$ make linux-image
                           が生成されます。

     •   新しくパッケージを組み込みたい:
         ☞   build-iso/pkgs ディレクトリに .deb パッケージ
             を置き build-iso/livecd/config.vyatta/chroot_local-
             packageslists/hoge.list に列挙する
CLI 定義ファイルの準備


 核心なので後ほど詳しく説明します!
ISO イメージの作成
     •   あとは簡単♪
$ export PATH=/sbin:/usr/sbin:$PATH
$ autoreconf -i
$ ./configure
$ sudo make iso
$ ls livecd/
auto            cache                           mk.livecd
binary          chroot                          mk.livecd.conf
binary.iso      config                          mk.livecd.conf.in
binary.list     config.vyatta                   mk.livecd.functions
binary.packages livecd-1209171135-25e07fb.iso   templates

      ※ 上記の例で livecd-1209171135-25e07fb.iso が生成された ISO イメージです。
      ※ sudo 経由でコマンドを実行する場合実行ユーザが sudo グループに属して
        いる必要があります。
ちなみに...
     •   configure 実行時に以下のオプションをつける
         と仮想化環境用の ISO イメージが作られます

$ ./configure --with-kernel-flavor=586-vyatta-virt


     •   通常の ISO イメージと仮想化環境用の ISO イ
         メージでは以下の違いがあります
vyatta:
-linux-image-3.0.32-1-586-vyatta
vyatta-virt:
+linux-image-3.0.32-1-586-vyatta-virt
+open-vm-modules-3.0.32-1-586-vyatta-virt
+open-vm-tools
詳解 CLI 定義ファイル
# set interfaces ethernet eth0 address 192.168.1.1/24




       /opt/vyatta/share/vyatta-cfg/templates/
           interfaces/
               ethernet/
                    node.def
                    node.tag/
                         address/
                             node.def
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.tag/address/node.def:

multi:
type: txt
help: IP address

syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"

commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl
                          --valid-addr-commit $VAR(@@) --dev $VAR(../@)"

create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@)

delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@)

allowed: echo "dhcp dhcpv6 <>"

val_help:   ipv4net; IP address and prefix length
val_help:   ipv6net; IPv6 address and prefix length
val_help:   dhcp; Dynamic Host Configuration Protocol
val_help:   dhcpv6; Dynamic Host Configuration Protocol for IPv6
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.tag/address/node.def:

multi:
type: txt
help: IP address

syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"

commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl
                          --valid-addr-commit $VAR(@@) --dev $VAR(../@)"

create: sudo
                       このノードの値の型を書く
               /opt/vyatta/sbin/vyatta-address add $VAR(../@)   $VAR(@)
         text	

 	

     : 文字列	

      	

 	

 bool	

 	

 : 論理値
delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@)
         u32	

 	

      : 32bit 整数	

 	

 	

 macaddr	

 : MAC アドレス
allowed: ipv4	

 	

 "dhcp IPv4 アドレス	

 	

          echo           : dhcpv6 <>"          ipv6	

 	

 : IPv6 アドレス
         ipv4net	

      : IPv4 ネットワーク	

      ipv6net	

  : IPv6 ネットワーク
val_help:   ipv4net; IP address and prefix length
val_help:   ipv6net; IPv6 address and prefix length
val_help:   dhcp; Dynamic Host Configuration Protocol
val_help:   dhcpv6; Dynamic Host Configuration Protocol for IPv6
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.tag/address/node.def:

multi:
type: txt
help: IP address

syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"

commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl
                          --valid-addr-commit $VAR(@@) --dev $VAR(../@)"

                 タブ補完で表示されるヘルプを書く
create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@)

delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@)

allowed: echo "dhcp dhcpv6 <>"

val_help:   ipv4net; IP address and prefix length
val_help:   ipv6net; IPv6 address and prefix length
val_help:   dhcp; Dynamic Host Configuration Protocol
val_help:   dhcpv6; Dynamic Host Configuration Protocol for IPv6
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.tag/address/node.def:

multi:
type: txt
help: IP address

syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"

commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl
                          --valid-addr-commit $VAR(@@) --dev $VAR(../@)"

create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@)

delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@)

allowed: echo "dhcp dhcpv6 <>"
                         値の制約条件を書く
val_help: ipv4net; IP address and prefix length
val_help: ipv6net; : IPv6 address and prefixbrN(N は整数))
        syntax	

              	

    主に値のフォーマット (Ex: length
val_help: dhcp; Dynamic Host Configuration Protocol
        commit	

  : 主に値の整合性チェック (Ex: 他の必須項目有無)
val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.tag/address/node.def:

multi:
type: txt
help: IP address

syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"

commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl
                          --valid-addr-commit $VAR(@@) --dev $VAR(../@)"

create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@)

delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@)

           $VAR(...) は対応する引数に置き換えられる
allowed: echo "dhcp dhcpv6 <>"
        $VAR(@)	

 : この node.def に対応する値 (Ex: 192.168.1.1/24)
val_help: ipv4net; IP address and prefix length
val_help: ipv6net; : IPv6 address and prefix length
        $VAR(../@)	

 ひとつ前の node.tag の値 (Ex: eth0)
val_help: dhcp; Dynamic Host Configuration 時も値を参照可能
        $VAR(@@)	

: $VAR(@) と同じだが delete Protocol
val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.tag/address/node.def:

multi:
type: txt
help: IP address     commit 時のアクションを定義
syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"

commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl
                          --valid-addr-commit $VAR(@@) --dev $VAR(../@)"

create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@)

delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@)

allowed: echo "dhcp dhcpv6 <>"

val_help:   ipv4net; IP address and prefix length
val_help:   ipv6net; IPv6 address and prefix length
val_help:   dhcp; Dynamic Host Configuration Protocol
val_help:   dhcpv6; Dynamic Host Configuration Protocol for IPv6
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.tag/address/node.def:

multi:
type: txt
help: IP address

syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"

                           許容される値の一覧
commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl
                          --valid-addr-commit $VAR(@@) --dev $VAR(../@)"

create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@)

delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@)

allowed: echo "dhcp dhcpv6 <>"

val_help:   ipv4net; IP address and prefix length
val_help:   ipv6net; IPv6 address and prefix length
val_help:   dhcp; Dynamic Host Configuration Protocol
val_help:   dhcpv6; Dynamic Host Configuration Protocol for IPv6
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.tag/address/node.def:

multi:
type: txt
help: IP address

syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"

commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl
                          --valid-addr-commit $VAR(@@) --dev $VAR(../@)"

create: sudo
                      値の型に応じた詳細なヘルプ
               /opt/vyatta/sbin/vyatta-address add $VAR(../@)   $VAR(@)

delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@)

allowed: echo "dhcp dhcpv6 <>"

val_help:   ipv4net; IP address and prefix length
val_help:   ipv6net; IPv6 address and prefix length
val_help:   dhcp; Dynamic Host Configuration Protocol
val_help:   dhcpv6; Dynamic Host Configuration Protocol for IPv6
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.tag/address/node.def:

multi:
type: txt
help: IP address

syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"

commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl
             複数の値を設定できる場合は multi: と書く
                          --valid-addr-commit $VAR(@@) --dev $VAR(../@)"

create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@)

delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@)

allowed: echo "dhcp dhcpv6 <>"

val_help:   ipv4net; IP address and prefix length
val_help:   ipv6net; IPv6 address and prefix length
val_help:   dhcp; Dynamic Host Configuration Protocol
val_help:   dhcpv6; Dynamic Host Configuration Protocol for IPv6
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.def:

tag:
priority: 318
type: txt
help: Ethernet interface name
allowed: /opt/vyatta/sbin/vyatta-interfaces.pl --show=ethernet
val_help: <ethN>; Ethernet interface name
syntax:expression: pattern $VAR(@) "^eth[0-9]+$" 
        node.tag と同じディレクトリ階層には tag: と書く
                   ; "interface ethernet $VAR(@): not a valid name"

syntax:expression: exec 
    "if [ ! -d /sys/class/net/$VAR(@) ]; then 
        echo "interface ethernet $VAR(@): does not exist";
        exit 1; 
    fi"

begin: rm -f /tmp/speed-duplex.$VAR(@)
        if [ -d "/sys/class/net/$VAR(@)" ]; then
           if [ -n "$VAR(mac/@)" ]; then
... (省略) ...
詳解 CLI 定義ファイル
templates/interfaces/ethernet/node.def:

tag:
priority: 318
type: txt
help: Ethernet interface name
allowed: /opt/vyatta/sbin/vyatta-interfaces.pl --show=ethernet
val_help: <ethN>; Ethernet interface name
syntax:expression: pattern $VAR(@) "^eth[0-9]+$" 
                   ; "interface ethernet $VAR(@): not a valid name"
             commit 時の処理実行の優先度を指定する
syntax:expression: exec 
    "if [ ! -d /sys/class/net/$VAR(@) ]; then 
        echo "interface ethernet $VAR(@): does not exist";
        exit 1; 
    fi"

begin: rm -f /tmp/speed-duplex.$VAR(@)
        if [ -d "/sys/class/net/$VAR(@)" ]; then
           if [ -n "$VAR(mac/@)" ]; then
... (省略) ...
詳解 CLI 定義ファイル
          アクション一覧

 begin      commit 開始時

 create     新規に設定する時

 update   既存の設定値を変更する時

 delete     設定を削除する時

  end       commit 終了時
詳解 CLI 定義ファイル
           expression: 書式一覧

 pattern    pattern $VAR(@) “^br[0-9]+$”

  exec     exec “.../valid_address $VAR(@)”

  cond      $VAR(@) in “enable”, “disable”

  and      $VAR(@) >= 0 && $VAR(@) < 64

   or      $VAR(@) == “auto” || pattern ...
詳解 CLI 定義ファイル
# set interfaces ethernet eth0 address 192.168.1.1/24

/opt/vyatta/config/からの相対          すでにアドレスが設定されている場合は
active/interfaces                     その値がかかれている
active/interfaces/ethernet        まだ設定されていない場合は存在しない
active/interfaces/ethernet/eth0
active/interfaces/ethernet/eth0/address
active/interfaces/ethernet/eth0/address/node.val 
tmp/new_config_25193/interfaces
tmp/new_config_25193/interfaces/.modified
                                              新しい値が書かれている
tmp/new_config_25193/interfaces/ethernet
tmp/new_config_25193/interfaces/ethernet/.modified
tmp/new_config_25193/interfaces/ethernet/eth0
tmp/new_config_25193/interfaces/ethernet/eth0/.modified
tmp/new_config_25193/interfaces/ethernet/eth0/address
tmp/new_config_25193/interfaces/ethernet/eth0/address/.modified
tmp/new_config_25193/interfaces/ethernet/eth0/address/node.val
詳解 CLI 定義ファイル
#!/usr/bin/perl

use lib "/opt/vyatta/share/perl5";
use Vyatta::Config;

my $config = new Vyatta::Config;

@curr = $config->returnValues('interfaces ethernet');
@orig = $config->returnOrigValues('interfaces ethernet');

print "curr:n";
foreach my $v (@curr) { print "t[$v]n";}

print "orig:n";
foreach my $v (@orig) { print "t[$v]n";}


                     詳しくは /opt/vyatta/share/perl5/Vyatta/Config.pm を参照…
実例: MAP 機能の追加
• MAP とは?
☞ 現在 IETF で標準化が進められている IPv4
    サービスを IPv6 インフラの上で提供する為
    のプロトコル
☞   IPv6 アドレスと Mapping Rule から機械的に
    IPv4 アドレスを計算する
☞   プロバイダ側に NAPT 機能を必要としない
☞   http://enog.jp/~masakazu/vyatta/map/  
実例: MAP 機能の追加
• どうやって追加するの?
☞ Linux Kernel に手を入れる必要があるので
    linux-image とネットワーク関連の設定コマ
    ンドである iproute2 を改造する
☞   改造した iproute2 を実行する為の CLI 定義
    ファイルを用意しそれを vyatta-cfg-system に
    組み込む
☞   ISO イメージを作成しインストールする
実例: MAP 機能の追加
templates/interfaces/map/node.def:


tag:
priority: 380
type: txt
help: MAP interface
val_help: <mapN>; MAP interface name
syntax:expression: pattern $VAR(@) "^map[0-9]+$" 
                    ; "MAP interface must be (map0-map999)"

commit:expression: $VAR(./role/) != "" ; 
                   "Must configure the tunnel role for $VAR(@)"
commit:expression: $VAR(./tunnel-source/) != "" || $VAR(./role/@) == "br"; 
                   "Must configure the tunnel tunnel-source for $VAR(@)"
commit:expression: $VAR(./br-address/) != "" ; 
                   "Must configure the tunnel br-address for $VAR(@)"
commit:expression: $VAR(./default-forwarding-mode/) != "" ; 
                   "Must configure the tunnel default-forwar... for $VAR(@)"
... (続く) ...
実例: MAP 機能の追加
templates/interfaces/map/node.def:

... (続き) ...
create:
  if [ -n "$VAR(./tunnel-source/@)" ] ; then
     TS="tunnel-source $VAR(./tunnel-source/@)"
  fi
  if [ -n "$VAR(./default-forwarding-rule/@)" ] ; then
     DFR="default-forwarding-rule $VAR(./default-forwarding-rule/@)"
  fi
  if [ -n "$VAR(./always-napt/@)" ] ; then
     AN="always-napt $VAR(./always-napt/@)"
  fi
  ip map add $VAR(@) role $VAR(./role/@) $TS br-address $VAR(./br-address/@)
default-forwarding-mode $VAR(./default-forwarding-mode/@) $DFR $AN
  ip link set $VAR(@) up ||
     echo "interfaces MAP $VAR(@): error setting MAP interface active"

delete:
  ip link set $VAR(@) down
  ip map del $VAR(@)
実例: MAP 機能の追加
templates/interfaces/map/node.tag/role/node.def:
type: txt
help: Role of this MAP interface [REQUIRED]
syntax:expression: $VAR(@) in "br", "ce"; "Must be (br, ce)"
allowed: echo br ce
create:expression: "true"
update:expression: "false" ; "Role can only be set at MAP creation for
$VAR(../@)"
val_help: br; Role as BR
val_help: ce; Role as CE

templates/interfaces/map/node.tag/br-address/node.def:
type: ipv6net
val_help: ipv6net; IPv6 address and prefix length
help: BR IP address/prefix [REQUIRED]
syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)"
create:expression: "true"
update:expression: "false" ; "BR IP address/prefix can only be set at MAP
creation for $VAR(../@)"
まとめ

•   Vyatta なら簡単にルータを改造できます
•   CLI 定義ファイルはそんなに難しくありません
•   すでに書かれた膨大な数の CLI 定義ファイル
    があるので参考にしましょう
•   おもしろい改造をしたら是非
    vyatta-users@vyatta-users.jp に教えてください

Contenu connexe

Tendances

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
Hirotaka Sato
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
akira6592
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
Shuntaro Saiba
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向
Yuya Rin
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
akira6592
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
一路 川染
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
7shi
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
pospome
 

Tendances (20)

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 

En vedette

Unbreakable VPN using Vyatta/VyOS - HOW TO -
Unbreakable VPN using Vyatta/VyOS - HOW TO -Unbreakable VPN using Vyatta/VyOS - HOW TO -
Unbreakable VPN using Vyatta/VyOS - HOW TO -
Naoto MATSUMOTO
 
Japan Vyatta Users Group Introduction
Japan Vyatta Users Group IntroductionJapan Vyatta Users Group Introduction
Japan Vyatta Users Group Introduction
Naoto MATSUMOTO
 
Software-Based Networking & Security for the Cloud
Software-Based Networking & Security for the CloudSoftware-Based Networking & Security for the Cloud
Software-Based Networking & Security for the Cloud
Matt Wolpin
 
VyattaCore TIPS2013
VyattaCore TIPS2013VyattaCore TIPS2013
VyattaCore TIPS2013
Naoto MATSUMOTO
 
Unite! VYATTA APAC
Unite! VYATTA APACUnite! VYATTA APAC
Unite! VYATTA APAC
Naoto MATSUMOTO
 
Vyatta open cloudcampus 2011/08/02
Vyatta open cloudcampus 2011/08/02Vyatta open cloudcampus 2011/08/02
Vyatta open cloudcampus 2011/08/02
Kentaro Ebisawa
 
Zimbra Collaboration Suite And Google Apps
Zimbra Collaboration Suite And Google AppsZimbra Collaboration Suite And Google Apps
Zimbra Collaboration Suite And Google Apps
agileware
 
Vyatta lan interfaces-6.5_r1_v01
Vyatta lan interfaces-6.5_r1_v01Vyatta lan interfaces-6.5_r1_v01
Vyatta lan interfaces-6.5_r1_v01
Nguyen Van Duy
 
Vyatta Ip Services Ref Vc5 V03
Vyatta Ip Services Ref Vc5 V03Vyatta Ip Services Ref Vc5 V03
Vyatta Ip Services Ref Vc5 V03
Kittanun Nuaon
 
IBM Cognos 10 Under the Hood
IBM Cognos 10 Under the HoodIBM Cognos 10 Under the Hood
IBM Cognos 10 Under the Hood
Senturus
 
ASAMAP 開発秘話
ASAMAP 開発秘話ASAMAP 開発秘話
ASAMAP 開発秘話
Masakazu Asama
 
Tiny Server Clustering using Vyatta/VyOS (MEMO)
Tiny Server Clustering using Vyatta/VyOS (MEMO)Tiny Server Clustering using Vyatta/VyOS (MEMO)
Tiny Server Clustering using Vyatta/VyOS (MEMO)
Naoto MATSUMOTO
 
OpenStack Neutron Tutorial
OpenStack Neutron TutorialOpenStack Neutron Tutorial
OpenStack Neutron Tutorial
mestery
 
Fortigate Training
Fortigate TrainingFortigate Training
Fortigate Training
NCS Computech Ltd.
 
IBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use CasesIBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway
 

En vedette (15)

Unbreakable VPN using Vyatta/VyOS - HOW TO -
Unbreakable VPN using Vyatta/VyOS - HOW TO -Unbreakable VPN using Vyatta/VyOS - HOW TO -
Unbreakable VPN using Vyatta/VyOS - HOW TO -
 
Japan Vyatta Users Group Introduction
Japan Vyatta Users Group IntroductionJapan Vyatta Users Group Introduction
Japan Vyatta Users Group Introduction
 
Software-Based Networking & Security for the Cloud
Software-Based Networking & Security for the CloudSoftware-Based Networking & Security for the Cloud
Software-Based Networking & Security for the Cloud
 
VyattaCore TIPS2013
VyattaCore TIPS2013VyattaCore TIPS2013
VyattaCore TIPS2013
 
Unite! VYATTA APAC
Unite! VYATTA APACUnite! VYATTA APAC
Unite! VYATTA APAC
 
Vyatta open cloudcampus 2011/08/02
Vyatta open cloudcampus 2011/08/02Vyatta open cloudcampus 2011/08/02
Vyatta open cloudcampus 2011/08/02
 
Zimbra Collaboration Suite And Google Apps
Zimbra Collaboration Suite And Google AppsZimbra Collaboration Suite And Google Apps
Zimbra Collaboration Suite And Google Apps
 
Vyatta lan interfaces-6.5_r1_v01
Vyatta lan interfaces-6.5_r1_v01Vyatta lan interfaces-6.5_r1_v01
Vyatta lan interfaces-6.5_r1_v01
 
Vyatta Ip Services Ref Vc5 V03
Vyatta Ip Services Ref Vc5 V03Vyatta Ip Services Ref Vc5 V03
Vyatta Ip Services Ref Vc5 V03
 
IBM Cognos 10 Under the Hood
IBM Cognos 10 Under the HoodIBM Cognos 10 Under the Hood
IBM Cognos 10 Under the Hood
 
ASAMAP 開発秘話
ASAMAP 開発秘話ASAMAP 開発秘話
ASAMAP 開発秘話
 
Tiny Server Clustering using Vyatta/VyOS (MEMO)
Tiny Server Clustering using Vyatta/VyOS (MEMO)Tiny Server Clustering using Vyatta/VyOS (MEMO)
Tiny Server Clustering using Vyatta/VyOS (MEMO)
 
OpenStack Neutron Tutorial
OpenStack Neutron TutorialOpenStack Neutron Tutorial
OpenStack Neutron Tutorial
 
Fortigate Training
Fortigate TrainingFortigate Training
Fortigate Training
 
IBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use CasesIBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use Cases
 

Similaire à Vyatta 改造入門

Capistrano
CapistranoCapistrano
Capistrano
Yasuharu Fukuda
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
npsg
 
WDD2012_SC-004
WDD2012_SC-004WDD2012_SC-004
WDD2012_SC-004
Kuninobu SaSaki
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
mganeko
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
Takahiro Himura
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
Satoshi Shimazaki
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
Emma Haruka Iwao
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用Toshiki Tsuboi
 
Google container builderと友だちになるまで
Google container builderと友だちになるまでGoogle container builderと友だちになるまで
Google container builderと友だちになるまで
lestrrat
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
 
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
Fujishiro Takuya
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
OSSラボ株式会社
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
totty jp
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
Takao Tetsuro
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
Tomohiro Ichimura
 
コマンドラインツールとしてのDocker
コマンドラインツールとしてのDockerコマンドラインツールとしてのDocker
コマンドラインツールとしてのDocker
74th
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 
Samba4でADしよう!
Samba4でADしよう!Samba4でADしよう!
Samba4でADしよう!Yutaka Tsumori
 

Similaire à Vyatta 改造入門 (20)

Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
Capistrano
CapistranoCapistrano
Capistrano
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
WDD2012_SC-004
WDD2012_SC-004WDD2012_SC-004
WDD2012_SC-004
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用SDN Lab環境でのRobotFramework実践活用
SDN Lab環境でのRobotFramework実践活用
 
Google container builderと友だちになるまで
Google container builderと友だちになるまでGoogle container builderと友だちになるまで
Google container builderと友だちになるまで
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
 
コマンドラインツールとしてのDocker
コマンドラインツールとしてのDockerコマンドラインツールとしてのDocker
コマンドラインツールとしてのDocker
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
Samba4でADしよう!
Samba4でADしよう!Samba4でADしよう!
Samba4でADしよう!
 

Plus de Masakazu Asama

openconfigd
openconfigdopenconfigd
openconfigd
Masakazu Asama
 
NETCONFとYANGの話
NETCONFとYANGの話NETCONFとYANGの話
NETCONFとYANGの話
Masakazu Asama
 
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
Masakazu Asama
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwardingMasakazu Asama
 
VTI の中身
VTI の中身VTI の中身
VTI の中身
Masakazu Asama
 
ASAMAP Update
ASAMAP UpdateASAMAP Update
ASAMAP Update
Masakazu Asama
 
MAP 実装してみた
MAP 実装してみたMAP 実装してみた
MAP 実装してみた
Masakazu Asama
 

Plus de Masakazu Asama (7)

openconfigd
openconfigdopenconfigd
openconfigd
 
NETCONFとYANGの話
NETCONFとYANGの話NETCONFとYANGの話
NETCONFとYANGの話
 
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwarding
 
VTI の中身
VTI の中身VTI の中身
VTI の中身
 
ASAMAP Update
ASAMAP UpdateASAMAP Update
ASAMAP Update
 
MAP 実装してみた
MAP 実装してみたMAP 実装してみた
MAP 実装してみた
 

Dernier

【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
ssuserfcafd1
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
Shinichi Hirauchi
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
Osaka University
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
iPride Co., Ltd.
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
Takuya Minagawa
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
Seiya Shimabukuro
 

Dernier (14)

【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
 

Vyatta 改造入門

  • 1. Vyatt a Co re 6.4 対応 Vyatta 改造入門 浅間 正和 @ 有限会社 銀座堂
  • 2. もくじ • Vyatta 改造の流れ • 詳解 CLI 定義ファイル • 実例: MAP 機能の追加
  • 3. Vyatta 改造の流れ Vyatta のソースコードを管理しているサーバ ② ソースコードの入手 ③ ビルド環境の構築 ④ パッケージの準備 ⑤ CLI 定義ファイルの準備 ⑥ ISO イメージの作成 出来た ISO イメージで ① ビルド環境の準備 インストール ビルド環境: Debian GNU/Linux 6(Squeeze)/i386 インストールターゲット
  • 4. ソースコードの入手 • ソースコードは Git で管理されている • build-iso というリポジトリがメイン • build-iso の pkgs 内にその他のパッケージの ソースコードが用意される # apt-get update # apt-get install git-core $ git clone http://git.vyatta.com/build-iso.git $ cd build-iso $ git checkout --track -b oxnard origin/oxnard $ less README ※ oxnard は Vyatta のコードネームで 6.4 を表します。 ※ コードネームは Vyatta のロードマップで確認できます。 - http://www.vyatta.org/documentation/product-roadmap
  • 5. ソースコードの入手 ※ vyatta-cfg-* は設定モードに関するパッケージです。 $ git submodule init ※ vyatta-op-* は一般モードに関するパッケージです。 $ ls pkgs/ barnyard2 ppp vyatta-ipv6-rtradv conntrack-tools squashfs vyatta-keepalived daq squidguard vyatta-lldp ... linux-firmware vyatta-cfg-system vyatta-snort linux-image vyatta-cfg-vpn vyatta-strongswan live-initramfs vyatta-cluster vyatta-util ... ※ iptables や linux-image(kernel) のように Debian のものをそのまま使わず Vyatta で独自に手を入れたものもここに含まれます。 $ git submodule update pkgs/linux-image $ cd pkgs/linux-image $ git checkout --track -b oxnard origin/oxnard
  • 6. ビルド環境の構築 • 最新情報は build-iso/README に書かれている ので必ず読む • 基本的には Debian のパッケージで構築するが 一部(squashfs-tools 等)は Vyatta 独自パッケージ を用いる • Vyatta のパッケージをインストールした際 Debian のものに置き換わらないよう /etc/pat/ preferences.d 内に Pin を打つ必要がある
  • 7. パッケージの準備 • 既存の Vyatta パッケージを改造したい: ☞ build-iso/pkgs 内のソースコードを改造後以下の コマンドを実行(linux-image の例) ※ make (パッケージ名) で build-iso/pkgs ディレクトリ $ make clean-linux-image 内に “パッケージ名_バージョン.deb” というファイル $ make linux-image が生成されます。 • 新しくパッケージを組み込みたい: ☞ build-iso/pkgs ディレクトリに .deb パッケージ を置き build-iso/livecd/config.vyatta/chroot_local- packageslists/hoge.list に列挙する
  • 9. ISO イメージの作成 • あとは簡単♪ $ export PATH=/sbin:/usr/sbin:$PATH $ autoreconf -i $ ./configure $ sudo make iso $ ls livecd/ auto cache mk.livecd binary chroot mk.livecd.conf binary.iso config mk.livecd.conf.in binary.list config.vyatta mk.livecd.functions binary.packages livecd-1209171135-25e07fb.iso templates ※ 上記の例で livecd-1209171135-25e07fb.iso が生成された ISO イメージです。 ※ sudo 経由でコマンドを実行する場合実行ユーザが sudo グループに属して いる必要があります。
  • 10. ちなみに... • configure 実行時に以下のオプションをつける と仮想化環境用の ISO イメージが作られます $ ./configure --with-kernel-flavor=586-vyatta-virt • 通常の ISO イメージと仮想化環境用の ISO イ メージでは以下の違いがあります vyatta: -linux-image-3.0.32-1-586-vyatta vyatta-virt: +linux-image-3.0.32-1-586-vyatta-virt +open-vm-modules-3.0.32-1-586-vyatta-virt +open-vm-tools
  • 11. 詳解 CLI 定義ファイル # set interfaces ethernet eth0 address 192.168.1.1/24 /opt/vyatta/share/vyatta-cfg/templates/ interfaces/ ethernet/ node.def node.tag/ address/ node.def
  • 12. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.tag/address/node.def: multi: type: txt help: IP address syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr-commit $VAR(@@) --dev $VAR(../@)" create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@) delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@) allowed: echo "dhcp dhcpv6 <>" val_help: ipv4net; IP address and prefix length val_help: ipv6net; IPv6 address and prefix length val_help: dhcp; Dynamic Host Configuration Protocol val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
  • 13. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.tag/address/node.def: multi: type: txt help: IP address syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr-commit $VAR(@@) --dev $VAR(../@)" create: sudo このノードの値の型を書く /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@) text : 文字列 bool : 論理値 delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@) u32 : 32bit 整数 macaddr : MAC アドレス allowed: ipv4 "dhcp IPv4 アドレス echo : dhcpv6 <>" ipv6 : IPv6 アドレス ipv4net : IPv4 ネットワーク ipv6net : IPv6 ネットワーク val_help: ipv4net; IP address and prefix length val_help: ipv6net; IPv6 address and prefix length val_help: dhcp; Dynamic Host Configuration Protocol val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
  • 14. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.tag/address/node.def: multi: type: txt help: IP address syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr-commit $VAR(@@) --dev $VAR(../@)" タブ補完で表示されるヘルプを書く create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@) delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@) allowed: echo "dhcp dhcpv6 <>" val_help: ipv4net; IP address and prefix length val_help: ipv6net; IPv6 address and prefix length val_help: dhcp; Dynamic Host Configuration Protocol val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
  • 15. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.tag/address/node.def: multi: type: txt help: IP address syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr-commit $VAR(@@) --dev $VAR(../@)" create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@) delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@) allowed: echo "dhcp dhcpv6 <>" 値の制約条件を書く val_help: ipv4net; IP address and prefix length val_help: ipv6net; : IPv6 address and prefixbrN(N は整数)) syntax 主に値のフォーマット (Ex: length val_help: dhcp; Dynamic Host Configuration Protocol commit : 主に値の整合性チェック (Ex: 他の必須項目有無) val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
  • 16. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.tag/address/node.def: multi: type: txt help: IP address syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr-commit $VAR(@@) --dev $VAR(../@)" create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@) delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@) $VAR(...) は対応する引数に置き換えられる allowed: echo "dhcp dhcpv6 <>" $VAR(@) : この node.def に対応する値 (Ex: 192.168.1.1/24) val_help: ipv4net; IP address and prefix length val_help: ipv6net; : IPv6 address and prefix length $VAR(../@) ひとつ前の node.tag の値 (Ex: eth0) val_help: dhcp; Dynamic Host Configuration 時も値を参照可能 $VAR(@@) : $VAR(@) と同じだが delete Protocol val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
  • 17. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.tag/address/node.def: multi: type: txt help: IP address commit 時のアクションを定義 syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr-commit $VAR(@@) --dev $VAR(../@)" create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@) delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@) allowed: echo "dhcp dhcpv6 <>" val_help: ipv4net; IP address and prefix length val_help: ipv6net; IPv6 address and prefix length val_help: dhcp; Dynamic Host Configuration Protocol val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
  • 18. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.tag/address/node.def: multi: type: txt help: IP address syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" 許容される値の一覧 commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr-commit $VAR(@@) --dev $VAR(../@)" create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@) delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@) allowed: echo "dhcp dhcpv6 <>" val_help: ipv4net; IP address and prefix length val_help: ipv6net; IPv6 address and prefix length val_help: dhcp; Dynamic Host Configuration Protocol val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
  • 19. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.tag/address/node.def: multi: type: txt help: IP address syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr-commit $VAR(@@) --dev $VAR(../@)" create: sudo 値の型に応じた詳細なヘルプ /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@) delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@) allowed: echo "dhcp dhcpv6 <>" val_help: ipv4net; IP address and prefix length val_help: ipv6net; IPv6 address and prefix length val_help: dhcp; Dynamic Host Configuration Protocol val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
  • 20. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.tag/address/node.def: multi: type: txt help: IP address syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" commit:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl 複数の値を設定できる場合は multi: と書く --valid-addr-commit $VAR(@@) --dev $VAR(../@)" create: sudo /opt/vyatta/sbin/vyatta-address add $VAR(../@) $VAR(@) delete: sudo /opt/vyatta/sbin/vyatta-address delete $VAR(../@) $VAR(@) allowed: echo "dhcp dhcpv6 <>" val_help: ipv4net; IP address and prefix length val_help: ipv6net; IPv6 address and prefix length val_help: dhcp; Dynamic Host Configuration Protocol val_help: dhcpv6; Dynamic Host Configuration Protocol for IPv6
  • 21. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.def: tag: priority: 318 type: txt help: Ethernet interface name allowed: /opt/vyatta/sbin/vyatta-interfaces.pl --show=ethernet val_help: <ethN>; Ethernet interface name syntax:expression: pattern $VAR(@) "^eth[0-9]+$" node.tag と同じディレクトリ階層には tag: と書く ; "interface ethernet $VAR(@): not a valid name" syntax:expression: exec "if [ ! -d /sys/class/net/$VAR(@) ]; then echo "interface ethernet $VAR(@): does not exist"; exit 1; fi" begin: rm -f /tmp/speed-duplex.$VAR(@) if [ -d "/sys/class/net/$VAR(@)" ]; then if [ -n "$VAR(mac/@)" ]; then ... (省略) ...
  • 22. 詳解 CLI 定義ファイル templates/interfaces/ethernet/node.def: tag: priority: 318 type: txt help: Ethernet interface name allowed: /opt/vyatta/sbin/vyatta-interfaces.pl --show=ethernet val_help: <ethN>; Ethernet interface name syntax:expression: pattern $VAR(@) "^eth[0-9]+$" ; "interface ethernet $VAR(@): not a valid name" commit 時の処理実行の優先度を指定する syntax:expression: exec "if [ ! -d /sys/class/net/$VAR(@) ]; then echo "interface ethernet $VAR(@): does not exist"; exit 1; fi" begin: rm -f /tmp/speed-duplex.$VAR(@) if [ -d "/sys/class/net/$VAR(@)" ]; then if [ -n "$VAR(mac/@)" ]; then ... (省略) ...
  • 23. 詳解 CLI 定義ファイル アクション一覧 begin commit 開始時 create 新規に設定する時 update 既存の設定値を変更する時 delete 設定を削除する時 end commit 終了時
  • 24. 詳解 CLI 定義ファイル expression: 書式一覧 pattern pattern $VAR(@) “^br[0-9]+$” exec exec “.../valid_address $VAR(@)” cond $VAR(@) in “enable”, “disable” and $VAR(@) >= 0 && $VAR(@) < 64 or $VAR(@) == “auto” || pattern ...
  • 25. 詳解 CLI 定義ファイル # set interfaces ethernet eth0 address 192.168.1.1/24 /opt/vyatta/config/からの相対 すでにアドレスが設定されている場合は active/interfaces その値がかかれている active/interfaces/ethernet まだ設定されていない場合は存在しない active/interfaces/ethernet/eth0 active/interfaces/ethernet/eth0/address active/interfaces/ethernet/eth0/address/node.val  tmp/new_config_25193/interfaces tmp/new_config_25193/interfaces/.modified 新しい値が書かれている tmp/new_config_25193/interfaces/ethernet tmp/new_config_25193/interfaces/ethernet/.modified tmp/new_config_25193/interfaces/ethernet/eth0 tmp/new_config_25193/interfaces/ethernet/eth0/.modified tmp/new_config_25193/interfaces/ethernet/eth0/address tmp/new_config_25193/interfaces/ethernet/eth0/address/.modified tmp/new_config_25193/interfaces/ethernet/eth0/address/node.val
  • 26. 詳解 CLI 定義ファイル #!/usr/bin/perl use lib "/opt/vyatta/share/perl5"; use Vyatta::Config; my $config = new Vyatta::Config; @curr = $config->returnValues('interfaces ethernet'); @orig = $config->returnOrigValues('interfaces ethernet'); print "curr:n"; foreach my $v (@curr) { print "t[$v]n";} print "orig:n"; foreach my $v (@orig) { print "t[$v]n";} 詳しくは /opt/vyatta/share/perl5/Vyatta/Config.pm を参照…
  • 27. 実例: MAP 機能の追加 • MAP とは? ☞ 現在 IETF で標準化が進められている IPv4 サービスを IPv6 インフラの上で提供する為 のプロトコル ☞ IPv6 アドレスと Mapping Rule から機械的に IPv4 アドレスを計算する ☞ プロバイダ側に NAPT 機能を必要としない ☞ http://enog.jp/~masakazu/vyatta/map/  
  • 28. 実例: MAP 機能の追加 • どうやって追加するの? ☞ Linux Kernel に手を入れる必要があるので linux-image とネットワーク関連の設定コマ ンドである iproute2 を改造する ☞ 改造した iproute2 を実行する為の CLI 定義 ファイルを用意しそれを vyatta-cfg-system に 組み込む ☞ ISO イメージを作成しインストールする
  • 29. 実例: MAP 機能の追加 templates/interfaces/map/node.def: tag: priority: 380 type: txt help: MAP interface val_help: <mapN>; MAP interface name syntax:expression: pattern $VAR(@) "^map[0-9]+$" ; "MAP interface must be (map0-map999)" commit:expression: $VAR(./role/) != "" ; "Must configure the tunnel role for $VAR(@)" commit:expression: $VAR(./tunnel-source/) != "" || $VAR(./role/@) == "br"; "Must configure the tunnel tunnel-source for $VAR(@)" commit:expression: $VAR(./br-address/) != "" ; "Must configure the tunnel br-address for $VAR(@)" commit:expression: $VAR(./default-forwarding-mode/) != "" ; "Must configure the tunnel default-forwar... for $VAR(@)" ... (続く) ...
  • 30. 実例: MAP 機能の追加 templates/interfaces/map/node.def: ... (続き) ... create: if [ -n "$VAR(./tunnel-source/@)" ] ; then TS="tunnel-source $VAR(./tunnel-source/@)" fi if [ -n "$VAR(./default-forwarding-rule/@)" ] ; then DFR="default-forwarding-rule $VAR(./default-forwarding-rule/@)" fi if [ -n "$VAR(./always-napt/@)" ] ; then AN="always-napt $VAR(./always-napt/@)" fi ip map add $VAR(@) role $VAR(./role/@) $TS br-address $VAR(./br-address/@) default-forwarding-mode $VAR(./default-forwarding-mode/@) $DFR $AN ip link set $VAR(@) up || echo "interfaces MAP $VAR(@): error setting MAP interface active" delete: ip link set $VAR(@) down ip map del $VAR(@)
  • 31. 実例: MAP 機能の追加 templates/interfaces/map/node.tag/role/node.def: type: txt help: Role of this MAP interface [REQUIRED] syntax:expression: $VAR(@) in "br", "ce"; "Must be (br, ce)" allowed: echo br ce create:expression: "true" update:expression: "false" ; "Role can only be set at MAP creation for $VAR(../@)" val_help: br; Role as BR val_help: ce; Role as CE templates/interfaces/map/node.tag/br-address/node.def: type: ipv6net val_help: ipv6net; IPv6 address and prefix length help: BR IP address/prefix [REQUIRED] syntax:expression: exec "/opt/vyatta/sbin/valid_address $VAR(@)" create:expression: "true" update:expression: "false" ; "BR IP address/prefix can only be set at MAP creation for $VAR(../@)"
  • 32. まとめ • Vyatta なら簡単にルータを改造できます • CLI 定義ファイルはそんなに難しくありません • すでに書かれた膨大な数の CLI 定義ファイル があるので参考にしましょう • おもしろい改造をしたら是非 vyatta-users@vyatta-users.jp に教えてください

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n