VyOSでポリシベースルーティング(PBR)を設定する

VyOSでのPBR

VyOSでポリシベースルーティング(以降PBRと表記)を設定する際には、Ciscoとは大きく異なる方法を使用します。

 

Ciscoでは、ルートマップを作成し、そのルートマップ内で条件やネクストホップを指定していました。

それに対してVyOSでは、ポリシルートコマンドで条件となるルールを作成し、ネクストホップをルーティングテーブル内の経路として指定します。

詳しく解説します。
また、当ブログでは最も基本となり、汎用性の高いPBRの設定を紹介します。
VyOSはかなり細かくPBRが設定できるようになっていますので、こちらを応用してより高度なPBRを作成することもできます。
まず、VyOSでPBRを設定する際には、次のコマンドを使用します。

説明 コマンド
ポリシーを作成する set policy route <ポリシ名>
ルールを作成し、マッチングルールを指定する set policy route <ポリシ名> rule <ルール番号> <マッチングルール>
マッチングしたトラフィックに対する処理を指定する set policy route <ポリシ名> rule <ルール番号> set <処理>
インタフェースにポリシーを適用する set policy route <ポリシ名> interface <インタフェース>

まず、ポリシの作成では、Ciscoのルートマップに近い動作となります。
続いて、ルール番号を指定し、条件を指定します。
主な条件は次の通りです。

条件 説明
destination address 特定の宛先IPアドレスを指定する
source address 特定の送信元IPアドレスを指定する。
destination port 特定の宛先ポート番号を指定する
source port 特定の送信元ポートを指定する。

それぞれサブネットマスクの使用や、ハイフンによる区切りなどで複数の値を条件の対象とすることができます。

そして、VyOSの最大のクセが、PBRの処理の指定です。
コマンドとしては、ルールとしてsetを使用して処理を指定します。
ここで、VyOSで最も基礎となる処理を紹介します。

set policy route <ポリシ名> rule <ルール番号> set table <テーブル番号>

こちらのテーブルとは、ルーティングテーブルを意味します。
VyOSではルータにスタティックルートを登録する際に、テーブル番号を指定することができます。
そして、特定のルーティングテーブルに登録されている経路を使用して、通常とは異なるルーティングを行う。といった動作となっています。
また、任意のテーブル番号を指定してスタティックルートを登録する際には、次のコマンドを使用します。

set protocols static table <テーブル番号> route <ネットワーク/プレフィックス> next-hop <ネクストホップ>

通常のルート登録の際に、staticとrouteの間にtable <テーブル番号> を挿入して任意のテーブルへルートを登録します。
また、PBRで使用する経路である場合、ネクストホップのIPアドレスを指定する必要があり自身のインタフェースを指定する形でのスタティックルート登録を行っていはいけない点に注意が必要です。

今回紹介する、最も基礎となるPBRに使用するコマンドをここでもう一度まとめます。

説明 コマンド
PBRの対象となるトラフィックに使用させたい経路情報を設定する sset protocols static table <テーブル番号> route <ネットワーク/プレフィックス> next-hop <ネクストホップ>
ルールを作成し、PBR対象とする通信の宛先を指定する set policy route <ポリシ名> rule <ルール番号> <条件>
マッチングしたトラフィックが最初に登録した経路情報で転送されるようにする set policy route <ポリシ名> rule <ルール番号> set table <テーブル番号>
インタフェースにポリシーを適用する set policy route <ポリシ名> interface <インタフェース>

では、具体的な設定例を紹介します。

例題

では、まず全ルータで必要となるOSPFの設定を紹介し、その後にルータ1で必要となるPBRの設定を紹介します。

OSPFの設定

ルータ1

set interfaces ethernet eth1 address 100.0.0.1/24
set interfaces ethernet eth2 address 200.0.0.1/24
set interfaces ethernet eth3 address 192.168.10.254/24
set protocols ospf interface eth1 area 0
set protocols ospf interface eth2 area 0
set protocols ospf interface eth2 cost 60000
set protocols ospf interface eth3 area 0

ルータ2

set interfaces ethernet eth1 address 100.0.0.2/24
set interfaces ethernet eth2 address 100.0.1.2/24
set protocols ospf interface eth1 area 0
set protocols ospf interface eth2 area 0

 

ルータ3や4は同様の設定となりますので、省略します。
ルータ1では、優先して使用する経路を指定するために、コストの変更を行っています。

 

 

続いて、PBRの設定を行います。

ルータ1(先程の設定への追加)

set protocols static table 10 route 0.0.0.0/0 next-hop 200.0.0.2
set policy route TEST rule 10 destination address 172.16.10.25/32
set policy route TEST rule 10 set table 10
set policy route TEST interface eth3

 

解説
1つ目のコマンドでPBR時に使用するルートを登録しています。今回はテーブル10を指定しましたが、その他の値でも問題ありません。

2つ目のコマンドでPC2のIPアドレスを指定し、PC2への通信のみがPBRの対象となるように設定しています。

3つ目のコマンドでPBRの処理を指定しています。
先程作成したテーブル10を使用させます。

4つ目のコマンドでインタフェースへの適用を行っています。
Ciscoではインタフェースコンフィギュレーションモードから設定を行ったため、VyOSでもset interface で設定するのかという考えになりますが、正しくはset policyのポリシからの設定をおこなう必要がある点に注意が必要です。

 

 

以上となっています。

 


Cisco以上にVyOSでのPBRは強力なものとなっており、なお設定項目を減らせる点が優れている。
僕はそのように強く感じます。

 

 

お疲れ様でした

VyOSでBGPを設定する

VyOSでのBGP

VyOSでのBGPに関する設定のコマンドは、Ciscoにかなり似ています。

主な設定コマンドを紹介します。

説明 コマンド
自身のAS番号を指定する set protocols bgp system-as <自分のAS番号>
ピアの登録をする set protocols bgp neighbor <ピアのIPアドレス> remote-as <ピアのAS番号>
パスワードを設定する set protocols bgp neighbor <ピアのIPアドレス> password <パスワード>
送信元インタフェースを変更する set protocols bgp neighbor <ピアのIPアドレス> update-source <インタフェース>
TTL値を変更する set protocols bgp neighbor <ピアのIPアドレス> ebgp-multihop <TTL>
ピアを有効にする set protocols bgp neighbor <ピアのIPアドレス> address-family ipv4-unicast
アドバタイズするネットワークを指定する set protocols bgp address-family ipv4-unicast network <ネットワーク>/<プレフィックス>
経路集約の設定を行う set protocols bgp address-family ipv4-unicast aggregate-address <ネットワーク>/<プレフィックス> [summary-only | as-set]
ネクストホップセルフの設定を行う set protocols bgp neighbor <ピアのIPアドレス> address-family ipv4-unicast nexthop-self

 

説明 コマンド
ピアグループを作成する set protocols bgp peer-group <グループ名> <各種設定>
ピアグループをネイバーに適用する set protocols bgp neighbor <ピアのIPアドレス> peer-group <グループ名>


このように、set protocols bgp に続くコマンドがCiscoとかなり似ています。アドレスファミリがより細かく設定しなければ行けない点に注意が必要です。

また、BGPを有効にする際、Ciscoではルータコンフィギュレーションモードに入る際にAS番号を指定しますが、VyOSではsystem-asとしてAS番号を指定する点に注意が必要です。


では、具体的な設定例を見てみましょう。
また、BGPの設定を行う際には、事前にIGPなどにより各ルータでの到達性が確保されている必要があります。今回の例題ではOSPFを使用して到達性を確保するため、OSPFがまだ未学習である場合は、以前のブログで紹介しているため、目を通すようお願いいたします。

VyOSでOSPFを設定する - Yulyu-VyOSドキュメント


例題


コマンド

まずはiBGPの設定が必要であるAS200のルータから確認します。

ルータ2

set interfaces ethernet eth1 address 100.0.0.2/24
set interfaces ethernet eth2 address 172.16.0.1/24
set interfaces ethernet eth3 address 172.16.2.1/24
set interfaces loopback lo address 2.2.2.2/32

set protocols ospf interface eth2 area 0
set protocols ospf interface eth3 area 0
set protocols ospf interface lo area 0

set protocols bgp system-as 200
set protocols bgp peer-group PEER remote-as 200
set protocols bgp peer-group PEER password vyos
set protocols bgp peer-group PEER update-source lo
set protocols bgp peer-group PEER address-family ipv4-unicast
set protocols bgp neighbor 3.3.3.3 peer-group PEER
set protocols bgp neighbor 4.4.4.4 peer-group PEER

ルータ3

set interfaces ethernet eth1 address 172.16.0.2/24
set interfaces ethernet eth2 address 172.16.1.1/24
set interfaces ethernet eth3 address 10.0.0.254/24
set interfaces loopback lo address 3.3.3.3/32

set protocols ospf interface eth1 area 0
set protocols ospf interface eth2 area 0
set protocols ospf interface eth3 area 0
set protocols ospf interface lo area 0

set protocols bgp system-as 200
set protocols bgp peer-group PEER remote-as 200
set protocols bgp peer-group PEER address-family ipv4-unicast
set protocols bgp peer-group PEER password vyos
set protocols bgp peer-group PEER update-source lo
set protocols bgp neighbor 2.2.2.2 peer-group PEER
set protocols bgp neighbor 4.4.4.4 peer-group PEER
set protocols bgp address-family ipv4-unicast network 10.0.0.0/24

ルータ4

set interfaces ethernet eth1 address 172.16.2.2/24
set interfaces ethernet eth2 address 172.16.1.2/24
set interfaces loopback lo address 4.4.4.4/32

set protocols ospf interface eth1 area 0
set protocols ospf interface eth2 area 0
set protocols ospf interface lo area 0

set protocols bgp system-as 200
set protocols bgp peer-group PEER remote-as 200
set protocols bgp peer-group PEER address-family ipv4-unicast
set protocols bgp peer-group PEER password vyos
set protocols bgp peer-group PEER update-source lo
set protocols bgp neighbor 2.2.2.2 peer-group PEER
set protocols bgp neighbor 3.3.3.3 peer-group PEER

解説

各ルータの1ブロック目でインタフェースに関する設定を行っています。

2ブロック目で、OSPFに関する設定を行っています。
ループバックインタフェースでもOSPFを動作させないと、iBGPの設定をする際に、ループバックインタフェース同士をピアにすることができなくなってします(到達性がないため)ので、必ず動作させる必要があります。

3つ目のブロックでBGPに関する設定を行っています。
各ルータでAS200を指定し、なおピアグループPEERを作成し、各ピアもAS200であると指定しています。
また、ルータ3ではBGPでは10.0.0.0/24の経路情報をアドバタイズする必要があるため、networkコマンドを実行しています。



続いて、eBGPの設定を行います

ルータ1

set interfaces ethernet eth1 address 100.0.0.1/24
set interfaces ethernet eth2 vif 10 address 192.168.10.254/24
set interfaces ethernet eth2 vif 20 address 192.168.20.254/24
set interfaces loopback lo address 1.1.1.1/32
set protocols static route 2.2.2.2/32 interface eth1

set protocols bgp system-as 100
set protocols bgp neighbor 2.2.2.2 remote-as 200
set protocols bgp neighbor 2.2.2.2 address-family ipv4-unicast
set protocols bgp neighbor 2.2.2.2 ebgp-multihop 2
set protocols bgp neighbor 2.2.2.2 update-source lo
set protocols bgp address-family ipv4-unicast network 192.168.10.0/24
set protocols bgp address-family ipv4-unicast network 192.168.20.0/24
set protocols bgp address-family ipv4-unicast aggregate-address 192.168.0.0/16 summary-only

ルータ2(追加で必要となるコマンド)

set protocols static route 1.1.1.1/32 interface eth1
set protocols bgp neighbor 1.1.1.1 address-family ipv4-unicast
set protocols bgp neighbor 1.1.1.1 ebgp-multihop 2
set protocols bgp neighbor 1.1.1.1 remote-as 100
set protocols bgp neighbor 1.1.1.1 update-source lo
set protocols bgp peer-group PEER address-family ipv4-unicast nexthop-self

解説

ルータ1では、まずインタフェースの設定を行っています。
また、1つ目のブロックの最後でスタティックルートの設定をしています。
今回はeBGPピアもループバックインタフェース同士で組むため、対向ルータのループバックインタフェースへの到達性を確保する必要があります。

2つ目のブロックでBGPに関する設定を行っています。
ルータ2では、iBGPの設定の時点でsystem-asを指定しているため、こちらは再び設定する必要はありません。

ルータ1では、192.168.10.0/24と192.168.20.0/24をアドバタイズする必要があるためnetworkコマンドを実行する必要があります。
また、これらを192.168.0.0/16へ集約するために、aggregate-addressコマンドを使用しています。
networkコマンドで192.168.0.0/16を指定することで集約ができるという発想もありますが、BGPで経路集約をする際にはBGPテーブルに登録されれいる経路である必要があるため、個別の経路を指定した後に経路集約コマンドを行う必要があります。
また、オプションのsummary-onlyを指定することで、集約前の経路がアドバタイズされることを防ぎます。

ルータ2ではネクストホップセルフの設定を行っています。
こちらがないと、AS200内の他のルータがAS100からアドバタイズされた経路情報を学習することができませんので、必須となります。




以上となります。

1つの例題になるべくすべての要素を詰め込んだため、それなりに複雑なトポロジになってしまいました。
そのため、ご自身のペースに合わせて、「経路集約は一旦やらない」「物理インタフェース同士でピアを組むようにする」など、一部問題を省略しても良いかと思います。


お疲れ様でした

補足

・ネクストホップセルフに関して
通常、BGPでは、eBGPピアからアドバタイズされた経路は他のiBGPピアへアドバタイズする。といった仕様があります。
そのため、今回の構成でもルータ2でネクストホップセルフを動作させる必要はないのではないか、という考えが浮かびます。
ですが、今回の場合、ルータ2以外はルータ1への経路情報を持っていません。
そのため、経路の学習はできても、ネクストホップの解決が不可能で、ルーティングテーブルへの登録が行われず、結果学習されていないように見える。
といった現象が発生します。
そのため、ネクストホップセルフをルータ2で動作させて、その他のルータのネクストホップの解決を行っています。

VyOSでDMVPNを設定する

VyOSでDMVPNを設定する際に必要となる設定コマンド

GREトンネルインタフェースの設定をする

トンネルインタフェースを作成する

set interface tunnel <tun> address <IPアドレス>/32

トンネルの送信元を指定する

set interface tunnel <tun> source-interface <WANインタフェース>
または

set interface tunnel <tun> source-address <WANインタフェースのIPアドレス>

トンネルモードをmGREに設定する

set interface tunnel <tun> encapsulation gre

set interface tunnel <tun> enable-multicast

キーIDを指定する

set interface tunnel <tun> parameters ip key <keyID>


NHRPの設定をする

・NHSでの設定

ネットワークIDを指定する

set protocols nhrp tunnel <tun> network-id <ID>

マルチキャストを有効にする

set protocols nhrp tunnel <tun> multicast dynamic

リダイレクトを有効にする

set protocols nhrp tunnel <tun> redirect

registration no-uniqueを有効にする

set protocols nhrp tunnel <tun> registration-no-unique

・NHCでの設定

ネットワークIDを指定する

set protocols nhrp tunnel <tun> network-id <ID>

マルチキャストを有効にする

set protocols nhrp tunnel <tun> multicast <ハブのNBMAアドレス>

NHSのトンネルIPと物理IPを指定する

set protocols nhrp tunnel <tun> nhs tunnel-ip <hub-tunnel-ip> nbma <hub-nbma-ip>

ショートカットを有効にする

set protocols nhrp tunnel <tun> shortcut

registration no-uniqueを有効にする

set protocols nhrp tunnel <tun> registration-no-unique


IPsecプロファイルを作成する

IKEグループとの紐付けを行う

set vpn ipsec profile <プロファイル名> ike-group <IKEグループ>

ESPグループとの紐付けを行う

set vpn ipsec profile <プロファイル名> esp-group <ESPグループ>

トンネルインタフェースとの紐付けを行う

set vpn ipsec profile <プロファイル名> bind tunnel <tun>

認証方式を指定する

set vpn ipsec profile <プロファイル名> authentication mode <認証方式>

認証用の文字列を設定する

set vpn ipsec profile <プロファイル名> authentication pre-shared-secret <鍵文字列>

また、これらに加えてIPsecの設定知識も必要となります
IPsecの設定については以前のブログで紹介しておりますので、下記のURLからご確認ください

https://yulyu-vyos.hatenadiary.jp/entry/2026/03/02/210913

それぞれ、注意点等を説明します。

・GREトンネルインタフェース作成

Ciscoと仕様は似ています。
mGREとするため、トンネルの宛先の指定は不要となります。
また、Ciscoでは「gre multipoint」という特別なモードが用意されていましたが、VyOSではmGREがモードとして存在しているのではなく、GREでマルチキャストを有効にするといった方法でmGREを実現しています。

また、IPアドレスはプレフィックスを/32とすることが推奨されています(徹底しましょう)

・NHRPの設定

Ciscoと設定内容は似ていますが、registrationコマンドが必須となっている(推奨されている)ことに注意が必要です。
NHSではマルチキャストはdynamicで有効にしますが、NHCではマルチキャストをNHSに向ける必要があるため、NHSのNBMAアドレスを指定する必要がある点に注意が必要です。

そして、NHC側でNHSの情報を登録する際、Ciscoよりもシンプルに指定することができます。

・IPsecプロファイルを作成する

VyOSでは、通常のIPsecやGRE over IPsecではIPsecプロファイルを使用した設定方法が不可能ですが、DMVPNではこちらの方法を使用することができます(逆にIPsecプロファイルの仕様以外の設定方法は不可能です)

IPsecプロファイルの仕様はCiscoと似ており、トンネルインタフェースに適用します。
また、これとは別にset vpn ipsec interface コマンドでWANインタフェースを指定する必要もありますので、注意が必要です(後の例題で詳細を解説します)

大きな注意点等は以上になります
続いて、例題となります。


例題

ルータ1

set interfaces ethernet eth1 address 100.0.0.1/24

set interfaces tunnel tun0 address 192.168.100.1/32
set interfaces tunnel tun0 enable-multicast
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 parameters ip key 1
set interfaces tunnel tun0 source-interface eth1

set protocols nhrp tunnel tun0 network-id 1
set protocols nhrp tunnel tun0 multicast dynamic
set protocols nhrp tunnel tun0 redirect
set protocols nhrp tunnel tun0 registration-no-unique

set vpn ipsec ike-group IKE lifetime 3600
set vpn ipsec ike-group IKE proposal 10 dh-group 14
set vpn ipsec ike-group IKE proposal 10 encryption aes256
set vpn ipsec ike-group IKE proposal 10 hash sha256
set vpn ipsec esp-group ESP lifetime 10800
set vpn ipsec esp-group ESP mode transport
set vpn ipsec esp-group ESP proposal 10 encryption aes256
set vpn ipsec esp-group ESP proposal 10 hash sha256

set vpn ipsec interface eth1
set vpn ipsec profile PRO authentication mode pre-shared-secret
set vpn ipsec profile PRO authentication pre-shared-secret vyos
set vpn ipsec profile PRO bind tunnel tun0
set vpn ipsec profile PRO esp-group ESP
set vpn ipsec profile PRO ike-group IKE

ルータ2

set interfaces ethernet eth1 address 100.0.0.2/24

set interfaces tunnel tun0 address 192.168.100.2/32
set interfaces tunnel tun0 enable-multicast
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 parameters ip key 1
set interfaces tunnel tun0 source-interface eth1

set protocols nhrp tunnel tun0 network-id 1
set protocols nhrp tunnel tun0 multicast 100.0.0.1
set protocols nhrp tunnel tun0 nhs tunnel-ip 192.168.100.1 nbma 100.0.0.1
set protocols nhrp tunnel tun0 shortcut
set protocols nhrp tunnel tun0 registration-no-unique

set vpn ipsec ike-group IKE lifetime 3600
set vpn ipsec ike-group IKE proposal 10 dh-group 14
set vpn ipsec ike-group IKE proposal 10 encryption aes256
set vpn ipsec ike-group IKE proposal 10 hash sha256
set vpn ipsec esp-group ESP lifetime 10800
set vpn ipsec esp-group ESP mode transport
set vpn ipsec esp-group ESP proposal 10 encryption aes256
set vpn ipsec esp-group ESP proposal 10 hash sha256

set vpn ipsec interface eth1
set vpn ipsec profile PRO authentication mode pre-shared-secret
set vpn ipsec profile PRO authentication pre-shared-secret vyos
set vpn ipsec profile PRO bind tunnel tun0
set vpn ipsec profile PRO esp-group ESP
set vpn ipsec profile PRO ike-group IKE

ルータ3

set interfaces ethernet eth1 address 100.0.0.3/24

set interfaces tunnel tun0 address 192.168.100.3/32
set interfaces tunnel tun0 enable-multicast
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 parameters ip key 1
set interfaces tunnel tun0 source-interface eth1

set protocols nhrp tunnel tun0 network-id 1
set protocols nhrp tunnel tun0 multicast 100.0.0.1
set protocols nhrp tunnel tun0 nhs tunnel-ip 192.168.100.1 nbma 100.0.0.1
set protocols nhrp tunnel tun0 shortcut
set protocols nhrp tunnel tun0 registration-no-unique

set vpn ipsec ike-group IKE lifetime 3600
set vpn ipsec ike-group IKE proposal 10 dh-group 14
set vpn ipsec ike-group IKE proposal 10 encryption aes256
set vpn ipsec ike-group IKE proposal 10 hash sha256
set vpn ipsec esp-group ESP lifetime 10800
set vpn ipsec esp-group ESP mode transport
set vpn ipsec esp-group ESP proposal 10 encryption aes256
set vpn ipsec esp-group ESP proposal 10 hash sha256

set vpn ipsec interface eth1
set vpn ipsec profile PRO authentication mode pre-shared-secret
set vpn ipsec profile PRO authentication pre-shared-secret vyos
set vpn ipsec profile PRO bind tunnel tun0
set vpn ipsec profile PRO esp-group ESP
set vpn ipsec profile PRO ike-group IKE

解説

それぞれ解説します


まず、ハブルータであるルータ1です。

・2つ目のブロックでトンネルインタフェースの設定をしています
注意点としては、mGREなので送信元の指定だけであり、宛先の指定は不能です

・3つ目のブロックでNHRPの設定をしています
特に注意点はないです

・4つ目のブロックでIKE/ESPグループを指定しています
通常のIPsecと同様の手順ですが、DMVPN特有の動作として、必ずトランスポートモードを指定する必要があります。
トンネルモードを指定した状態でDMVPNの設定を継続すると途中でエラーとなり続行不能となるため、注意が必要となります。
特に、VyOSではGRE over IPsecでトランスポートモードが指定できず、トンネルモードを指定する必要があるため、かなり違和感が大きいですが、DMVPNでは必ずトランスポートモードとなります。

・最後のブロックでIPsecプロファイルの設定をしています
IPsecのインタフェースとして指定するのはWANインタフェースですが、IPsecプロファイルの適用はトンネルインタフェースにするので注意が必要です。



続いて、NHCです。

NHCは2台ありますが、設定内容は似ているため、今回はルータ3の設定をベースに説明します。

・2,4,5個目のブロックでの注意点等はNHSと一緒です。

・3つ目のブロックでNHRPの設定をしています
NHSとの設定内容等は似ていますが、redirectはshotcutにする必要があることと、NHSの指定が必要となる点に注意が必要です。






以上となります。

 

お疲れ様でした

MOS Excel Standard 関数一覧 (関数表)

こんにちは

 

再びExcelのブログとなります。

以前MOS Excel Expertに関する投稿を行いましたが、その際の反響が思ったよりも大きかったため、その続編として、今回はMOS Excel standardの関数一覧を公開します。

こちらも個人利用を目的としたものでしたが、友人に公開を勧められたため公開いたします。

 

関数表

関数 説明・例
SUM 範囲の合計を求める

例:セルA1からB10の合計を求める
=SUM(A1:B10)
AVERAGE 範囲の平均を求める

例:セルA1からB10の平均を求める0
=AVERAGE(A1:B10)
MAX 範囲内で最大の値を抽出する

例:セルA1からA100の中の最大の値を探す
=MAX(A1:A100)
MIN 範囲内で最小の値を抽出する

例:セルA1からA100の中の最小の値を探す
=MIN(A1:A100)
COUNT 数値が入力されているセルの数を数える

例:セルA1からC10の中の数値が入力されているセルの数を数える
=COUNT(A1:C10)
COUNTA 空白以外のセル(文字や数字など何かが入力されているセル)の数を数える

例:セルA1からC10の中で空白でないセルの数を求める
=COUNTA(A1:C10)
COUNTBLANK 空白のセルの数を数える

例:セルA1からC10の中で空白のセルを数える
=COUNTBLANK(A1:C10)
例題
=COUNT(A1:A10)
→5

=COUNTA(A1:A10)
→7

=COUNTBLANK(A1:A10)
→3

※もし文字が入力されているセルの数だけを求めたい場合
=COUNTA(A1:10)-COUNT(A1:A10)
→2
IF 条件に応じた表示を行う

例:A1が70以上であった場合「合格」、未満であった場合は「不合格」と表示させる
=IF(A1>=70,"合格","不合格")

例:A1が1000より大きければ「オーバー」、それ以外なら何も表示しないようにする。
=IF(A1>1000,"オーバー","")
SORT 指定した範囲を並べ替えた表を作成する。

例:A1からB10のデータを並べ替えて表示する。また並び替えはA列のデータを基準に行うものとし、降順で表示する。
=SORT(A1:B10,1,-1)

※2つ目の引数として、並び替えの対象となる列の”番号”を指定する。よって=SORT(A1:B10,A,-1)と言った指定方法は行わない。
※3つ目の引数として、降順/昇順を指定する。
1なら昇順、-1なら降順となる。
UNIQUE 重複を除いた一覧を作成する

例:A1:A200の範囲から重複を取り除いた表を作成する
=UNIQUE(A1:A200)
RANDBETWEEN 指定した範囲内でランダムな値を表示する

例:1から100の中のランダムな値を表示する
=RANDBETWEEN(1,100)

例:100,200,300,400,500のランダムな値を表示する
=RANDBETWEEN(1,5)*100
SEQUENCE 連続した数値の配列を作成する

例:縦方向の1から10までの連番を作成する
=SEQUENCE(10,1)

例:横方向への1から10までの連番を作成する
=SEQUENCE(1,10)

例:縦方向の50から始まり1で終わる連番を作成する
=SEQUENCE(50,1,50,-1)

解説:SEQUENCE関数は下記のフォーマットとなっている

SEQUENCE(縦何行、横何列、[開始値]、[変化値])

よって、最初の例の一番最初の値の「10」は10番目までの連番を作るという意味ではなく、縦にあとに10個の値を作ってねという指示になる。

2つ目の例題では、2つ目の値により、あと横に10個の値を作ってねという指示をしていることとなる。
RIGHT 指定したセルの「右から〇〇文字」を取り出す

例:セルA1に入力されている文字の右側3文字を取り出す
=RIGHT(A1,3)
LEFT 指定したセルの「左から〇〇文字」を取り出す

例:セルA1に入力されている文字の左側3文字を取り出す
=LEFT(A1,3)
MID 指定したセルから「自分が指定した位置から〇〇文字」取り出す

例:セルA1に入力されている文字の4文字目から3文字取り出す
=MID(A1,4,3)
例題

・A1から県名を抽出する
=RIGHT(A1,3)

・A1から番地を抽出する
=LEFT(A1,6)

・A1から区名を抽出する
=MID(A1,4,3)
UPPER 指定したセルの文字をすべて大文字にする

例:A1の英語文字列をすべて大文字にする
=UPPER(A1)
LOWER 指定したセルの文字をすべて小文字にする

例:A1の英語文字列をすべて小文字にする
=LOWER(A1)
LEN 文字数を数える

例:セルA1の文字数を数える
=LEN(A1)
例題

=UPPER(A1)
→TOKYO DOME TOUR

=LOWER(A1)
→tokyo dome tour

=LEN(A1)
→15
※LEN関数では空白も文字としてカウントされる
CONCAT 複数の文字列を結合する

例:セルA1とB1に入力されている文字を結合する
=CONCAT(A1,B1)
TEXTJOIN 複数の文字列を結合する。また結合する際に区切り文字を挿入する

例:セルA1からC1に入力されている文字を結合する。また、結合の際にそれぞれの間に「・」を挿入する
=TEXTJOIN("・",TRUE,A1:C1)

※真ん中のTRUEは「空白を無視するか」を指定する。通常は無視するため、TRUEを指定するか空白のままで問題ない。

また、区切り文字を「""」とすることで、実質区切り文字なしでの結合が可能となる。そのためCONCATの完全上位互換となる。

例:=TEXTJOIN("",,A1:C1)
例題


=CONCAT(A1:C1)
→09012345678

=TEXTJOIN("-",TRUE,A1:C1)
→090-1234-5678

 

前回同様、当ブログページごと印刷して紙ベースで利用することで試験前の追い込みに使用することができると思います。

 

最後に、合格談について載せようと思います(こちらは前回のExpertのもののコピペです)

 

まず、この試験を受けるにあたって、模擬試験プログラムによる練習は行いました。
様々な出版社様がテキストや参考書を出版しており、中には模擬試験プログラムも付録されているものが多くあります。
このプログラムの完成度は非常に高く、操作感覚もほぼ同じです。
また、内容の一致率もすごく、模擬のほうが難しいといった印象です。
そのため、模擬で安定して90%取得できれば十分だと思います。

 

また、当ページでは関数のみを記載していますが、もちろんExcelの試験ですので、関数以外のグラフ操作や表操作など、様々な分野からの出題があります。

そのため、「関数が全くわからない...」という方も絶望感を持たずに、ふんわりと理解する程度でよいと思います。

また、こちらを知らない人が意外と多いのですが、

Excel画面のこちら。

この「fx」をクリックすると、関数検索画面を表示することができます。
そこで、「合計」などのキーワードを入力することで、内容にあった関数がいくつか羅列された状態で表示されるため、問題文中にある語句を入力してみたら、お目当ての関数を見つけることができるかもしれません。

実際、僕が他人に教える際にはこの機能を優先的に教えます。
また、MOS Excelにて、この機能を利用して合格した方が知り合いにいますので、ぜひご活用ください。

VyOSでOSPFを設定する

VyOSとCiscoでのOSPFの違い

基本的にCiscoと同様の動作をします。
コマンドも、Ciscoで使用されているコマンドをそのままVyOSに移したかのような設計になっています。

主なコマンドを紹介します。

説明 コマンド
OSPFを動作させる(ネットワーク単位で) set protocols ospf area <エリアID> network <ネットワーク>/<プレフィックス>
OSPFを動作させる(インタフェース単位で) set protocols ospf interface <インタフェース> area <エリアID>
OSPFのルータIDを設定する set protocols ospf parameters router-id <ルータID>
パッシブインタフェースの設定をする set protocols ospf interface <インタフェース> passive
OSPFのプライオリティを設定する set protocols ospf interface <インタフェース> priority <値>
OSPFの各インターバルを変更する set protocols ospf interface <インタフェース> hello-interval <秒>
set protocols ospf interface <インタフェース> dead-interval <秒>
エリアタイプを変更する set protocols ospf area <エリアID> area-type <エリアタイプ>
OSPFの認証を行う(プレーンテキスト) set protocols ospf interface <インタフェース> authentication plaintext-password <文字列>
OSPFの認証を行う(MD5認証) set protocols ospf interface <インタフェース> authentication md5 key-id <キーID> md5-key <文字列>
MTUの不一致を検出しないようにする set protocols ospf interface <インタフェース> mtu-ignore
OSPFでデフォルトルートをアドバタイズする set protocols ospf default-information originate [metric <値>] [metric-type <タイプ>]
OSPFのバーチャルリンクを設定する set protocols ospf area <エリアID> virtual-link <対向ルータID>
エリア間の経路集約を行う set protocols ospf area <エリアID> range <ネットワーク>/<プレフィックス>
AS外の経路集約を行う set protocols ospf summary-address <ネットワーク>/<プレフィックス>

基本的にはCiscoと同様のコマンドを使用します。

また注意点としては、インタフェースで設定を行う場合です。
プライオリティ値やMTUの設定などはインタフェースで行い、Ciscoではインタフェースコンフィグレーションモードで設定を行っていたため、VyOSでも「set interface」コマンドで設定を行うのかと予測できますが、実際には「set protocols ospf interface」と言ったように、ルータコンフィギュレーションモードの中でインタフェースを指定しているような設定方法となっています。

後続するコマンドはCiscoと同じものが多いです。

 

では、具体的な設定例をいくつか紹介します。

 

 


例題1

コマンド

ルータ1

set interfaces ethernet eth1 address 192.168.1.1/24

set protocols ospf area 0 network 0.0.0.0/0
set protocols ospf interface eth1 authentication md5 key-id 1 md5-key vyos
set protocols ospf interface eth2 passive
set protocols ospf parameters router-id 1.1.1.1

ルータ2

set interfaces ethernet eth1 address 192.168.1.2/24
set interfaces ethernet eth2 address 10.1.0.1/24

set protocols ospf interface eth1 area 0
set protocols ospf interface eth1 authentication md5 key-id 1 md5-key vyos
set protocols ospf interface eth2 area 1
set protocols ospf parameters router-id 2.2.2.2
set protocols ospf area 1 area-type stub no-summary

ルータ3

set interfaces ethernet eth1 address 10.1.0.2/24
set interfaces loopback lo address 3.3.3.3/32

set protocols ospf area 1 area-type stub
set protocols ospf interface eth1 area 1

解説

・ルータ1


2行目のコマンドでOSPFを有効にしています。
今回は0.0.0.0/0で、全ネットワークでOSPFが動作するようにしました。
この設定方法は、全インタフェースが同一エリアである際には、設定項目を減らすことができるので強力な策となります。
ただし、0.0.0.0/0で全インタフェースが同一エリアに参加させられた後、特定のインタフェースのエリアを変更するといったことは不可能なため、注意が必要です。
192.168.1.0/24で指定を行い、特定のインタフェースやネットワークのみで指定していく方法を採用することも検討しましょう。

3行目のコマンドでMD5認証を有効にしています。Ciscoとは設定方法が若干異なるため注意が必要です。

4行目のコマンドでパッシブインタフェースの指定をしています。

5行目のコマンドでルータIDを手動設定しています。

 

・ルータ2


2行目と4つ目のコマンドで各インタフェース及びエリアでOSPFを有効にしています。

3行目のコマンドでMD5認証の設定を行っています。
鍵ID及び鍵文字列はそれぞれ対向のルータと合わせる必要があります。

6行目のコマンドでエリアタイプを指定しています。
Cisco同様、stubやnssa,トータリーエリアならそれらに「no-summary」キーワードをつける。といった設定方法になっています。

 

・ルータ3


2行目のコマンドでループバックインタフェースを作成しています。
Cisco同様、手動指定→ループバックインタフェース→物理インタフェースの順番でルータIDが決定します。
3行目のコマンドでネットワークタイプを指定しています。
またCisco同様、トータリーエリアならno-summaryキーワードをつけるのはABR(今回はルータ2)のみとなります。


例題2

コマンド

ルータ1

set interfaces ethernet eth1 address 100.0.0.1/24
set interfaces ethernet eth2 vif 10 address 192.168.0.254/24
set interfaces ethernet eth2 vif 20 address 192.168.1.254/24
set interfaces ethernet eth2 vif 30 address 192.168.2.254/24
set interfaces loopback lo address 1.1.1.1/32

set protocols ospf interface eth1 area 0
set protocols ospf interface eth2.10 area 10
set protocols ospf interface eth2.20 area 10
set protocols ospf interface eth2.30 area 10
set protocols ospf area 10 range 192.168.0.0/16

ルータ2

set interfaces ethernet eth1 address 100.0.0.2/24
set interfaces ethernet eth2 address 172.16.0.254/24
set interfaces loopback lo address 2.2.2.2/32

set protocols ospf interface eth1 area 0
set protocols ospf interface eth2 area 20

解説

・ルータ1


1つ目のブロックでインタフェースに関する設定を行っています。
2つ目のブロックでOSPFに関する設定を行っています。
まず、2つ目のブロックの一行目でエリア0の設定をeth1で有効にし、2~4行目でサブインタフェースでエリア10を有効にしています。
サブインタフェースでOSPFを有効にする際の注意点は問題文通りです。
そして、最後に経路集約の設定を行っています。
注意点としては、経路集約が行われるルータがABRとして認識されていなかった(エリア設定が間違っているなど)や、ルーティングテーブル上に集約対象のルートが存在しない、などの理由があると集約がうまく動作しません。そのため、ルーティングテーブルやインタフェースの設定などを確認しましょう。

 

・ルータ2


特に注意点などはありません。


例題3

コマンド

ルータ1

set interfaces ethernet eth1 address 192.168.1.1/24
set interfaces loopback lo address 1.1.1.1/32

set protocols ospf interface eth1 area 0

ルータ2

set interfaces ethernet eth1 address 192.168.1.2/24
set interfaces ethernet eth2 address 192.168.2.1/24
set interfaces loopback lo address 2.2.2.2/32

set protocols ospf interface eth1 area 0
set protocols ospf interface eth2 area 1
set protocols ospf area 1 virtual-link 3.3.3.3

ルータ3

set interfaces ethernet eth1 address 192.168.2.2/24
set interfaces ethernet eth2 address 192.168.3.1/24
set interfaces loopback lo address 3.3.3.3/32

set protocols ospf interface eth1 area 1
set protocols ospf interface eth2 area 2
set protocols ospf area 1 virtual-link 2.2.2.2

ルータ4

set interfaces ethernet eth1 address 192.168.3.2/24
set interfaces loopback lo address 4.4.4.4/32

set protocols ospf interface eth1 area 2

解説

・ルータ1,4


特に注意点はありません

 

・ルータ2,3


2つ目のブロックの最後でOSPFのバーチャルリンクの設定をしています。
注意点として、Cisco同様、バーチャルリンクの対向アドレスとして、対向ルータのルータIDを指定する必要があります。
そのため、今回は全ルータでループバックインタフェースを作成しましたが、このようにルータIDを管理しやすくするなどの工夫が大切になります。

 

 

 

 

以上となります。

お疲れ様でした

MOS Excel Expert 関数一覧

こんにちは

普段はネットワークやVyOSに関する内容をブログで扱っていますが、今回は珍しくExcelです。

というのも先日、仕事の関係でExcel Expertを取得することとなりました。

普段の職務からExcelは使用しているため、簡単に取得できると考えましたが、念の為と思い、Excel Expertに出題される関数をリスト化しました。

こちらは僕が個人利用する目的で作成し、Googleドキュメントにて作成したものですが、友人に見せたところ「公開したほうがいい」と助言を頂いたため、今回はこちらを公開します。

 

関数表 expert

関数 内容・例題
RANDARRAY 指定した範囲に、ランダムな値を発生させる。
例:10行3列のセルに1~10までのランダムな整数・少数を発生させる
=RANDARRAY(10,3,1,10,FALSE)

例:5行4列のセルに100,200,300の中からランダムな整数を発生させる
=RANDARRAY(5,4,1,3,TRUE)*100
IF もし○○であれば▽▽という処理を実現する。
例:E4が75以上であれば合格、以下なら空欄
=IF(E4>=75,"合格","")
AND 複数条件が「かつ」の場合に使用する。
例:E4が50以上かつ100以下
=AND(E4>=50,E4<=100)
OR 複数条件が「または」の場合に使用する。
例:E4が50以上、またはE5が30以上
=OR(E4>=50,E5>=30)
NOT もし○○でなければ、という条件を作成する。
例:E4が10でない場合
=NOT(E4=10)

例:E4が10、またはE5が20でない場合
=NOT(OR(E4=10,E5=20))
IFS 複数の条件を順番に判断し、条件に応じた結果を表示する。

例:E4が8000以上→A、6000以上→B、4000以上→C
=IFS(E4>=8000,"A",E4>=6000,"B",E4>=4000,"C")

例:どれにも合致しない場合のデフォルト値を設定
=IFS(E4>=8000,"A",E4>=6000,"B",TRUE,"C")
SWITCH 複数の値を検索し、一致した値に対する結果を表示する。
例:B5がAなら〇、Bなら▽
=SWITCH(B5,"A","〇","B","▽")

例:どれでもなければ×
=SWITCH(B5,"A","〇","B","▽","×")
SUMIF 範囲中から条件に一致するものの合計を算出する。
例:D4:D10 が「東京」の行の E4:E10 の合計
=SUMIF(D4:D10,"東京",E4:E10)
SUMIFS 複数条件をすべて満たす場合の合計を求める。
例:C3:C9 がリンゴ、D3:D9 が青森 → E3:E9 の合計
=SUMIFS(E3:E9,C3:C9,"リンゴ",D3:D9,"青森")
LET 数式内で使用する値に名前をつけて扱いやすくする。

例:得点(G4:I4)の平均を求め、得点+平均を計算
=LET(得点,G4:I4,平均,AVERAGE(得点),得点+平均)
MATCH 検索範囲でデータを検索し、位置を返す。
引数の最後:0=完全一致、-1=以上、1=以下

例:C4 が I3:M3 のどこにあるか
=MATCH(C4,I3:M3,0)
INDEX 指定した範囲の行と列の交点のデータを返す。
例:G4:K14 の 5行7列目
=INDEX(G4:K14,5,7)
NOW 現在の日付と時刻を表示する。
=NOW()
TODAY 現在の日付を表示する。
=TODAY()

例:本日より前のデータ(E4:E100)の個数をカウント
=COUNTIF(E4:E100,"<"&TODAY())
WEEKDAY 日付に対する曜日を 1〜7 または 0〜6 の値で返す。

引数の最後には以下を指定:
1 日曜基準(1〜7)
2 月曜基準(1〜7)
3 月曜基準(0〜6)

例:A1 の曜日を月曜=0 で表示
=WEEKDAY(A1,3)
WORKDAY 土日や祝日を除いて、開始日から指定日数後の日付を求める。
例:A1 から 10 営業日後(祝日は E1:E12)
=WORKDAY(A1,10,E1:E12)
NPER 指定された利率と金額で、返済回数や預入回数を求める。

例:10万円を年率5%で借入、毎月5000円返済
=NPER(0.05/12,-5000,100000)

ROUNDUP と併用すると回数を整数化できる。
ROUNDUP 数値を指定した桁で切り上げる。
例:1234.56 → 小数なしに切り上げ
=ROUNDUP(1234.56,0)
例:10 の位で切り上げ
=ROUNDUP(1234.56,-1)
例:小数第1位で切り上げ
=ROUNDUP(1234.56,1)
PMT 指定された利率と期間で、定期支払い額を求める。

例:10万円を年利5%で借り入れ、1年で返済
=PMT(0.05/12,12,100000)

例:10万円を年利2.5%で借り入れ、2年で返済
=PMT(0.025/12,24,100000)
FILTER リストから条件に合うデータを抽出する。

例:B3:D11 のうち、D3:D11 が「A」の行の B3:B11 を抽出
=FILTER(B3:B11, D3:D11="A", "エラー")
SORTBY 複数のキーを用いて並び替える。
例:B4:H36 を並び替え、
・G4:G36 を降順(-1)
・F4:F36 を昇順(1)
=SORTBY(B4:H36, G4:G36, -1, F4:F36, 1)

 

こちらを当ブログページごと印刷するなどして、紙ベースで使用すると試験前などの追い込みに使用できるかと思います。

 

では最後に、僕のExcel Expert受験の感想を述べたいと思います。

まず、この試験を受けるにあたって、模擬試験プログラムによる練習は行いました。
様々な出版社様がテキストや参考書を出版しており、中には模擬試験プログラムも付録されているものが多くあります。
このプログラムの完成度は非常に高く、操作感覚もほぼ同じです。
また、内容の一致率もすごく、模擬のほうが難しいといった印象です。
そのため、模擬で安定して90%取得できれば十分だと思います。

また、個人的に今回の学習を通して、PMTやNPERなどのマイナーかつ使用用途が限られている関数がいくつかあると感じました。
が、これらは出題されませんでした。
知り合いに聞いたところ、「最近は出題されていない気がする」という発言をしていたため、そこまで重く見ないで良いと思います。

また、当ページでは関数のみを記載していますが、もちろんExcelの試験ですので、関数以外のグラフ操作や表操作など、様々な分野からの出題があります。

そのため、「関数が全くわからない...」という方も絶望感を持たずに、ふんわりと理解する程度でよいと思います。

また、こちらを知らない人が意外と多いのですが、

Excel画面のこちら。

この「fx」をクリックすると、関数検索画面を表示することができます。
そこで、「合計」などのキーワードを入力することで、内容にあった関数がいくつか羅列された状態で表示されるため、問題文中にある語句を入力してみたら、お目当ての関数を見つけることができるかもしれません。

実際、僕が他人に教える際にはこの機能を優先的に教えます。
また、Excel のスタンダードの方でしたが、この機能を利用して合格した方が知り合いにいますので、ぜひご活用ください。

Yulyu-VyOSドキュメント TOP

当ブログでは、VyOSを使用したルータの設定方法等を紹介しています。

 

VyOS

VyOSは無料で使用できるルータOSであり、非常に高度な設定が可能になっており、無料とは思えないクオリティとなっています。

また、他の無料ルータOSに比べて、軽量動作させることが可能で、GNS3等でのトポロジ作成に非常に役立ちます。

 

また、医療現場への導入やAWS環境のアクセスルータとしてライセンス費用がかからないため重宝されているなどの実績も近年増加しているそうです。

 

サイトマップ

・ルーティング関係

・インフラストラクチャサービス関係

・その他