Skip to content

Instantly share code, notes, and snippets.

@testpilot031
Last active April 25, 2019 01:57
Show Gist options
  • Save testpilot031/bc7675a45b787526c1e44febc4185ae0 to your computer and use it in GitHub Desktop.
Save testpilot031/bc7675a45b787526c1e44febc4185ae0 to your computer and use it in GitHub Desktop.

GNS3 setup

次に進むと「Setup Wizard」の画面となり、GNS3のサーバタイプの選択と構築に映る。 GNS3のサーバタイプには

Local GNS3 VM Local server Remote server がある。 今回は、自分のコンピュータ上の仮想マシンで動作する環境である「Local GNS3 VM」で構築を行っていく。

そのため、VirtualBoxにGNS3 VMのVMイメージを取得していく。 以下のサイトからイメージを取得する。 https://github.com/GNS3/gns3-gui/releases/tag/v1.5.4

GNS3がv1.5.4であり、VirtualBox上に構築することから GNS3.VM.VirtualBox.1.5.4.zipを取得する。

解凍すると、GNS3 VM.ovaができるので このイメージをVirtualBoxにインポートしていく。

importして起動でエラー出る Kernel driver not installed (rc=-1908)

Make sure the kernel module has been loaded successfully.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT.

Uninstall & install

VirtualBoxの再インストールとmac側のダウンロードしたアプリケーションの実行許可:許可 で起動

VirtualBox 5.2.10 Oracle VM VirtualBox Extension Packもinstall 仮想マシーンの設定でネットワークを見ると、ホストオンリーアダプタの設定が「未選択」になっているじゃありませんか。

解決方法は下記。

「Oracle VM Virtual Boxマネージャー」→「環境設定」→「ネットワーク」で「+」という画像をクリック。 そうすると、「Virutal Box Host-Only Ethernet Adapter」が追加されます。

起動出来たがTimeOutする

vagrant box add centos7.2 URL vagrant init centos7.2 vagrant up vagrant ssh sudo yum -y install quagga

https://qiita.com/taijijiji/items/4cdb62317896f5509101

zebra.conf hostname router password zebra enable password zebra

bgpd.conf hostname router password zebra enable password zebra

次に以下のコマンドで起動します。

systemctl start zebra

systemctl start bgpd

sudo yum install telnet

config.vm.provision :shell, :path => "provision.sh"

-- mode: ruby --

vi: set ft=ruby :

Vagrant.configure(2) do |config| config.vm.box = "centos7.2"

  config.vm.define :quagga01 do | quagga01 |
      quagga01.vm.hostname = 'quagga01'
      quagga01.vm.network "private_network", ip: "192.168.33.13"
      config.vm.provision :shell, :path => "provision.sh"
      config.vm.synced_folder "./quagga/quagga01 ", "/etc/quagga",
        create: true, owner: "root", group: "root"
      config.vm.provision :shell, :inline => "systemctl start zebra & systemctl start bgpd"
  end
  config.vm.define :quagga02 do | quagga02 |
      quagga02.vm.hostname = 'quagga02'
      quagga02.vm.network "private_network", ip: "192.168.33.14"
      config.vm.provision :shell, :path => "provision.sh"
      config.vm.synced_folder "./quagga/quagga02", "/etc/quagga",
        create: true, owner: "root", group: "root"
      config.vm.provision :shell, :inline => "systemctl start zebra & systemctl start bgpd"
  end
  config.vm.define :quagga03 do | quagga03 |
      quagga03.vm.hostname = 'quagga03'
      quagga03.vm.network "private_network", ip: "192.168.33.15"
      config.vm.provision :shell, :path => "provision.sh"
      config.vm.synced_folder "./quagga/quagga03", "/etc/quagga",
        create: true, owner: "root", group: "root"
      config.vm.provision :shell, :inline => "systemctl start zebra & systemctl start bgpd"
  end

end

イントロダクション quagga は 石黒邦宏氏が開発したルーティングソフトウェア GNU zebra の派生ソフトウェアで,FreeBSD, NetBSD, Linux, Solaris などの UNIX で動作し,OSPFv2, OSPFv3, RIP v1, RIP v2, RIPng, BGP-4 などのルーティングプロトコルが実装されている.quagga をインストールすることによって PC をソフトウェアルータとして動作させることが可能になる.

quagga にはいくつかのルーティングデーモンが含まれている.zebra は quagga のコアデーモンで,UNIX のカーネル上に抽象化レイヤを構築し,後に挙げるルーティングデーモンに対して API(Zserv API) を提供する.また static ルーティングなどの設定を行う.ripd は RIPv1 と RIPv2,ospfd は OSPFv2,ospf6d は OSPFv3(IPv6),ripngd は RIPng(IPv6),bgpd は BGPv4+(IPv6) を実装したデーモン (Zserv clients) である.

また,quagga は Cisco のルータやスイッチに使用されている基本ソフトウェア,IOS のコマンドラインに良く似たコマンドラインを持つため,Cisco のネットワーク機器を扱う練習台としても利用されている.

各種設定方法などのドキュメントはこちらから確認することができる. http://www.hongo.wide.ad.jp/exp/2012w/quagga.html

事前準備

/etc/quagga 配下に以下のファイルをおく 1.vtysh.conf
service integrated-vtysh-config

2.zebra.conf, 3.isisd.conf hostname router password zebra enable password zebra

OS起動後

問題無ければプロセスが起動出来る systemctl start zebra systemctl start isisd systemctl enable zebra systemctl enable isisd

参考

待ち受けポート telnet localhost 2601 の様にすると各processにアクセス出来る

zebra: 2601 ripd: 2602 ripng: 2603 ospfd: 2604 bgpd: 2605 ospf6d:2606 isisd: 2608

QuaggaのCLI操作

vtysh

以下の様に設定 quagga02# show running-config Building configuration...

Current configuration: ! hostname zebra hostname isisd ! service integrated-vtysh-config ! password zebra enable password zebra ! interface en ipv6 nd suppress-ra ! interface enp0s3 ipv6 nd suppress-ra ! interface enp0s8 ipv6 nd suppress-ra shutdown ! interface enp0s9 ipv6 nd suppress-ra ! interface enp0s10 ip address 10.0.100.1/24 ip router isis F00 ipv6 nd suppress-ra ! interface enp0s16 ip address 172.0.0.2/24 ip router isis F00 ipv6 nd suppress-ra ! interface lo ! router isis F00 net 01.0023.0000.0000.0000.0000.0000.0000.1900.0002.00 metric-style wide ! line vty ! end

設定した後

ISISにてルートが運ばれて来ているのを確認 quagga02# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP, A - Babel, > - selected route, * - FIB route

K>* 0.0.0.0/0 via 10.0.2.2, enp0s3 C>* 10.0.2.0/24 is directly connected, enp0s3 C>* 10.0.100.0/24 is directly connected, enp0s10 I>* 10.0.200.0/24 [115/20] via 172.0.0.1, enp0s16, 00:07:19 C>* 127.0.0.0/8 is directly connected, lo I 172.0.0.0/24 [115/20] via 172.0.0.1 inactive, 00:07:19 C>* 172.0.0.0/24 is directly connected, enp0s16

疑問

L1ルータ    ・・・ is-type level-1 L1/L2ルータ  ・・・ is-type level-1-2 L2ルータ    ・・・ is-type level-2-only の指定ができてエラーでないが、configに反映されない

参考URL https://www.nongnu.org/quagga/docs/docs-multi/ISIS-Configuration-Examples.html http://atnetwork.info/ccnp1/is-is4.html

全ての始まり

https://www.slideshare.net/kentaroebisawa/os-night-20160414

やりたかったこと

  1. ISIS お試し zebra, quagga netconf

    • vSRX, qvfx
    • yang-explorer,nccliclient(python)
    • grpc
  2. P4お試し

仮想OSログイン

id:vagrant pw:vagrant

quagga

ログインしてから sudo vtysh

zebra

ログインしてからリターンキー

qvfx

アカウント: root パスワード: Juniper cli と入力

参考:ホストOSの環境

# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=17.10
DISTRIB_CODENAME=artful
DISTRIB_DESCRIPTION="Ubuntu 17.10"
# uname -a
Linux ubuntu17 4.13.0-21-generic #24-Ubuntu SMP Mon Dec 18 17:29:16 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
# vboxmanage -v
5.1.34_Ubuntur121010
# vagrant -v
Vagrant 1.9.1

gns3の構築

GNS3のサーバタイプには

Local GNS3 VM Local server Remote server がある。

gns3-serverインストール

sudo add-apt-repository ppa:gns3/ppa -y
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install -y virtualbox openssh-server vagrant gns3-iou gns3-server
systemd スクリプトの設置と有効化
$ sudo vi /etc/systemd/system/myproject.service
[Unit]
Description=GNS3 server
Wants=network-online.target
After=network.target network-online.target

[Service]
Type=forking
User=root
Group=root
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/log/gns3 /var/run/gns3
ExecStartPre=/bin/chown -R root:root /var/log/gns3 /var/run/gns3
ExecStart=/usr/bin/gns3server --log /var/log/gns3/gns3.log \
 --pid /var/run/gns3/gns3.pid --daemon
Restart=on-abort
PIDFile=/var/run/gns3/gns3.pid

[Install]
WantedBy=multi-user.target


$ sudo systemctl daemon-reload
$ sudo systemctl enable gns3

https://www.pochio.net/2017/09/ubuntu-1604-lts-gns3.html

rootでgns3を起動するのでrootで仮想ルータを作っておく Vagrantとvirtualboxを入れてるのでvagrantを利用しvirtualboxに仮想ルータ(サーバ)を作成しておく。

vagrant plugin install vagrant-cachier

プラグインインストール後、初

vagrant up

real	7m15.318s
user	0m18.793s
sys	0m9.969s

vagrant destroy

プラグインインストール後、再

vagrant up

real	6m56.186s
user	0m18.658s
sys	0m10.000s

client側でgns3を立ち上げ、 preference > server > main server でserver側のIPアドレスを設定する ユーザー名、パスワードは入力しても使われていない様子

templateにサーバー側にある仮想サーバの設定 start VM in headless modeにチェック(チェック入れないとGNS3からの起動に失敗する) Enable ACPI shutdownにチェック

vagrantで仮想サーバ構築

vagrant box add centos7.2 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box
vagrant init centos7.2
vagrant up
vagrant ssh
sudo yum -y install quagga

https://qiita.com/taijijiji/items/4cdb62317896f5509101

quaggaイントロダクション

quagga は 石黒邦宏氏が開発したルーティングソフトウェア GNU zebra の派生ソフトウェアで,FreeBSD, NetBSD, Linux, Solaris などの UNIX で動作し,OSPFv2, OSPFv3, RIP v1, RIP v2, RIPng, BGP-4 などのルーティングプロトコルが実装されている.quagga をインストールすることによって PC をソフトウェアルータとして動作させることが可能になる.

quagga にはいくつかのルーティングデーモンが含まれている.zebra は quagga のコアデーモンで,UNIX のカーネル上に抽象化レイヤを構築し,後に挙げるルーティングデーモンに対して API(Zserv API) を提供する.また static ルーティングなどの設定を行う.ripd は RIPv1 と RIPv2,ospfd は OSPFv2,ospf6d は OSPFv3(IPv6),ripngd は RIPng(IPv6),bgpd は BGPv4+(IPv6) を実装したデーモン (Zserv clients) である.

また,quagga は Cisco のルータやスイッチに使用されている基本ソフトウェア,IOS のコマンドラインに良く似たコマンドラインを持つため,Cisco のネットワーク機器を扱う練習台としても利用されている.

各種設定方法などのドキュメントはこちらから確認することができる.
http://www.hongo.wide.ad.jp/exp/2012w/quagga.html

事前準備

/etc/quagga 配下に以下のファイルをおく 1.vtysh.conf

service integrated-vtysh-config

2.zebra.conf 3.isisd.conf

hostname router
password zebra
enable password zebra

OS起動後

confファイルに問題無ければプロセスが起動出来る
systemctl start zebra
systemctl start isisd
systemctl enable zebra
systemctl enable isisd

参考

待ち受けポート telnet localhost 2601
の様にすると各processにアクセス出来る

zebra: 2601
ripd:  2602
ripng: 2603
ospfd: 2604
bgpd:  2605
ospf6d:2606
isisd: 2608

GNS3

GNS3上ではeth0とかで表示するされるので対応表を書く

ubuntu GNS3
enp0s3 eth0
enp0s8 eth1
enp0s9 eth2
enp0s10 eth3
enp0s16 eth4

QuaggaのCLI操作

vtysh

でコンソールに入る 以下の様に設定

quagga02# show running-config
Building configuration...

Current configuration:
!
hostname zebra
hostname isisd
!
service integrated-vtysh-config
!
password zebra
enable password zebra
!
interface en
 ipv6 nd suppress-ra
!
interface enp0s3
 ipv6 nd suppress-ra
!
interface enp0s8
 ipv6 nd suppress-ra
 shutdown
!
interface enp0s9
 ipv6 nd suppress-ra
!
interface enp0s10
 ip address 10.0.100.1/24
 ip router isis F00
 ipv6 nd suppress-ra
!
interface enp0s16
 ip address 172.0.0.2/24
 ip router isis F00
 ipv6 nd suppress-ra
!
interface lo
!
router isis F00
 net 01.0023.0000.0000.0000.0000.0000.0000.1900.0002.00
 metric-style wide
!
line vty
!
end

設定した後

ISISにてルートが運ばれて来ているのを確認

quagga02# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, A - Babel,
       > - selected route, * - FIB route

K>* 0.0.0.0/0 via 10.0.2.2, enp0s3
C>* 10.0.2.0/24 is directly connected, enp0s3
C>* 10.0.100.0/24 is directly connected, enp0s10
I>* 10.0.200.0/24 [115/20] via 172.0.0.1, enp0s16, 00:07:19
C>* 127.0.0.0/8 is directly connected, lo
I   172.0.0.0/24 [115/20] via 172.0.0.1 inactive, 00:07:19
C>* 172.0.0.0/24 is directly connected, enp0s16


# 疑問
L1ルータ    ・・・ is-type level-1
L1/L2ルータ  ・・・ is-type level-1-2
L2ルータ    ・・・ is-type level-2-only
の指定ができてエラーでないが、configに反映されない

isis動作確認コマンド

Showing ISIS information

show isis summary
show isis hostname
show isis interface
show isis topology
show isis database detail
show isis segment node

参考URL https://www.nongnu.org/quagga/docs/docs-multi/ISIS-Configuration-Examples.html http://atnetwork.info/ccnp1/is-is4.html

barefoot
tofino new 7170 series 100G System
32ports 100GbE - 6.4Tbps

greatfirewall

DPI(deep packet inspection):データが暗号化されているので
ラージスケールACL、ラージスケールNATのプロファイルがあってそれを適用

MPLS

今度

ISISをもう一度一から設定してみる

PC-2> ip 192.168.2.2/30 192.168.2.1
Checking for duplicate address...
PC1 : 192.168.2.2 255.255.255.252 gateway 192.168.2.1

PC-1> ip 192.168.1.2/30 192.168.1.1
Checking for duplicate address...
PC1 : 192.168.1.2 255.255.255.252 gateway 192.168.1.1

write memoryすると/etc/quagga/Quagga.conf に設定が保存されるがOS再起動時には読み込んでくれない。

読み込ませる為には vtysh.confのservice integrated-vtysh-configはコメントアウトしておく。 出ないとwrite した時保存するファイルがQuagga.confになる為、保存した設定を読み込みできなくなる。 vagrant@quagga01:~$ sudo cat /etc/quagga/vtysh.conf !service integrated-vtysh-config hostname quagga-router username root nopassword

===============

vagrant@quagga01:~$ sudo vtysh

Hello, this is Quagga (version 1.1.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

quagga-router# show run
Building configuration...

Current configuration:
!
hostname zebra
hostname bgpd
hostname isisd
hostname quagga-router
!
password zebra
enable password zebra
!
interface enp0s3
 ip address 10.0.1.2/30
!
interface enp0s8
 ip address 10.0.2.1/30
 ip router isis FOO
 isis circuit-type level-1
!
interface enp0s9
 ip address 10.0.6.1/30
 ip router isis FOO
 isis circuit-type level-1
!
interface enp0s10
!
interface enp0s16
!
interface enp0s17
!
interface enp0s18
!
interface enp0s19
 ip address 192.168.1.1/30
 ip router isis FOO
 isis circuit-type level-1
!
interface lo
!
router isis FOO
 net 01.0000.0000.0002.00
 metric-style wide
 is-type level-1
!
line vty
!
end

===============

vagrant@quagga02:~$ sudo vtysh

Hello, this is Quagga (version 1.1.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

quagga-router# show run
Building configuration...

Current configuration:
!
hostname zebra
hostname bgpd
hostname isisd
hostname quagga-router
!
debug isis packet-dump
!
password zebra
enable password zebra
!
interface enp0s3
 ip address 10.0.3.2/30
!
interface enp0s8
 ip address 10.0.2.2/30
 ip router isis FOO
!
interface enp0s9
 ip address 10.0.4.1/30
 ip router isis FOO
!
interface enp0s10
!
interface enp0s16
!
interface enp0s17
!
interface enp0s18
!
interface enp0s19
 ip address 192.168.2.1/30
 ip router isis FOO
!
interface lo
!
router isis FOO
 net 01.0000.0000.0001.00
 metric-style wide
!
line vty
!
end

===============

vagrant@quagga03:~$ sudo vtysh

Hello, this is Quagga (version 1.1.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

quagga-router# show run
Building configuration...

Current configuration:
!
hostname zebra
hostname bgpd
hostname isisd
hostname quagga-router
!
password zebra
enable password zebra
!
interface enp0s3
!
interface enp0s8
 ip address 10.0.4.2/30
 ip router isis FOO
 isis circuit-type level-2-only
!
interface enp0s9
 ip address 10.0.6.1/30
 ip router isis FOO
 isis circuit-type level-2-only
!
interface enp0s10
!
interface enp0s16
!
interface enp0s17
!
interface enp0s18
!
interface enp0s19
!
interface lo
!
router isis FOO
 net 02.0000.0000.0003.00
 metric-style wide
 is-type level-2-only
!
line vty
!
end

===============

vagrant@quagga04:~$ sudo vtysh

Hello, this is Quagga (version 1.1.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

quagga-router# show run
Building configuration...

Current configuration:
!
hostname zebra
hostname bgpd
hostname isisd
hostname quagga-router
!
password zebra
enable password zebra
!
interface enp0s3
!
interface enp0s8
 ip address 10.0.7.2/30
 ip router isis FOO
!
interface enp0s9
 ip address 10.0.6.2/30
 ip router isis FOO
!
interface enp0s10
!
interface enp0s16
!
interface enp0s17
!
interface enp0s18
!
interface enp0s19
!
interface lo
!
router isis FOO
 net 03.0000.0000.0004.00
 metric-style wide
!
line vty
!
end

===============

quagga02での実行 quagga-router# show isis database detail Area FOO: IS-IS Level-1 link-state database: LSP ID PduLen SeqNumber Chksum Holdtime ATT/P/OL isisd.00-00 * 95 0x00000003 0x595f 574 0/0/0 Area Address: 01 NLPID : 0xCC Hostname : isisd Router ID : 192.168.2.1 IPv4 Address: 192.168.2.1 Metric : 10 IS-Extended : isisd.83 Metric : 10 IPv4-Extended : 10.0.2.2/30 Metric : 10 IPv4-Extended : 10.0.4.1/30 Metric : 10 IPv4-Extended : 192.168.2.1/30

isisd.00-00                95   0x00000005  0x1e99     472    0/0/0
  Area Address: 01
  NLPID       : 0xCC
  Hostname    : isisd
  Router ID   : 192.168.1.1
  IPv4 Address: 192.168.1.1
  Metric      : 10       IS-Extended   : isisd.83
  Metric      : 10       IPv4-Extended : 10.0.2.1/30
  Metric      : 10       IPv4-Extended : 10.0.6.1/30
  Metric      : 10       IPv4-Extended : 192.168.1.1/30

isisd.83-00                51   0x00000002  0xe85f     524    0/0/0
  Metric      : 0        IS-Extended   : isisd.00
  Metric      : 0        IS-Extended   : isisd.00

    3 LSPs

IS-IS Level-2 link-state database:
LSP ID                  PduLen  SeqNumber   Chksum  Holdtime  ATT/P/OL
isisd.00-00          *     95   0x00000003  0x9b1a     593    0/0/0
  Area Address: 01
  NLPID       : 0xCC
  Hostname    : isisd
  Router ID   : 192.168.2.1
  IPv4 Address: 192.168.2.1
  Metric      : 10       IS-Extended   : isisd.83
  Metric      : 10       IPv4-Extended : 10.0.2.2/30
  Metric      : 10       IPv4-Extended : 10.0.4.1/30
  Metric      : 10       IPv4-Extended : 192.168.2.1/30

isisd.00-00                97   0x00000007  0xfe62     811    0/0/0
  Area Address: 02
  NLPID       : 0xCC
  Hostname    : isisd
  Router ID   : 10.0.6.1
  IPv4 Address: 10.0.6.1
  Metric      : 10       IS-Extended   : isisd.83
  Metric      : 10       IS-Extended   : isisd.84
  Metric      : 10       IPv4-Extended : 10.0.4.2/30
  Metric      : 10       IPv4-Extended : 10.0.6.1/30

isisd.83-00                51   0x00000002  0xeb58     615    0/0/0
  Metric      : 0        IS-Extended   : isisd.00
  Metric      : 0        IS-Extended   : isisd.00

isisd.00-00                86   0x00000002  0xde19     844    0/0/0
  Area Address: 03
  NLPID       : 0xCC
  Hostname    : isisd
  Router ID   : 10.0.7.2
  IPv4 Address: 10.0.7.2
  Metric      : 10       IS-Extended   : isisd.84
  Metric      : 10       IPv4-Extended : 10.0.7.2/30
  Metric      : 10       IPv4-Extended : 10.0.6.2/30

isisd.84-00                51   0x00000001  0x1030     804    0/0/0
  Metric      : 0        IS-Extended   : isisd.00
  Metric      : 0        IS-Extended   : isisd.00

    5 LSPs

YangExplorerうまくいったやつ

Dockerfile

# build:docker build -t yangb .
# run & bash:ddocker run -p 80:80 -p 100:100 -it XXXXX /bin/bash

FROM ubuntu:17.10
RUN set -x && \
    apt update && \
    apt install -y vim git sudo mlocate lsof python-pip python-dev libffi-dev libssl-dev iproute2 && \
    apt install -y graphviz && \
    apt install -y libxml2-dev libxslt1-dev python-dev zlib1g-dev && \
    apt install -y virtualenv && \
    pip install pyang
    # not use NOW...
    #pip install --upgrade pip
RUN git clone https://github.com/CiscoDevNet/yang-explorer.git && \
    cd yang-explorer && \
    bash setup.sh -y
RUN updatedb && apt install -y nginx tcpdump curl
ENTRYPOINT tail -f /dev/null && service nginx start

    /etc/nginx/conf.d/r-proxy-server.conf
    server {
                    listen *:100;
                    location / {
                        proxy_set_header X-Forwarded-Host $host;
                        proxy_set_header X-Forwarded-Server $host;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_pass http://localhost:8088;
                    }
            }

docker run -p 8080:8080 4c78aff6983d
docker exec -it 5996c23ddd0d /bin/bash

Juniperの仮想ファイアウォール(firefly perimeter/vSRX)を検証用にローカルに構築する

http://tekunabe.hatenablog.jp/entry/2017/07/14/vsrx https://ittechnologist.wordpress.com/2015/08/23/use-vagrant-with-juniper-junos-vms-on-ubuntu/

set system login user juniperff class super-user
set system login user juniperff authentication plain-text-password
set system services netconf ssh

# show interfaces ge-0/0/1 |display xml
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/12.1X47/junos">
    <configuration junos:changed-seconds="1528078744" junos:changed-localtime="2018-06-04 02:19:04 UTC">
            <interfaces>
                <interface>
                    <name>ge-0/0/1</name>
                    <unit>
                        <name>0</name>
                        <family>
                            <inet>
                                <address>
                                    <name>192.168.33.33/24</name>
                                </address>
                            </inet>
                        </family>
                    </unit>
                </interface>
            </interfaces>
    </configuration>
    <cli>
        <banner>[edit]</banner>
    </cli>
</rpc-reply>

vagrant側でIPアドレスを設定、vsrx側でユーザ、パスワード設定後、yangexploreで接続できた。 http://xml.juniper.net/dmi/system/1.0 http://xml.juniper.net/netconf/junos/1.0 yangexploreのGUIでをクリックすると

urn:ietf:params:xml:ns:netconf:base:1.0
urn:ietf:params:xml:ns:netconf:capability:candidate:1.0
urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0
urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file
urn:ietf:params:xml:ns:netconf:capability:validate:1.0
が帰ってくる。しかし、モデルの登録がないのでモデルを探す、
https://github.com/Juniper/yang
にyangモデル置いてある。17.4をyang explorerに読み込ませることが可能、
しかし、get interfaceみたいなのでデータ取ってこれない
# show version
## Last changed: 2018-06-04 02:19:04 UTC
version 12.1X47-D15.4;

バージョン違うとyangモデルも合わせないといけないっぽい

osとモデルファイルの種類の対応表

https://www.juniper.net/documentation/en_US/junos/topics/reference/general/yang-junos-modules-overview.html

yangモデルはjuniperのサイト(https://www.juniper.net/support/downloads/junos.html)もしくはgithub(https://github.com/Juniper/yang) もしくはOSにコマンドを打って取得することができる

show system schema module module-name format yang output-file-name path
など、OSのバージョンによって微妙にコマンドが変わるので以下のページを参考にする。
https://www.juniper.net/documentation/en_US/junos/topics/task/operational/netconf-yang-module-obtaining-and-importing.html

今回の vSRX version 12.1X47-D15.4はshow system schemaのコマンドを持っていない。 のサイトにもモデルが置いていない。 GitHubにもOSに対応したバージョンが置いていない。 →vSRXでやるのは諦める

https://github.com/Juniper/vqfx10k-vagrant/blob/master/INSTALL.md

vqfxの構築

apt install ansible
$ sudo ansible-galaxy install -c Juniper.junos
"-c"はsslのエラーが出たためつけた

$ pip install junos-eznc
$ pip install jxmlease
vagrant box add juniper/vqfx10k-re /{path to box file}/vqfx10k-re-virtualbox.box
git clone https://github.com/Juniper/vqfx10k-vagrant.git
cd vqfx10k-vagrant/light-1qfx

Vagrantfileに

vqfx.vm.network "private_network", ip: "192.168.33.4", nic_type: '82540EM',bridge: "vboxnet0"

を追加

vagrant up

vqfxでの設定

アカウント: root パスワード: Juniper cli

vagrant@vqfx-re> show interfaces terse
vagrant@vqfx-re# set system login user juniperff class super-user
vagrant@vqfx-re# set system login user juniperff authentication plain-text-password
vagrant@vqfx-re# set system services netconf ssh
vagrant@vqfx-re# commit
vagrant@vqfx-re> show version
fpc0:
--------------------------------------------------------------------------
Hostname: vqfx-re
Model: vqfx-10000
Junos: 17.4R1.16 limited
JUNOS Base OS boot [17.4R1.16]
JUNOS Base OS Software Suite [17.4R1.16]
JUNOS Crypto Software Suite [17.4R1.16]
JUNOS Online Documentation [17.4R1.16]
JUNOS Kernel Software Suite [17.4R1.16]
JUNOS Packet Forwarding Engine Support (qfx-10-f) [17.4R1.16]
JUNOS Routing Software Suite [17.4R1.16]
JUNOS jsd [i386-17.4R1.16-jet-1]
JUNOS SDN Software Suite [17.4R1.16]
JUNOS Enterprise Software Suite [17.4R1.16]
JUNOS Web Management [17.4R1.16]
JUNOS py-base-i386 [17.4R1.16]
JUNOS py-extensions-i386 [17.4R1.16]

GitHubにある17.4RのyangファイルをYangブラウザに適応しvqfxとやりとりしたが、errorしか出ない

yangブラウザでのログ capabilityの実行結果、通信できない場合はhttpエラーになる

urn:ietf:params:netconf:base:1.0
urn:ietf:params:netconf:capability:candidate:1.0
urn:ietf:params:netconf:capability:confirmed-commit:1.0
urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file
urn:ietf:params:netconf:capability:validate:1.0

http://xml.juniper.net/dmi/system/1.0
http://xml.juniper.net/netconf/junos/1.0
urn:ietf:params:xml:ns:netconf:base:1.0
urn:ietf:params:xml:ns:netconf:capability:candidate:1.0
urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0
urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file
urn:ietf:params:xml:ns:netconf:capability:validate:1.0
urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring

送ったXML ietf.interfacesを使用

<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <get>
    <filter>
      <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
        <interface>
          <name/>
        </interface>
      </interfaces>
    </filter>
  </get>
</rpc>

帰ってきたXML

<rpc-reply message-id="urn:uuid:75f4f3fb-4114-4153-b0db-1714bd52bc43" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/17.4R1/junos" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <rpc-error>
    <error-type>protocol</error-type>
    <error-tag>operation-failed</error-tag>
    <error-severity>error</error-severity>
    <error-message>syntax error, expecting &lt;config-text/&gt;, &lt;netconf-state&gt;, &lt;configuration&gt;, or &lt;configuration/&gt;</error-message>
    <error-info>
      <bad-element>interfaces</bad-element>
    </error-info>
  </rpc-error>
  <rpc-error>
    <error-type>protocol</error-type>
    <error-tag>operation-failed</error-tag>
    <error-severity>error</error-severity>
    <error-message>syntax error, expecting &lt;/filter&gt;</error-message>
    <error-info>
      <bad-element>interfaces</bad-element>
    </error-info>
  </rpc-error>
</rpc-reply>

junos-qfx-rpc-interfacesは

<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <get-interface-information xmlns="http://yang.juniper.net/junos-qfx/rpc/interfaces">
    <interface-name>em5</interface-name>
  </get-interface-information>
</rpc>

を送ると

HTTP request error

netconf

nccliclient pythonを利用

vqfx側でのXML形式取得、junosではshow configuration 〜 |display xmlで定義XMLファイルが取得できる。 これを元にXMLを作成すればよい

vagrant@vqfx-re> show configuration interfaces em1 |display xml
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/17.4R1/junos">
    <configuration junos:commit-seconds="1528248938" junos:commit-localtime="2018-06-06 01:35:38 UTC" junos:commit-user="vagrant">
            <interfaces>
                <interface>
                    <name>em1</name>
                    <unit>
                        <name>0</name>
                        <family>
                            <inet>
                                <address>
                                    <name>169.254.0.2/24</name>
                                </address>
                            </inet>
                        </family>
                    </unit>
                </interface>
            </interfaces>
    </configuration>
    <cli>
        <banner>{master:0}</banner>
    </cli>
</rpc-reply>

{master:0}

実際にコンフィグ変更で動作したXML

<config>
    <configuration>
         <interfaces>
            <interface>
                <name>em1</name>
                <enable/>
                <unit>
                    <name>0</name>
                    <family>
                        <inet>
                            <address>
                                <name>192.168.100.2/30</name>
                            </address>
                        </inet>
                    </family>
                </unit>
            </interface>
        </interfaces>
    </configuration>
</config>

Zabbix

https://qiita.com/zembutsu/items/686b99be90d72688aee8 https://hub.docker.com/r/monitoringartist/zabbix-db-mariadb/

閑話休題

  • GNS3用 zebra01 zebra02 zebra03 qfx01

  • Netconf用 qfx02 nccliclient

PD 6割 RA 4割

電話ある場合はHGW(PD) 電話なしHGWありの場合はv6パススルー

マルチプレフィックス問題 ↓ HGWで2方路もつ

v6アドレス割り当てが大変 →vlanに紐づいてv6アドレスをつけているので収容替えが大変

facebook がILNを実施、openR、 openR:

VNEは現在8事業者、限界は16。

ディスアグリゲート化

DSP:伝送、ベンダーは基本1社なので

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment