mcpField
M
mikrotik-routeros

mikrotik-routeros

github.com/bastosクラウド・DevOps753 回インストール12 週間前に更新
リポジトリ

mikrotik-routeros について

MikroTik RouterOS のコマンドライン設定やスクリプトを生成、レビュー、トラブルシューティングするスキルです。既定では RouterOS v7 を対象とし、事前確認、検証、ロールバック計画も扱います。

主な機能

  1. 01RouterOS コマンドの生成とレビュー
  2. 02RouterOS スクリプトの作成と問題調査
  3. 03必要に応じた公式ドキュメント参照
  4. 04バックアップ、安全モード、ロールバックの計画
  5. 05コマンドの冪等性と設定リスクの確認

活用シーン

  1. 01ファイアウォールや VLAN の設定変更を計画
  2. 02再利用可能な .rsc ファイルやシステムスクリプトを作成
  3. 03リモートネットワーク変更による管理アクセスへの影響を評価
  4. 04既存ルールを検証しロールバック手順を計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bastos/skills --skill mikrotik-routeros

インストール後、Claude Code で/mikrotik-routerosを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
config-change-workflows.md
official-docs.md
recipes.md
routeros-cli.md
routeros-scripting.md

詳細

MikroTik RouterOS CLI とスクリプト

RouterOS のコマンドライン設定やスクリプトの作成、レビュー、トラブルシューティングには、このスキルを使用します。ユーザーが別のバージョンを指定しない限り、RouterOS v7 を対象にします。

リファレンスの読み込み

コマンドを作成する前に、必要最小限の関連リファレンスを読みます。

  • references/official-docs.md - MikroTik の公式ドキュメントとバージョン情報の参照先。
  • references/routeros-cli.md - ターミナルの構文、パス、項目の指定方法、引用符、SSH の実行方法。
  • references/routeros-scripting.md - RouterOS スクリプトの構造、変数、関数、エラー処理、スクリプトリポジトリの動作。
  • references/config-change-workflows.md - バックアップ、エクスポート、セーフモード、インポート、リセット、ロールバックの計画。
  • references/recipes.md - よくある設定タスクに再利用できるコマンドパターン。

運用モデル

  1. ユーザーが求めているのが、実環境での実行、コマンド計画、再利用可能な .rsc ファイル、または /system script エントリーのいずれかを確認します。
  2. 安全で正しい設定に必要な情報だけを集めます。RouterOS のバージョン、モデル、管理用 IP/インターフェース、WAN/LAN インターフェース名、ブリッジ/VLAN の設計、既存ルールの順序を確認します。
  3. RouterOS のターミナルにそのまま貼り付けても安全なコマンドを優先します。現在のメニューに依存せず、/ip/firewall/filter などの絶対パスメニューを使用します。
  4. 安定した識別子を使用します。項目名、コメント、default-name の値、または [find ...] フィルターを使います。CLI の番号はセッションごとに変わるため、生成するスクリプトでは数値の項目 ID を避けます。
  5. 可能な場合は、コマンドを冪等にします。重複を追加しないよう、追加前に [find ...] で既存オブジェクトを確認します。
  6. 事前確認、変更、検証、ロールバックを分けます。ルーター設定を誤ると、管理アクセスが失われる可能性があります。

安全性に関する既定の方針

  • リモートでネットワーク、ファイアウォール、ルート、ブリッジ、VLAN、アドレスを変更する場合は、変更前にエクスポートを作成し、セーフモードを使用するか、段階的なロールバック手順を用意するよう提案します。
  • 認証情報、パブリック IP、インターフェースの役割、ファイアウォールルールの順序を推測しません。不足情報が作業の妨げになる場合は、プレースホルダーを使用するか、ユーザーに確認します。
  • ユーザーが明示的に求め、その情報を開示するリスクを理解している場合を除き、実際のパスワード、秘密鍵、共有シークレット、show-sensitive の出力を含めません。
  • SSH またはローカルターミナルの例を優先します。明示的に隔離された復旧環境での使用を除き、Telnet は推奨しません。
  • 再起動、リセット、管理サービスの無効化、アドレス/ルートの削除、input ファイアウォールポリシーの変更を行うコマンドには注意を促します。
  • ユーザーが破壊的なリセットを求める場合は、具体的な影響を正確に伝え、先にバックアップ/エクスポートを行う手順を含めます。

回答の形式

設定変更では、次の構成を使用します。

## Preflight
<read-only commands to inspect state and save config>

## Commands
<RouterOS commands, grouped by subsystem>

## Verify
<commands to prove the intended state and connectivity>

## Rollback
<minimal commands or restore path>

スクリプトでは、次の構成を使用します。

## Script
<source code or /system script add/set command>

## Install
<commands to add the script and required policy>

## Test
<manual run, logs, dry-run behavior if applicable>

## Schedule or Trigger
<scheduler/netwatch/button hook only if requested>

RouterOS コマンドのスタイル

  • コマンドはスラッシュ区切りの形式で記述します。例:/ip/address/print、/system/script/add、/interface/bridge/vlan/add。
  • param=value は詰めて記述します。RouterOS では = の前後にスペースを入れられません。
  • スペースや特殊文字を含む文字列は、引用符で囲みます。例:comment="managed by routeros-script"。
  • 生成したルールやスケジュール済みジョブを長期的に識別できるよう、コメントを使用します。
  • 状態の取得には print terse または print detail を、対象を絞った確認には print where ... を使用します。
  • 移植可能なコマンド出力には export terse を使用します。バイナリ形式の /system backup は、同じデバイスへの復元に限って使用します。

冪等なパターン

最大 1 つだけ存在すべきオブジェクトを追加する場合は、次のパターンを使用します。

:if ([:len [/ip/firewall/address-list/find list="mgmt-allow" address="203.0.113.10"]] = 0) do={
    /ip/firewall/address-list/add list="mgmt-allow" address="203.0.113.10" comment="managed: admin workstation"
}

既存オブジェクトについては、find 式が 1 つの項目だけに一致すると見込まれる場合に限り、set [find ...] ... を使用します。複数の項目に一致する可能性がある場合は、項目を一覧表示してユーザーに選んでもらうか、フィルターを絞り込みます。

検証チェックリスト

コマンドを引き渡す前に、次の点を確認してください。

  • インターフェース名がユーザーのデバイスと一致しているか、または明確なプレースホルダーになっています。
  • ファイアウォールルールは、広範な破棄/拒否ルールより前に配置されています。
  • 管理用の許可ルールは、制限的な入力ポリシーより前に追加されています。
  • スクリプトでは変数を使用前に宣言し、永続化が意図されている場合を除き、ローカルスコープを使用しています。
  • インポートファイルでは、Bash ではなく RouterOS の構文を使用しています。
  • バージョン依存の機能には、必要に応じてラベルを付け、公式ドキュメントへのリンクを記載しています。

コメント