Vyatta(VyOS)で、パケットキャプチャをしたりconfigを一括置換したりなどの便利操作をまとめます。
config直接編集
Vyattaは/config/config.bootに設定が保存されます。
これをviなどのエディタで直接編集する事もできます。
vi /config/config.boot
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などのソフトウェアを使えば、グラフィカルに閲覧する事もできます。
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)#