Mengintegrasikan Large Language Model (LLM) agent langsung ke antarmuka eksekusi RouterOS menimbulkan risiko fatal: halusinasi sintaksis atau kesalahan logika rute dapat memutus akses manajemen perangkat. Solusi teknis untuk automasi ini menuntut isolasi eksekusi, validasi skema deklaratif yang ketat, pola canary release, serta pemanfaatan fitur native Safe Mode RouterOS untuk menjamin rollback otomatis tanpa intervensi manual.
Arsitektur Sistem Automasi dan Schema Enforcement
LLM agent tidak boleh mengeksekusi perintah CLI bebas (misalnya via SSH raw). Arsitektur yang aman menempatkan middleware orkestrator berbasis Python atau Go di antara LLM dan RouterOS REST API (tersedia sejak RouterOS v7) atau RouterOS API binary port (8728). LLM bertugas menerima instruksi intent pengguna, lalu memetakan instruksi tersebut ke dalam format JSON terstruktur menggunakan JSON Schema / Structured Outputs.
Validasi Skema Eksekusi
Gunakan Pydantic atau library validasi skema serupa untuk memastikan payload perintah tidak mengandung injeksi baris perintah atau argumen destruktif.
from pydantic import BaseModel, Field, IPvAnyNetwork
from typing import Literal, Optional
class FirewallRuleAction(BaseModel):
chain: Literal["forward", "input", "output"]
action: Literal["accept", "drop", "reject", "passthrough"]
src_address: Optional[IPvAnyNetwork] = None
dst_address: Optional[IPvAnyNetwork] = None
protocol: Optional[Literal["tcp", "udp", "icmp"]] = None
dst_port: Optional[int] = Field(None, ge=1, le=65535)
comment: str = Field(..., max_length=64)
class CanaryTask(BaseModel):
phase: Literal["canary", "production"]
canary_subnet: IPvAnyNetwork
rule: FirewallRuleAction
Safe Mode RouterOS API dan Canary Deployment
RouterOS menyediakan fitur bawaan Safe Mode. Jika sesi TCP antara agent pengirim perintah dan router terputus sebelum sesi mengirim konfirmasi rilis aman, kernel RouterOS membatalkan semua perubahan konfigurasi yang dibuat dalam sesi tersebut secara instan.
Eksekusi Canary dengan Safe Mode Menggunakan Python
Skrip berikut mengeksekusi modifikasi pada subset traffic (canary), melakukan pengujian sintetis, dan hanya melepaskan Safe Mode jika probe telemetri lolos verifikasi.
import requests
import time
ROUTER_IP = "192.168.88.1"
AUTH = ("agent-executor", "SecretTokenValue")
BASE_URL = f"https://{ROUTER_IP}/rest"
def apply_canary_rule(payload: dict):
session = requests.Session()
session.auth = AUTH
session.verify = True # Verifikasi sertifikat TLS router
# Membuka sesi transaksi aman via header atau CLI wrapper
# Pada REST API v7, gunakan batch transaction endpoint atau SSH wrapper ber-Safe Mode
endpoint = f"{BASE_URL}/ip/firewall/filter"
response = session.post(endpoint, json=payload, timeout=5)
if response.status_code != 201:
raise RuntimeError(f"Gagal injeksi konfigurasi canary: {response.text}")
rule_id = response.json()["*id"]
return session, rule_id
def verify_canary_telemetry(test_target_ip: str) -> bool:
# Kirim probe sintetis untuk memastikan paket lewat sesuai expected drop/accept
probe_status = False
for _ in range(3):
# Logika ping/HTTP probe sintetis ke canary test bench
time.sleep(1)
probe_status = True # Ganti dengan response probe aktual
return probe_status
def commit_or_revert(session, rule_id: str, success: bool):
if not success:
# Rollback paksa: Hapus rule canary jika metrik gagal
session.delete(f"{BASE_URL}/ip/firewall/filter/{rule_id}")
session.close()
raise SystemError("Rollback dieksekusi: Verifikasi metrik canary gagal.")
# Konfigurasi valid: tutup sesi dengan aman
session.close()
Verifikasi Pasca-Apply dan Deteksi Anomali Rute via Prometheus
Setelah aturan firewall atau rute diterapkan pada fase canary, agent wajib mengkueri telemetri via Prometheus (mengambil metrik dari SNMP Exporter atau RouterOS native Prometheus metric client pada /system/resource dan /ip/route) sebelum memperluas perubahan ke seluruh antarmuka produksi.
- Metric Drop Rates: Cek
routeros_firewall_bytes_totalataumikrotik_interface_out_drops. Lonjakan anomali menunjukkan drop traffic yang tidak direncanakan. - BGP/OSPF State Flapping: Cek
routeros_routing_bgp_session_state. Jika status sesi berpindah dari established ke idle/active, trigger automated rollback langsung. - Syntetic Ping Probes: Agent mengeksekusi ping via REST endpoint
/pingdari router ke IP Next-Hop dan IP Gateway publik untuk memastikan transparansi forwarding.
Prosedur Automated Rollback Instan
Automated rollback dirancang bekerja dalam dua layer:
- Level 1 (Session Loss Rollback): Implementasikan session holding via SSH
Safe Mode(tombolCtrl+Xpada interaksi PTY). Jika perintah agent menyebabkan interface down atau route drop yang mengisolasi IP manajemen agent, TCP socket putus dan router otomatis me-revert konfigurasi ke snapshot sebelum sesi dibuka. - Level 2 (Telemetry Failure Rollback): Jika sesi tetap hidup tetapi metrik verifikasi menunjukkan error rate melebihi ambang batas toleransi canary (misal: packet loss > 2%), agent mengeksekusi snapshot revert via API internal atau menghapus ID objek yang tertera pada state audit log agent.
Postmortem Checklist: Saat Automasi Memutus Sesi Manajemen
Jika terjadi insiden fatal di mana LLM agent berhasil menerapkan konfigurasi yang mengisolasi akses manajemen dan Safe Mode gagal revert (misal: timeout sesi terlalu panjang):
- Akses Out-of-Band (OOB): Lakukan koneksi fisik via Serial Port console (Baud rate 115200) atau MAC-Telnet/Winbox melalui L2 neighbor discovery pada interface bridge internal.
- Analisis Konfigurasi Aktif: Jalankan perintah
/system/history/printuntuk melacak urutan perintah yang dimasukkan oleh akun agent sebelum putus. - Revert Manual Perintah Terakhir: Jalankan
/system/history/undoberulang hingga rute manajemen kembali reachable. - Patch Agent Prompts & Schema: Perbarui skema validasi Pydantic untuk menolak kombinasi subnet yang mengarah pada gateway antarmuka manajemen (menghindari rute default
0.0.0.0/0menimpa rute OOB).
Komentar
0 komentar
Masuk ke akun kamu untuk ikut berkomentar.
Belum ada komentar
Jadilah yang pertama ikut berdiskusi!