개인적으로 종종 DNS 변경과 VPN 연결을 수행하고, 다시 원상 복귀 시켜야 하는 일이 자주 발생한다.
지금까지 미뤄왔지만 간단하게 배치 파일을 만들고 이를 실행하는 방법에 대해서 정리해두고자 한다.
사전에 설정되어야 하는 부분은 아래와 같다.
1. 연결할 VPN에 대한 설정이 되어 있을 것
배치 파일을 만들기에 앞서 중요한 것은 아래와 같았다.
1. 실행 시, DNS 변경과 VPN 연결을 수행하는 스크립트
2. 실행 시, VPN 연결 해제와 DNS 원상 복구 스크립트
3. 관리자 권한으로 실행하되 물어보지 말 것
0. 스크립트를 저장할 디렉토리 만들기
먼저 디렉토리를 만들고, 1, 2에 해당하는 배치 파일을 만들어 두었다. 디렉토리는
C:\PersonalScript
로 명명하였다.
1. “vpn_start.bat” 파일 만들기
먼저 1번 스크립트를 만들기 위해서 “vpn_start.bat” 파일을 만들어 준 후 아래와 같은 배치 명령어를 작성하였다.
netsh interface ipv4 set dns "이더넷" static [변경하고자 하는 도메인 서버 IP] primary no
netsh interface ipv4 add dns "이더넷" [변경하고자 하는 보조 도메인 서버 IP] index=2 no
timeout 10
rasdial [사전 설정된 VPN 이름] [접속을 위한 아이디] [패스워드]
위와 같이 코드를 작성해주면 된다. 문제는 rasdial 명령어를 쓸데인데 분명 시스템 설정에 VPN 계정 정보를 가지고 있음에도 아이디, 패스워드가 없으면 접속이 불가했다.
2. “vpn_end.bat” 파일 만들기
2번 스크립트를 만들기 위해서 “vpn_end.bat” 파일을 만들어 준 후 아래와 같이 배치 명령어를 작성하였다.
rasdial [사전 설정된 VPN 이름] /disconnect
netsh interface ipv4 set dns "이더넷" static [원래 설정되어 있던 도메인 서버 IP] primary no
netsh interface ipv4 add dns "이더넷" [원래 설정되어 있던 보조 도메인 서버 IP] index=2 no
3. 작업 스케줄러를 사용하여 “관리자권한” 실행 우회하기
사실 위의 두 배치파일을 마우스 오른쪽 클릭해서 관리자 권한으로 실행하거나, 배치파일 내부에 관리자 권한을 획득하도록 구현할 수 있다. 그런데 가장 큰 문제는 바로 “예”를 한 번 더 눌러줘야 한다는 것이다.
물론 완전히 “사용자 계정 컨트롤”을 꺼버릴 수도 있지만… 추천하지 않는다. 그래서 “작업 스케줄러”를 이용하여 우회한다.
먼저 “시작 + R”을 눌러 실행 창을 열어주고,
control schedtasks
명령어로 “작업 스케줄러”를 열어준다.
뭐가 많이 뜨지만 무시하고 “작업 스케줄러 라이브러리”를 오른쪽 클릭해서 “새폴더”를 만들어준다.
폴더명은 나중에 알기 쉽게 “사용자 계정 컨트롤 예외”로 만들어 준다. 그리고 “작업 스케줄러 라이브러리”를 펼쳐주면
아래쪽에 방금 생성한 “사용자 계정 컨트롤 예외” 폴더가 보일 것이다. 해당 폴더를 오른쪽 클릭하여
작업만들기를 클릭해준다. 새 작업 만들기 창이 뜰텐데 일단 vpn_start.bat 을 실행하는 작업을 만들기 위해 이름은 “VPN_START”로 해주고 “가장 높은 수준의 권한으로 실행”을 체크해준다.
그리고는 동작을 눌러준다.
동작으로 이동하였으면, “새로 만들기”를 눌러준다.
그러면, “새 동작 만들기” 창이 뜨게 될 것이다. 거기서 동작은 “프로그램 시작”으로 두고 “설정” 부분에서 “찾아보기”를 눌러 배치파일을 선택해준다.
그리고 확인 두 번 눌러 새 작업 만들기를 마쳐준다. 2번 작업을 위하여 “vpn_end.bat” 실행할 작업도 동일한 방식으로 추가해준다. 그럼 아래와 같이 두 개의 새로운 작업이 생성된다.
이제 “작업 스케줄러”를 닫고 바탕화면으로 이동하여 “바로가기”를 만들어 줄 것이다. 바탕화면을 오른쪽 클릭하고 “새로 만들기” -> “바로 가기”를 선택해준다.
그럼 아래와 같이 “바로 가기 만들기” 창이 뜰 텐데 항목 위치 입력에 아래와 같이 입력해준다.
C:\Windows\System32\schtasks.exe /run /tn "\사용자 계정 컨트롤 예외\VPN_START"
뒤에 쌍따옴표 안에 들어간 내용을 살펴보면 작업 스케줄러에서 생성한 폴더와 동작임을 알 수 있다. 위와 같이 입력하고 다음을 누른다. 그리고 바로가기 이름은 “VPN START”로 하고 마침을 눌러준다.
그럼 위와 같이 아이콘이 생성될 텐데 더블클릭하면 묻지도 않고 관리자 권한으로 실행되는 것을 확인할 수 있다.
VPN END도 동일한 과정으로 만들어주면 끝이다.
추가로. 단축키 지정하기
만든 바로가기를 오른쪽 클릭하여 속성을 보면 “바로 가기 키”를 설정할 수 있다. 해당 칸을 클릭 한 후 원하는 키 조합을 입력하면 단축키가 되어 어디서나 VPN_START와 VPN_END를 실행할 수 있게 된다.