




VPNのバックアップ動作を監視し、バックアップ回線への切り替え、およびメイン回線への復帰を管理者へメールで通知するLuaスクリプトです。
トンネルバックアップ、またはネットワークバックアップについて、バックアップ動作の際に出力されるログをLuaスクリプトで監視しています。
RTX1200(1) トンネルバックアップの設定例
| ルーターの名前の設定 |
set ROUTER_NAME=(ルーターの名前) |
|---|---|
| LANの インタフェースの設定 (LAN1ポートを使用) |
ip lan1 address 172.16.100.1/24 |
| WANの インタフェースの設定 (LAN2ポートを使用) |
pp select 1 |
| WANの インタフェースの設定 (LAN3ポートを使用) |
pp select 2 |
| NATの設定 |
nat descriptor type 1 masquerade |
| VPN(IPsec)の設定 (共通項目) |
ipsec auto refresh on |
| VPN(IPsec)の設定 (主系) |
tunnel select 1 |
| VPN(IPsec)の設定 (従系) |
tunnel select 2 |
| DHCPの設定 |
dhcp service server |
| Luaスクリプトの スケジュール設定 |
schedule at 1 startup * lua (Luaスクリプトファイル名) |
RTX1200(1) ネットワークバックアップの設定例
| ルーターの名前の設定 |
set ROUTER_NAME=(ルーターの名前) |
|---|---|
| 経路の設定 |
ip route 172.16.1.0/24 gateway tunnel 1 keepalive 1 gateway tunnel 2 weight 0 |
| IPキープアライブの設定 |
ip keepalive 1 icmp-echo 10 6 (グローバルアドレス1) log=on |
| LANの インタフェースの設定 (LAN1ポートを使用) |
ip lan1 address 172.16.100.1/24 |
| WANの インタフェースの設定 (LAN2ポートを使用) |
pp select 1 |
| WANの インタフェースの設定 (LAN3ポートを使用) |
pp select 2 |
| NATの設定 |
nat descriptor type 1 masquerade |
| VPN(IPsec)の設定 (共通項目) |
ipsec auto refresh on |
| VPN(IPsec)の設定 (主系) |
tunnel select 1 |
| VPN(IPsec)の設定 (従系) |
tunnel select 2 |
| DHCPの設定 |
dhcp service server |
| Luaスクリプトの スケジュール設定 |
schedule at 1 startup * lua (Luaスクリプトファイル名) |
RTX1200(2)の設定例
| LANの インタフェースの設定 (LAN1ポートを使用) |
ip lan1 address 172.16.1.1/24 |
|---|---|
| WANの インタフェースの設定 (LAN2ポートを使用) |
pp select 1 |
| NATの設定 |
nat descriptor type 1 masquerade |
| VPN(IPsec)の設定 (共通項目) |
ipsec auto refresh on |
| VPN(IPsec)の設定 |
tunnel select 1 |
| DHCPの設定 |
dhcp service server |
RTX1200(3)の設定例
| LANの インタフェースの設定 (LAN1ポートを使用) |
ip lan1 address 172.16.1.2/24 |
|---|---|
| WANの インタフェースの設定 (LAN2ポートを使用) |
pp select 1 |
| NATの設定 |
nat descriptor type 1 masquerade |
| VPN(IPsec)の設定 (共通項目) |
ipsec auto refresh on |
| VPN(IPsec)の設定 |
tunnel select 1 |
Luaスクリプト例
| 設定値 |
-- バックアップに切り替え/切り戻りを検出するパターンを選択(1 - 3) -- バックアップに切り替わった時に通知するshow系コマンドをカンマで区切って列挙する -- メインに復帰した時に通知するshow系コマンドをカンマで区切って列挙する -- メールの設定 -- メールの送信に失敗した時に出力する SYSLOG のレベル(info, debug, notice) |
|---|---|
| コマンドの実行結果を出力する関数 |
function exec_command(cmd) rtn, str = rt.command(cmd) return rtn, string.format("# %s\r\n%s\r\n", cmd, str) |
| 設定された環境変数 "ROUTER_NAME"を取得する関数 |
function router_name() rtn, str = rt.command(cmd) return name |
| 現在の日時を取得する関数 |
function time_stamp() t = os.date("*t") |
| メインルーチン |
local rtn, str, rt_name -- ログの中で検出したい文字列 rt_name = router_name() while (true) do for i, cmd in ipairs(cmd_switch_tbl) do mail_tbl.subject = string.format("switched to backup (%s)", time_stamp()) rtn, str = rt.syslogwatch(ptn_recover_tbl[log_ptn]) for i, cmd in ipairs(cmd_recover_tbl) do mail_tbl.subject = string.format("recovered from backup (%s)", time_stamp()) |
[注釈の説明]
注釈1:
パターン3を使用する場合は、RTX1200(1)の設定に以下のコマンドを追加してください。
ip route change log on