

リモートPCからのキーパケットを受けて出力するログを監視し、動的にVPNの設定を追加、削除するLuaスクリプトです。
リモートPCからルーターやLAN側にあるサーバーのメンテナンスを行うという状況において、必要なときだけルーターにVPNの設定を追加し、リモートPCとルーターまたはLAN側のサーバーとの間で安全な通信を行うことができます。
RTX1200の設定例
| LANの インタフェースの設定 (LAN1ポートを使用) |
ip lan1 address 192.168.0.1/24 |
|---|---|
| WANの インタフェースの設定 (LAN2ポートを使用) |
pp select 1 |
| NATの設定 |
nat descriptor log on |
| DHCPの設定 |
dhcp service server |
| DNSの設定 |
dns server (ISPより指定されたDNSサーバーのIPアドレス) |
| SYSLOGの設定 |
syslog notice on |
| Luaスクリプトのスケジュール設定 |
schedule at 1 startup * lua (Luaメインスクリプトファイル名) |
Luaスクリプト例(メインスクリプト)
| 設定値 |
-- トンネル生成キーパケット受信待ち時間(1 - 864000 秒) -- トンネル生成キーパケット受信回数(1, 2 ..) -- 生成したトンネルを削除するまでの時間(1 - 864000 秒) -- キーパケットのプロトコル(TCP、UDP) -- トンネル生成用キーパケットのポート番号(最大 65535) -- トンネル消去用キーパケットのポート番号(最大 65535) -- トンネル設定コマンド -- トンネル追加/削除の失敗時に出力する SYSLOG のレベル(info, debug, notice) |
|---|---|
| トンネルの設定を追加、削除する関数 |
function tunnel(add) rtn, str = rt.command(cmd) return rtn |
| メインルーチン |
local rtn, str while (true) do rtn, str = rt.syslogwatch(log_ptn .. tostring(remove_port), 1, remove_sec) if (rtn == 0) then |
Luaスクリプト例(サブスクリプト)
| 設定値 |
-- トンネル消去用キーパケットのポート番号(最大 65535) |
|---|---|
| メインルーチン |
local log_ptn = "IP Tunnel%[1%] Down" while (true) do |