Arcserve UDP:PC を VPN 経由でバックアップさせない方法
ノートパソコンのバックアップを Arcserve UDP を使って社内の NAS や復旧ポイントサーバに取っているとします。普段は社内のネットワークで問題なくバックアップできますが、出張やリモートワークで PC を持ち出した場合はどうでしょう。
リモートアクセス VPN を使って社内のネットワークに接続すれば、バックアップ先の NAS や復旧ポイントサーバに通信できるようになり、スケジュール通りにバックアップが始まります。
でも、帯域の限られる VPN 経由のアクセスなのでいつも以上にバックアップに時間がかかるはずです。増分バックアップとはいえ、そこそこ大きい容量のデータを送るので、モバイル ルーターやスマホの通信制限に引っかかってしまうこともあるかもしれません。
そこで、今日は PC が普段と違うネットワークにいるときには自動的にバックアップを中止させ、データを流さない方法を紹介します。
■ 手順 1:スクリプトを保存する
PC がどのネットワークに接続しているかを IPv4 アドレスで判別し、社外にいる場合はバックアップを失敗させる PowerShell スクリプトを作りました。これを PowerShell ISE などのエディタにコピペして、オレンジ色の箇所を PC が普段接続している社内のネットワーク アドレス(※1)に書き換え、.ps1 形式のファイルとして保存します。
# ロギングを開始
$filename = Get-Date -Format "yyyy-MMdd-HHmmss"
Start-Transcript "C:\UDP_PS_Logs\$filename.network_check.log"# あらかじめ、PC が社内で接続するネットワークのネットワークアドレス(IPv4)を記入しておく。
$MyNetworks = @("192.168.1.0", "192.168.2.0", "192.168.2.128")
Echo "My internal networks are $MyNetworks"# 現在有効な NIC の IPアドレスとサブネットマスクを取得
$CurrentIP = Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true | Select-Object -ExpandProperty IPAddress
$CurrentSubnet = Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true | Select-Object -ExpandProperty IPSubnet
Echo "Current IP addresses are $CurrentIP"
Echo "Current subnet masks are $CurrentSubnet"# PC が社内ネットワークにいるか判定する。
For($i=0; $i -lt $CurrentIP.Count; $i++){# 現在有効な NIC の IP アドレスとサブネットマスクをオクテットに分割。
$IPOctet = $CurrentIP[$i] -split "\."
$SubnetOctet = $CurrentSubnet[$i] -split "\."# 現在のネットワークアドレスを算出する。
$NetworkIP = ""
For($j = 0; $j -lt 4; $j++){# IP アドレスとサブネットマスクの各オクテットを int 型に変換。
Try{
$intIPOctet = [int]$IPOctet[$j]
$intSubnetOctet = [int]$SubnetOctet[$j]# IPv6 アドレスなど処理できない値が来た場合は 0 を代入。
} Catch {
$intIPOctet = 0
$intSubnetOctet = 0
}# IP アドレスとサブネットマスクの各オクテットを bit 積算。
$intNetworkIPOctet = $intIPOctet -band $intSubnetOctet# 各オクテットの bit 積算の結果を合成。
$NetworkIP += [string]$intNetworkIPOctet
If($j -ne 3){
$NetworkIP += "."
}
}
Echo "One of the current network address is $NetworkIP"# 算出したネットワークアドレスが社内ネットワークのものに含まれればフラグを立てる。
If($MyNetworks -Contains $NetworkIP){
$InternalNetwork = $True
Echo "Detected this machine is in the internal network."
}
}# 社内ネットワークにいることを検出したら Arcserve UDP に 0 を返してバックアップを継続させる。
If($InternalNetwork -eq "True"){
Echo "Continue the backup job."
Exit 0
}# 社内ネットワークにいることを検出できなければ、Arcserve UDP に 1 を返してバックアップを失敗させる。
Else{
Echo "This machine seems to be out of the office. The backup job is going to be terminated."
Exit 1
}
■ 手順 2:Arcserve UDP の実行前スクリプトとして登録する
Arcserve UDP の設定画面の中で、[バックアップ開始前にコマンドを実行] にチェックを入れ、以下の例のように手順1 で作ったスクリプトを登録します。(※2)
powershell.exe -ExecutionPolicy RemoteSigned C:\network_check.ps1
[終了コード] にもチェックを入れて値を「0」にします。2 つあるラジオ ボタンは [ジョブを続行] を選択します。順番が前後しましたが、PowerShell を実行するユーザの [ユーザ名] と [パスワード] も入力しておきます。(※3)
ここまで設定出来たら実際にスクリプトがうまく動くか試してみます。社外のネットワークから接続した場合は、バックアップ ジョブが始まってすぐに中止されました。ジョブのステータスは「失敗」になっています。
以上、ホテがお伝えしました。
<関連記事>
※1 念のため、ここで記入するのはネットワークアドレスです。PC の IP アドレスではありません。
※2 PowerShell のスクリプトを実行させるには、この例のように powershell.exe の引数としてスクリプト ファイルを渡してやる必要があります。
※3 ちなみに、今回は Windows Agent の設定画面を出していますが、Arcserve UDP コンソールでも同じように設定できます。
« Arcserve UDP Linux エージェントでバックアップの成功/失敗をメール通知するスクリプトを書いてみた | トップページ | Arcserve UDP:Windows のバックアップを PowerShell から実行する方法 »
「技術情報」カテゴリの記事
- Arcserve CRS 1.6 の新機能 『ネットワーク プロファイル管理』と『SMART ディスク アラート』とは(2026.04.17)
- Hyper-V 仮想マシンへのベアメタル復旧に対応する、AlmaLinux-Gnome ベース Live CD の作成方法について(2026.04.03)
- Arcserve Backup で処理が失敗する場合の通知 (Alert) を設定してみよう(2026.03.06)
- Arcserve Backup とRDX で実現する "わかりやすい" ランサムウェア対策(2025.12.12)
- Arcserve CRS シリーズの運用管理 Tips(2025.10.31)
「Arcserve UDP」カテゴリの記事
- Arcserve UDP でクラウドストレージにバックアップする際のライセンス(2026.06.05)
- 【続報】「USB 接続 SSD」をハッシュ領域に使った Arcserve UDP データストアへのレプリケートが速かった(2026.05.22)
- Arcserve CRS 1.6 新機能:閉域網(ダークサイト)のサポート(2026.05.01)
- 【独自調査】 SLM(小規模言語モデル)の国内導入状況とそのバックアップ(2026.05.08)
- 【検証】入手困難な内蔵 SSD の代わりに「USB 接続 SSD」を Arcserve UDP のハッシュ領域に使えるか?(2026.04.24)
« Arcserve UDP Linux エージェントでバックアップの成功/失敗をメール通知するスクリプトを書いてみた | トップページ | Arcserve UDP:Windows のバックアップを PowerShell から実行する方法 »




コメント