OpenVPN Connect와 OpenVPN GUI: Windows가 프로필을 보관하는 곳
두 가지 Windows 클라이언트, 두 가지 프로필 모델: GUI는 폴더의 .ovpn 파일을 나열하고, Connect는 가져오기 저장소를 유지합니다. 그런 다음 올바르게 제거하거나 가져오세요.
Windows에서 "내 OpenVPN 프로필은 어디에 있나"라는 질문에는 두 가지 다른 답이 있고, 잘못된 쪽을 고르면 반나절이 날아갑니다. 커뮤니티 OpenVPN GUI는 디렉터리를 프로필 목록으로 취급합니다. 구성된 폴더의 모든 .ovpn 파일이 트레이 메뉴에 나타나고, 그 폴더에서 제거한 파일은 사라집니다. OpenVPN Connect는 가져오기 저장소에서 작동하므로 디스크에서 삭제한 프로필을 보관하고 복사해 넣은 파일은 무시합니다. 아래 비교는 무엇이든 건드리기 전에 어느 폴더를 열지 결정할 때 제가 쓰는 기준입니다.
폴더 목록 대 가져오기 저장소
커뮤니티 GUI는 시작할 때 파일을 열거합니다. 설치할 때 선택한 하나의 구성 디렉터리를 읽고, 거기에 있는 .ovpn 파일이 프로필입니다. 클라이언트를 닫고 그 폴더에 파일을 복사한 뒤 다시 시작하면 항목이 메뉴에 있습니다.
Connect는 대신 가져오기 중에 기록한 레코드로 목록을 만듭니다. 그래서 복사한 파일은 보이지 않고, 가져온 프로필은 원본 다운로드를 삭제해도 남습니다. 바로 이 한 가지 차이가 두 클라이언트가 프로필을 다른 곳에 보관한다는 대부분의 보고를 설명합니다. 실제로 그렇기 때문입니다.
커뮤니티 GUI: 실제로 사용되는 폴더
두 폴더가 중요합니다. 사용자별 설치본은 %USERPROFILE%\OpenVPN\config를 읽고, 모든 사용자 설치본은 C:\Program Files\OpenVPN\config 또는 클라이언트가 32-bit일 때 x86 경로를 읽습니다. 프로필이 Windows 계정 하나에만 나타나면 사용자별 폴더에 있으며 다른 계정에서는 절대 볼 수 없습니다.
설치 프로그램에서 경로를 추론하지 마세요. GUI는 --config_dir 인수를 받고 시작된 디렉터리를 기억하므로 바로 가기가 전혀 다른 곳을 가리킬 수 있습니다. 파일을 만들기 전에 바로 가기의 대상과 Start in 필드, 또는 GUI 설정을 확인하세요.
제거는 파일 제거입니다. 먼저 GUI를 닫아 메모리에 항목을 붙잡지 않게 하고, .ovpn과 그 옆에 보관된 인증서 또는 키 파일을 함께 삭제한 뒤 클라이언트를 다시 시작하세요.
모든 사용자 폴더에는 관리자 권한 제거가 필요합니다. 거기서 조용히 아무 일도 하지 않는 삭제는 UAC 때문이며 클라이언트 버그가 아닙니다.
Connect: 가져오기 저장소와 이중 AppData 함정
현재 2.x 및 3.x 빌드는 프로필을 %APPDATA%\OpenVPN Connect\profiles 아래에 보관합니다. 2.5 전후 빌드는 대신 %ProgramFiles(x86)%\OpenVPN Technologies\OpenVPN Client\etc\profile을 사용했기 때문에 오래된 포럼 답변과 최신 답변이 모순되어 보입니다. 그 자리에서 업그레이드한 컴퓨터에는 둘 다 남아 있을 수 있습니다.
경로는 다시 말하는 과정에서 왜곡됩니다. %AppData%는 이미 AppData\Roaming으로 확인되므로 %AppData%\Roaming\OpenVPN Connect\profiles라고 쓰면 AppData\Roaming\Roaming으로 확장되어 아무 데도 가리키지 않습니다. 변수나 문자 그대로의 경로를 쓰고, 둘을 섞지 마세요.
클라이언트를 통해 삭제하세요. Profiles를 열고 연필 아이콘을 사용한 뒤 Delete를 선택합니다. 그러면 레코드와 저장된 사본이 함께 제거됩니다. Connect가 실행 중일 때 폴더를 제거하면 아무것도 열지 않는 레코드가 남을 수 있는데, 이것이 "profile still shows up" 불만의 또 다른 형태입니다.
가져온 사본이 클라이언트가 실행하는 것입니다. Downloads에 남은 .ovpn을 편집해도 아무것도 바뀌지 않습니다. Connect는 저장된 사본을 읽기 때문입니다. remote나 cipher를 바꾸려면 클라이언트 안에서 프로필을 편집하거나 파일을 편집해 다시 가져오세요.
삭제한 프로필이 다시 나타나는 이유
같은 클라이언트 제품군을 두 번 설치한 것이 흔한 이유입니다. 사용자별 GUI와 모든 사용자 GUI는 구성 디렉터리가 따로 있어 한쪽에서 삭제해도 다른 쪽은 그대로이고 트레이는 여전히 이름을 표시합니다. 둘 다 설치되어 있는지는 Programs and Features에서 확인합니다.
두 번째 이유는 확인한 폴더에 한 번도 없었던 프로필입니다. 네트워크 공유나 Downloads 폴더에서 .ovpn을 한 번 열면 사용자별 구성 디렉터리로 복사될 수 있고, 가져온 Connect 프로필은 AppData에만 존재합니다. 무엇이든 편집하기 전에 파일 이름을 %USERPROFILE%과 %APPDATA% 모두에서 검색하세요. 프로필 폴더에는 보통 .ovpn 옆에 개인 키가 있으므로 어떤 프로필을 제거했는지 증명하려고 폴더를 티켓이나 채팅에 붙여 넣지 마세요. 대신 파일 이름과 타임스탬프를 적으세요.
이전 GUI 빌드는 클라이언트 환경 설정을 레지스트리에도 보관합니다. 파일이 사라진 뒤에도 트레이에 이름이 표시되고 설치가 하나뿐이라면 클라이언트를 한 번 다시 시작하고, 레지스트리 키를 건드릴지 고민하기 전에 바로 가기의 구성 디렉터리를 다시 확인하세요.
두 터널을 동시에: 먼저 어댑터, 그다음 경로
GUI는 여러 연결을 유지할 수 있으며 가상 어댑터마다 하나입니다. TAP-Windows6를 설치하는 Start 메뉴 항목에서 어댑터를 추가한 뒤 Network Connections에서 개수를 확인하세요. 동시에 두 터널을 쓰려면 어댑터가 두 개 필요하고 둘 다 주소를 자동으로 받아야 합니다. 라우팅이 더 어려운 한계입니다. 모든 트래픽을 리디렉션하는 두 프로필은 기본 경로를 두고 경쟁하며 하나만 소유할 수 있으므로 두 개의 작동하는 터널 대신 간헐적 실패가 발생합니다. 전체 터널 하나를 유지하고 두 번째에는 자기 서브넷만 푸시하는 split-tunnel 프로필을 주세요.
겹치는 사설 범위는 어댑터를 추가해도 고칠 수 없습니다. 두 서버가 모두 10.8.0.0/24를 할당하면 두 번째 터널은 주소 수준에서 충돌하며 어떤 클라이언트 구성으로도 분리할 수 없습니다.
어댑터 이름을 보면 무엇을 보고 있는지 알 수 있습니다. PowerShell의 Get-NetAdapter는 TAP-Windows 어댑터와 Wintun 어댑터를 이름으로 나열하며, 터널이 잘못된 어댑터에 올라왔을 때 Network Connections에서 아이콘을 세는 것보다 빠릅니다.
스크립트에서 이름이 있는 프로필 시작하기
GUI는 구성 디렉터리에 상대적인 프로필 이름을 받으므로 런처는 다음과 같습니다: "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "myvpn.ovpn". 절대 경로나 다른 작업 디렉터리에서 시작한 프로세스는 조용히 실패하므로 두 번 클릭으로 작동하는 바로 가기가 Task Scheduler 아래에서 깨집니다.
기대하지 말고 작업 디렉터리를 설정하세요. AutoHotkey 런처에서는 SetWorkingDir, C:\Program Files\OpenVPN\config이고, Task Scheduler에서는 작업의 Start in 필드입니다. 같은 경로로 --config_dir를 전달하면 런처가 둘 다에 독립적이 됩니다.
끝내기 전에 프로필을 내보내고 어댑터, 서브넷, 라우팅하는 서브넷을 기록하며 각 고객의 인증서를 자체 하위 폴더에 보관하세요. 그런 다음 폴더가 실제로 실행하는 클라이언트의 것인지 확인하고, 그 클라이언트에 가져오기 저장소가 있으면 클라이언트를 통해 삭제하세요. 이 순서로 해야 다음 재부팅 후 같은 프로필이 다시 나타나지 않습니다.