umilove98의 블로그

Pulse Secure VPN 접속에러 (작업스케줄러 등록 자동화) 본문

업무

Pulse Secure VPN 접속에러 (작업스케줄러 등록 자동화)

umilove98 2025. 3. 5. 17:36
반응형

신규 구축 프로젝트 진행 중 고객사 자산에 접근하기 위한 Pulse Secure VPN을 전달받았다.

 

VPN 실행 후 접속설정 후 연결을 하면 즉시 모든 인터넷 통신이 안된다.

함께 프로젝트 하는 팀원분은 아주 정상적으로 잘 활용하고 있는데 고객사 전산팀에도 문의하니 그쪽 회사도 가끔 그런직원 있는데 해결 못하고 있단다...(??)

자사 정보보호팀에도 문의해 보았으나 VPN관리자 설정 문제나 방화벽 문제는 아니라고 하는데...

 

 

https://cloudbrothers.info/en/pulse-secure-windows-11/

해결을 위해 열심히 구글링해 보니 Windows11 에서 발생하는 문제라고 한다. (2021년도 글인데 아직도...?)

Pulse Secure 버전은 9.1.13 

 

 

위 사이트에서 제시된대로 Juniper Network Service  라는 옵션 체크해주니 정상적으로 인터넷 통신이 가능해졌다.

 

그런데 vpn연결을 종료하면 초기화되기 때문에 매번  vpn연결을 할 때마다 이 옵션을 다시 켜줘야하는 매우 큰 불편함이 있었고 위 사이트에서 PowerShell 스크립트를 통해 자동화 한 내용을 적용하려고 보니 약간의 아쉬움이 있다. 

do {
    if ( (Get-NetAdapterBinding  -InterfaceDescription "Juniper Networks Virtual Adapter" -ComponentID jnprns -ErrorAction SilentlyContinue).Enabled -eq $false ) {
        Enable-NetAdapterBinding  -ComponentID jnprns -InterfaceDescription "Juniper Networks Virtual Adapter"
        "Enabled"
    }
} while (1)

 

파워쉘로 해당 코드를 실행하면 무한 반복하면서 Juniper Network Service의 활성화 여부를 확인하여 활성화해주는 코드였다. 

2가지 문제점이 보인다.

 

1. 컴퓨터를 재부팅하거나 PowerShell을 종료하면 vpn 실행 전 다시 PowerShell을 실행하여 해당 코드를 실행해야한다. 

2. 한번 실행하면 종료커맨드를 받기 전까지는 무한루프하므로 pc 리소스 낭비가 발생한다. (큰 낭비는 아니겠지만 기분이 안좋음..) 

 

vpn에서 연결 버튼을 눌렀을 때만 일회성으로 위 일련의 체크과정을 자동화 하기로 함

 

두 가지 방법

1. 작업스케줄러 설정하여 이벤트 트리거에 맞춰 스크립트를 실행하도록 등록

2. 배치프로그램을 만들어 원클릭으로 스크립트 실행

 

 

1. 작업스케줄러 이벤트 트리거 등록

윈도우 검색창에 이벤트뷰어 검색하여 실행 (띄어쓰기 잘해야함)

 

 

응용 프로그램 및 서비스 로그 - Pulse Secure - Operational 을 클릭해보면 위와 같은 창이 보인다. 

이 상태로 vpn 클라이언트창에서 연결 후 새로고침하면 위 이벤트 뷰어 화면처럼  작업 범주 Connect 라는 로그가 보인다. (이벤트 ID 312)   

이 이벤트가 발생했을 때 자동으로 수행할 작업을 연결해야한다. 

 

우클릭 후 이 이벤트에 작업 연결 선택

등록할 후속 작업의 이름, 설명 기입
선택한 이벤트에 자동 연결됨
위 블로그의 쉘 스크립트를 변환해서 자동 실행

 

powershell 프로그램을 실행하여 인수 추가에 지정된 파일 데이터를 수행한다.

다음과 같이 입력했다

바탕화면에 PulseEvent라는 폴더를 생성하고 폴더 안에 Enable_Juniper_Once.ps1 이라는 이름으로 쉘 스크립트 파일을 넣은 후 

Enable_Juniper_Once.ps1

# Juniper Networks Virtual Adapter의 네트워크 서비스 활성화
# vpn 네트워크 연결이 완료된 후 동작하도록 연결 종료까지 대기시간 10초
sleep 10

$adapter = Get-NetAdapterBinding -InterfaceDescription "Juniper Networks Virtual Adapter" -ComponentID jnprns -ErrorAction SilentlyContinue

if ($adapter.Enabled -eq $false) {
    Enable-NetAdapterBinding -ComponentID jnprns -InterfaceDescription "Juniper Networks Virtual Adapter"
    Write-Output "Juniper Network Service Enabled"
} else {
    Write-Output "Juniper Network Service is already enabled."
}

( 네트워크 연결 이벤트 시작 직후에 해당 작업이 시작되는데, 네트워크 연결이 완료된 후 작업을 진행해야 정상 적용되므로 여유시간 10초를 주었음. 수정가능 )

 

인수 추가 : -ExecutionPolicy Bypass -NoProfile -File "C:\Users\mspark\Desktop\PulseEvent\Enable_Juniper_Once.ps1"

시작 위치 : C:\Users\mspark\Desktop\PulseEvent\

 

이후 마침을 클릭하면 이벤트에 연결된 작업이 생성되고

윈도우 검색창  작업 스케줄러 검색하여 실행 - 이벤트 뷰어 작업 에서 확인 가능하다

 

우클릭 - 속성 선택시 아래와 같은 창이 보이고  보안옵션 - 가장 높은 수준의 권한으로 실행 체크해야한다. 

( 관리자권한으로 파워쉘을 실행하도록 하기 위함 )

 

 

 

이후 vpn 연결 시작시 이와 같은 파워쉘 화면이 실행되며 대기시간(10초가 지나면 Juniper Network Service 옵션을 자동 활성화 한다. )

 

 

2. 배치 파일 생성

1) Juniper Network Service 활성화 스크립트

Enable_Juniper_Once.ps1
0.00MB

 

2) 위 스크립트를 실행해주는 배치 스크립트

Enable_Juniper_Once.bat
0.00MB

 

두 파일을 같은 폴더에 넣고 2) 의 스크립트를 관리자 권한으로 실행하면 1) 의 스크립트를 자동 실행해준다.

 

하지만... 폴더에 들어가서 관리자 권한으로 실행하는 것이 번거롭다... 

바탕화면의 위 Enable_Juniper_Once.bat 의 바로가기를 생성한 후 우클릭 - 속성 - 바로가기탭 - 고급 - 관리자 권한으로 실행 체크

 

하면 좀 더 간편하게 딸깍이 가능하다.

 

 

 

 

이거 설정하는 시간에 그냥 매번 제어판 옵션 활성화 했겠다는 생각이 들기도 하지만... 다른 비슷한 귀찮음이 발생할 때 조금 더 원활하게 자동화? 설정을 할 수 있지 않을까?

반응형