はじめに
VyattaではNETCONF Protocolという機構を利用してConfigをネットワーク越しに設定することができますが、冗長構成のVyattaではset system config-sync
を用いることで片側でのcommit時に構成定義の同期が可能となります。
本記事ではVRRP構成のVyattaを利用し、実際に確認しました。
環境情報
- Debian 4.19.150-0vyatta1
1系側での設定
対向のIPアドレスを以下のように入れておき
set system config-sync remote-router xx password '********' set system config-sync remote-router xx sync-map TEST set system config-sync remote-router xx username vyatta
対向に同期させたい設定項目を以下のように記載しておきます。
set system config-sync sync-map TEST rule 1 action include set system config-sync sync-map TEST rule 1 location 'service firewall'
ただし、この状態であれば以下のように対向側とのコネクションの成立に失敗します。
# commit syncing configuration to remote-router X.X.X.X .. config-sync error X.X.X.X:Remote:X.X.X.X: Connect failed:Could not open socket to X.X.X.X:830
2系側での設定
上記にある通りで830番ポートで接続に来るため以下を投入します。
# set service netconf # set service ssh port 830
この設定を入れると
$ show system connections ... tcp 0 0 0.0.0.0:830 0.0.0.0:* LISTEN tcp6 0 0 :::830 :::* LISTEN
該当ポートがリッスン状態となります。
この状態でも同期には以下のように失敗するので
# commit ... config-sync error X.X.X.X:Sync[X.X.X.X]: Remote user vyatta not in secrets group
最後に1系側で指定したユーザに以下のようなグループ定義を与えます。
# set system login group secrets # set system login user vyatta group secrets
config-syncの確認
同状態で新たな定義を追加して
# set security firewall name SERVICE-ALLOW rule XX action accept # set security firewall name SERVICE-ALLOW rule XX destination address ...
1系にてcommitを行うと、標準出力にて"sync done"と出力されて
syncing configuration to remote-router X.X.X.X .. remote-router X.X.X.X sync done
2系にて設定値を確認すると確かに定義が入っていました。
終わりに
今回はfirewall部分だけでしたが、configuration sync-maps部分を追加すればどの定義部分を同期化するかを選択できるのでそこをカスタマイズすることで任意の設定を同期化可能です。
以上、ご参考になれば幸いです。