Vyatta(VyOS) 便利操作(仮想マシン複製やパケットキャプチャなど)

スポンサーリンク

Vyatta(VyOS)で、パケットキャプチャをしたりconfigを一括置換したりなどの便利操作をまとめます。

config直接編集

Vyattaは/config/config.bootに設定が保存されます。

これをviなどのエディタで直接編集する事もできます。

vi /config/config.boot

Vyatta viによるconfig編集

sedコマンドで一括置換も可能です。以下は「192.168.56.」を「172.16.56.」に置換する例です。

sed -i.bak -e 's/192.168.56./172.16.56./g' /config/config.boot


再起動で設定反映できます。


sudo reboot

仮想マシンのコピー

vyattaは仮想マシンなので、容易にコピーする事ができます。以下はVirtualBoxのスクリーンショットですが、ほとんどのハイパーバイザは仮想マシンのコピー操作は可能です。

仮想マシンのコピー

仮想マシンをコピーした場合は、インターフェース番号に注意が必要です。

例えば、仮想NICを2つ持つマシンをコピーした場合は、eth0, eth1は旧設定が残っているため使用不可になります。そのため、eth2, eth3が割り当てられます。eth2が1番目のNICで、eth3が2番目のNICというやや分かりづらい設定になってしまいます。

vyos@vy21.gokatei.go:~$ cat /config/config.boot.bak 
interfaces {
    ethernet eth0 {
        address 192.168.56.21/24
        hw-id 08:00:27:3a:79:71
    }
    ethernet eth1 {
        hw-id 08:00:27:84:e1:f1
    }
    loopback lo
    ethernet eth2 {
        hw-id 08:00:27:b6:d6:24
    }
    ethernet eth3 {
        hw-id 08:00:27:aa:59:26
    }
}

  <ommitted>

この状況を解消するには、/config/config.bootをviなどで直接編集する事で回避されます。
まず、eth1, eth2のhw-idを削除します。次にeth2, eth3の設定を削除します。最後に、必要あれば、IPアドレスも適宜変更します。

編集例は以下の通りです。

vyos@vy21.gokatei.go:~$ cat /config/config.boot
interfaces {
    ethernet eth0 {
        address 192.168.56.22/24
    }
    ethernet eth1 {
    }
    loopback lo
}

  <omitted>

再起動で設定を反映します。

sudo reboot

再起動後は、以下のようにhw-idが補記された状態になります。

vyos@vy21.gokatei.go:~$ cat /config/config.boot
interfaces {
    ethernet eth0 {
        address 192.168.56.22/24
        hw-id 08:00:27:aa:59:26
    }
    ethernet eth1 {
        hw-id 08:00:27:b6:d6:24
    }
    loopback lo
}

  <omitted>

パケットキャプチャ

vyattaは「sudo su - 」コマンドでrootユーザにスイッチする事ができます。rootユーザになれば強い権限を必要とする操作も可能です。その強い権限の1つがパケットキャプチャです。

まずは「sudo su -」コマンドでrootユーザになります。

vyos@vy21.gokatei.go:~$ sudo su -
root@vy21:~# 


パケットを標準出力するならば、以下のように操作します。


root@vy21:~# tcpdump -i eth0 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
06:53:29.177785 IP 192.168.56.1 > 192.168.56.22: ICMP echo request, id 39172, seq 2, length 64
06:53:29.177831 IP 192.168.56.22 > 192.168.56.1: ICMP echo reply, id 39172, seq 2, length 64
^C
2 packets captured
4 packets received by filter
0 packets dropped by kernel
root@vy21:~# 

パケットをファイルに書き出すならば、以下のように操作します。

root@vy21:~# tcpdump -i eth0 icmp -w /tmp/ping.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
^C4 packets captured
4 packets received by filter
0 packets dropped by kernel
root@vy21:~# 

ファイル書き出し後は、scpなどで適宜転送し、操作しやすい端末まで移動します。wiresharkなどのソフトウェアを使えば、グラフィカルに閲覧する事もできます。

vyattaのキャプチャ結果

vtysh

VyOSは内部的に、オープンソース「FRRouting」を使用しています。さらにこのオープンソースは内部的に「Zebra」を使用しています。

このZebraはvtyshコマンドを使用すると、いわゆるCiscoライクな操作が可能です。まずは、一般ユーザモードでvtyshと入力してみましょう。

vyos@vy001:~$ vtysh

Hello, this is FRRouting (version 7.5.1-20210305-00-g0509784dc).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

vy001# 

show runなどのコマンドを使用する事ができます。

vy001# show running-config 
Building configuration...

Current configuration:
!
frr version 7.5.1-20210305-00-g0509784dc
frr defaults traditional
hostname vy001
log syslog
log facility local7
service integrated-vtysh-config
!
interface eth0
 ip ospf bfd
 ip ospf dead-interval 30
 ip ospf network non-broadcast
 ipv6 ospf6 bfd
!
router ospf
 auto-cost reference-bandwidth 100
 timers throttle spf 200 1000 10000
 network 10.1.1.1/32 area 0
 network 192.168.12.0/24 area 0
 neighbor 192.168.12.2
!
router ospf6
 interface eth0 area 0
 interface lo area 0
!
line vty
!
bfd
 peer 192.168.12.2
  transmit-interval 60
  echo-interval 250
 !
 peer 2001:db8:12::2 local-address 2001:db8:12::1
  transmit-interval 60
  echo-interval 250
 !
!
end
vy001# 

conf tのような操作でデバッグする事もできます。ただし、vtysh経由で設定した操作はディスクには書き込まれない事に注意ください。再起動と同時に設定は消えます。また、かなり裏技に近いデバッグ手法である事に注意ください。

vy001# configure terminal 
vy001(config)# router ospf
vy001(config-router)# 
  area                   OSPF area parameters
  auto-cost              Calculate OSPF interface cost according to bandwidth
  capability             Enable specific OSPF feature
  compatible             OSPF compatibility list
  default-information    Control distribution of default information
  default-metric         Set metric of redistributed routes
  distance               Administrative distance
  distribute-list        Filter networks in routing updates
  end                    End current mode and change to enable mode
  exit                   Exit current mode and down to previous mode
  find                   Find CLI command matching a regular expression
  list                   Print command list
  log-adjacency-changes  Log changes in adjacency state
  max-metric             OSPF maximum / infinite-distance metric
  mpls-te                MPLS-TE specific commands
  neighbor               Specify neighbor router
  network                Enable routing on an IP network
  no                     Negate a command or set its defaults
  ospf                   OSPF specific commands
  output                 Direct vtysh output to file
  passive-interface      Suppress routing updates on an interface
  pce                    PCE Router Information specific commands
  proactive-arp          Allow sending ARP requests proactively
  quit                   Exit current mode and down to previous mode
  redistribute           Redistribute information from another routing protocol
  refresh                Adjust refresh parameters
  router-info            OSPF Router Information specific commands
  segment-routing        Segment-Routing specific commands
  timers                 Adjust routing timers
  write-multiplier       Write multiplier
vy001(config-router)# 
タイトルとURLをコピーしました