KUROKOTO LAB
SplitLane ガイド — 第3章 / 全6章

Rules

IP/CIDR・domainルールの追加/編集と、YAML形式でのインポート/エクスポート。

ルールの追加・編集

Rules画面でルールを追加すると、以下の項目を持つ小さなフォームが開きます。

  • 種別 — IP/CIDR または Domain
  • — CIDRブロック(例: 10.0.1.0/24192.168.50.5 のような単独IPは単一アドレスとして扱われます)またはhostname(例: wiki.example.com)
  • label — 任意、最大80文字。Privileged Helperには送られず、あなた自身の参照用です
  • 有効/無効 — 既定で有効

種別を問わず、一部のレンジは常に拒否されます。0.0.0.0/0 を含む非常に広いレンジ(/0/7)やループバックアドレスは、VPNインターフェース経由での経路指定として安全でない、または意味を持たないため保存できません。

値を編集すると再検証が行われます。labelや有効/無効の切替のみの変更は即座に保存されます。ルールを削除するとリストから除去され、既に適用済みだった場合は次回の適用時に対応する経路が削除されます。ルールを無効化(削除ではなく)すると次回の適用対象から外れますが、既に適用済みの経路は次回適用まで残ります。

追加・編集・削除・有効無効の切替はいずれもルールセットをdirty化します。Apply を押すまで、実際のネットワーク上の経路は変わりません。

domainルールの解決の挙動

domainルールは、ブラウザが使うのと同じMacのシステムDNSリゾルバで解決されます。固定の外部リゾルバは使いません。SplitLaneは1つのdomainに対して解決された全アドレス(最初の1件だけでなく)を保存し、それぞれを個別の /32 経路として適用します。複数のAレコードを持つdomainも、解決された時点のものはすべてカバーされます。

解決は、domainルールを保存した直後・Apply実行の直前・SplitLane起動中にVPNが接続した時、に自動的に行われるほか、手動でも実行できます。解決に失敗した場合(DNSタイムアウト、該当ドメインなし等)、ルールは「未解決」として表示され、既存の解決済みアドレス(あれば)は破棄されずそのまま保持されます。

既知の制限: 大規模CDNやSaaSプラットフォームが配信するdomainは、時間の経過とともに解決結果のIPアドレスが変わることがあります。domainルールは「最後に解決した時点」のアドレスしか経路にできないため、こうしたdomainルールは不完全になる場合があります。CDNが後から使い始めた新しいIPは、再解決するまで自動的にはカバーされません。

グループ

ルールは任意で1つの名前付きグループ(1〜80文字、ルールセット内で一意)に所属できます。グループは、ルールを1件ずつではなくまとめて切り替えるための仕組みです。グループの有効状態と各ルールの有効状態がどう組み合わさるかはCore Conceptsを参照してください。グループを削除しても所属ルールは削除されず、未分類 へ移動します。

インポート/エクスポート(YAML)

SplitLaneはルールをYAML形式でインポート・エクスポートできます。主な用途は、会社やチーム内でルールセットを共有し、全員が手で再入力する手間を省くことです。このインポート/エクスポート形式はアプリ内部の保存形式とは完全に独立しており、可読性・コメント可能性・手編集のしやすさを重視して設計されています。

形式リファレンス

# SplitLane rules export template
splitlane_rules: 1

# 任意: 個別に有効/無効を切り替えられる、名前付きグループ
# - "name" は必須。trim後1〜80文字で、このファイル内で一意であること
# - "enabled" は任意(既定true)。無効なグループのルールは、各ルール自身の
#   "enabled" 値によらず、適用時のroute snapshotから全て除外される
groups:
  - name: Corp network
    enabled: true
    rules:
      # 各ルールは "cidr" か "domain" のどちらか一方が必須(両方も、
      # どちらもなしも不可)
      - cidr: 10.0.0.0/8
        label: Core systems   # 任意、trim後最大80文字
      - domain: wiki.example.com
        label: Company wiki
        enabled: false        # 任意(既定true)

# 任意: どのグループにも属さないルール
ungrouped:
  - cidr: 192.168.50.5
  • splitlane_rules: 1 はこの交換形式自体のバージョン番号で、アプリ内部の保存スキーマとは独立しています。
  • 各ルールは cidrdomain のどちらか一方が必須です。両方指定、またはどちらも指定しないルールは拒否されます。
  • labelenabled はどちらもルールごとに任意です。
  • コメント(#)はどこにでも記述できます。
  • この形式に含まれない、またインポート時に無視される項目: ルールごとの解決済みIP履歴、UUID/ID、VPN interfaceパターンやDefault Gateway復元設定などのMacごとの環境設定。これらは環境固有の情報であり、マシン間で共有すべきものではないためです。
  • 上限: ファイルサイズが1MiBを超える、またはルール数が合計500件を超えるファイルは無条件で拒否されます。個々の不正な項目(不正なCIDR、不正なdomain、80文字を超えるlabel、cidr/domainの両方またはどちらも指定していないルール)はスキップされ、インポートのプレビューに表示されます。ファイル全体のインポートを妨げることはありません。

エクスポート

選択したグループや個別のルールをエクスポートできるほか、コメント付きの空テンプレートをエクスポートしてゼロから作成することもできます。エクスポートは通常の保存ダイアログを開き、書き出し先を選べます。

インポート

ファイルを選ぶと、SplitLaneは手動入力フォームと同じ検証をすべての値に対して行います。何も書き込まれる前に、追加されるルール・重複としてスキップされるルール・エラーや警告のある項目を一覧表示するプレビューが表示されます。インポートを確定すると ルールが保存されルールセットがdirty化されるだけ で、Macの実際の経路には一切触れません。適用するには、引き続きApplyを押す必要があります。

マージ規則: インポートしたファイル内のグループは、同名の既存グループがあればそこへ合流します(重複グループは作られません)。ルールは、種別と値(cidr/domain)が既存のルールセット内のいずれかと一致する場合、重複としてスキップされます。