


WAN回線を冗長構成にし、回線の使用状況によって経路を切り替えるLuaスクリプトです。
LAN側のホストをIPアドレスで3つのグループに分け、各グループ毎に経路を指定します。グループ1のPCからのインターネットアクセスを優先するため、回線の受信負荷率によって以下のように各グループの経路を切り替えます。
- グループ1
優先度:高。常にISP1を経由してインターネットアクセスを行う。 - グループ2
通常はISP1の回線を経由してインターネットアクセスを行う。ISP1の回線使用率が上限閾値を超えたら、ISP2の回線へと経路を切り替える。その後、ISP1の回線使用率が下限閾値より下がったら、ISP1の回線を使用するように経路を元に戻す。 - グループ3
常にISP2を経由してインターネットアクセスを行う。
RTX1200の設定例
| 経路の設定 |
ip route default gateway pp 1 filter 11 12 gateway pp 2 filter 13 |
|---|---|
| LANの インタフェースの設定 (LAN1ポートを使用) |
ip lan1 address 192.168.0.1/24 |
| WANの インタフェースの設定 (LAN2ポートを使用) |
pp select 1 |
| WANの インタフェースの設定 (LAN3ポートを使用) |
pp select 2 |
| NATの設定 |
nat descriptor type 1 masquerade |
| DNSの設定 |
dns server select 1 (ISP1から指定されたDNSサーバーのIPアドレス) any . restrict pp 1 |
| フィルタの設定 |
ip filter 11 pass 192.168.0.0/26 * |
| Luaスクリプトの スケジュール設定 |
schedule at 1 startup * lua (Luaスクリプトファイル名) |
Luaスクリプト例
| 設定値 |
-- 監視間隔 (1-864000 秒) -- ISP1回線の受信方向の回線負荷が上がった状態と判断する閾値(1 - 99 %) -- ISP1回線の受信方向の回線負荷が下がった状態と判断する閾値(1 - 99 %) -- 出力する SYSLOG のレベル(info, debug, notice) |
|---|---|
| show status pp コマンドの 実行結果から受信負荷率を求める関数 |
function pp_load_info(num) rtn, str = rt.command(cmd) if (t[1]) then return rtn, rcv, snd, str |
| 現在の日時を取得する関数 |
function time_stamp() t = os.date("*t") |
| メインルーチン |
local rtn, rcv, snd, str local cmd_high = "ip route default gateway pp 1 filter 11 gateway pp 2 filter 12 13" while (true) do while (high) do |