[NOTE]
Barrier KVM은 더 이상 Snap에서 설치할 수 없습니다…
24년도에 다시 작성한 글에서는 APT로 설치하는 방법을 소개하고 있어요!

이전 글xrdp도 유용하긴 한데요, 원격 세션이 연결되면 연결된 PC의 화면은 꺼지게 되죠. 원격 연결하려는 PC가 바로 옆에 있고 그 모니터까지 활용하려면 RDP는 별로 좋은 선택이 아니에요. 그냥 PC 두 대를 오가며 사용하는 것이 낫죠.

하지만 그러면 키보드와 마우스를 옮겨 가느라 손이 너무 바쁘잖아요? 이럴 때 구매하는 장비가 KVM 스위치입니다.

KVM switch

KVM 스위치 개념도
위키백과의 KVM 스위치 개념도

KVMKeyboard-Video-Mouse 스위치는 한 벌의 키보드, 마우스, 모니터를 여러 컴퓨터에 연결할 수 있는 장치를 말합니다. 몇만 원 정도에 물리적인 장비를 구할 수 있고요. 협소한 공간에서 여러 컴퓨터를 연결해서 봐야 하는 서버실과 같은 곳에서 종종 사용하곤 해요. 다루는 컴퓨터가 많은 경우에 이 장비는 굉장히 유용합니다.

그런데 우리는 모니터는 공유할 필요가 없으니 (그것까지 공유할 생각이었으면 xrdp가 낫죠), 엄밀하게는 KMKeyboard-Mouse 스위치가 필요한데요. 장비 구매 필요 없이 이 기능을 소프트웨어적으로 구현한 프로그램이 있습니다. 바로 Barrier라고 부르는 오픈 소스 프로젝트에요.

Barrier

Barrier 아이콘
Barrier 깃허브

Barrier는 원래 Synergy라는 이름으로 만들어지던 프로그램이었습니다. 시너지의 프로그램 코어는 오픈 소스로 개발되고 있었는데요. 오픈 소스 프로젝트가 으레 그렇듯이 시너지가 유료화되자마자 사람들은 이 프로젝트를 바로 포크하여 배리어라는 이름으로 독립시킵니다.

그래서 위에 보이는 배리어의 아이콘도 시너지의 4색 고리 아이콘이 조각난 형태를 띠고 있어요. 배리어라는 이름도 시너지의 대항하는 의미가 담겨 있지 않을까 싶어요.

여담으로, 배리어 프로젝트의 소개는 Open-source KVM software인데요, 아까도 이야기했지만, 이 프로그램은 엄밀하게는 KMKeyboard-Mouse 스위치에요. 글 제목과 내용이 다른 이유

이 프로그램을 윈도우와 리눅스에 설치하여 키보드와 마우스를 공유해 봅시다. 저는 윈도우 PC에 키보드와 마우스를 직접 연결 (Server) 하고, 이 장치를 리눅스 PC에 공유 (Client) 하는 방식으로 설정할 거예요.


준비 사항

따로 스크린샷으로 준비할 내용까지는 아니지만, 배리어로 연결할 PC가 아래 환경에 있어야 합니다.

  • 서버가 될 PC (윈도우) 의 IP가 고정되어 있어야 해요. 공유기의 DHCP 설정에서 해당 PC를 수동 등록해 주세요. 그렇지 않으면 IP가 바뀔 때마다 배리어 연결이 끊어지게 됩니다.
  • 두 PC가 같은 네트워크에 연결되어 있어야 해요. 일반적으로 같은 공유기에 연결된 상태라면 신경 쓸 필요가 없습니다. 사무실 등에서 사용하는 경우는 은근히 다른 네트워크일 때가 많아요. 클라이언트가 될 PC (리눅스) 에서 서버가 될 PC (윈도우) 의 IP로 ping 명령을 보내서 정상적으로 응답이 오는지 확인해 보세요.

이 환경을 만족하지 않으면 설치가 매우 까다로워지거나, 불가능할 수도 있어요!

Barrier 설치

Barrier Windows 서버 설치

Barrier 최신 릴리즈 다운로드

배리어의 설치 파일은 배리어 깃허브의 Release 페이지에서 받을 수 있어요. 위 링크를 들어가면 Assets 항목에서 설치 파일을 찾을 수 있습니다.

Barrier 설치 파일

이 글을 작성하고 있는 지금은 2.4.0 버전이 최신 버전이네요. exe 확장자의 파일이 윈도우용 설치 프로그램이에요. 이 파일을 내려받아 실행합니다.

Barrier 설치 - 라이선스 동의

라이선스 조항에 동의하고 다음을 눌러주세요. 이 프로그램은 GPLv2 라이선스를 따르고 있네요.

Barrier 설치 - 설치 경로 선택

배리어의 설치 경로를 설정합니다. 굳이 기본값에서 바꿀 필요는 없겠죠.

Barrier 설치 - 부가 작업 선택

여기서 배리어 바로 가기를 만들지 결정할 수 있는데요. 저는 윈도우 시작 시 자동 실행하게 설정할 것이므로 선택하지 않겠습니다. 이 글 마지막에 다시 설명하겠지만, 은행 사이트 접속 등으로 배리어를 항상 켜 두면 안 될 때는 바로 가기가 있는 것이 편리할 수도 있어요.

Barrier 설치 - 설치 준비

설치 전 구성 확인입니다. 설정이 많지 않아 크게 검토할 것은 없네요. 이제 Install을 누르면 설치가 시작됩니다.

Barrier 설치 - 설치 완료

설치가 완료되었네요. Launch Barrier를 선택하여 바로 프로그램을 실행하여 설정할 수 있도록 합시다.

Barrier Windows 서버 설정

Barrier 설정 - 언어 선택

프로그램을 처음 실행하면 위와 같이 언어 선택을 할 수 있어요. 당연히 한국어를 선택해야겠죠? 이 프로그램이 시너지에서 분기한 프로젝트인 것이 여기서 티가 나네요. 시너지를 설치하여 주셔서 감사합니다. 라니… 이거 상표권에 문제가 있어 보이는데

Barrier 설정 - 서버/클라이언트 선택

설정할 PC가 서버가 (이 PC의 키보드와 마우스를 공유) 될지, 클라이언트가 (다른 PC의 키보드와 마우스를 공유) 될지를 결정하는 화면이에요. 나중에 바꿀 수 있으니 너무 고심할 필요는 없습니다. 그리고 우리는 윈도우 서버를 설정하기로 했는데요!

Barrier 설정 - Bonjour 설치

Bonjour는 애플이 개발한 프로그램으로, 설치된 서비스를 검색하여 자동 설정하는 도구인데요. 저는 쓸 줄 몰라서 직접 설정할 거라서 설치하지 않도록 하겠습니다.

Barrier 설정 - 기본 화면

배리어 기본 화면이 나오는데요. 일단 Barrier > Change Settings (F4)에 들어가서 기본 설정부터 하도록 합시다.

Barrier 설정 - 설정

몇 가지 설정을 해 줍시다.

  • Elevate: 현재 설정하고 있는 배리어가 클라이언트일 경우, 사용자 계정 컨트롤 (이 앱이 디바이스를 변경할 수 있도록 허용하시겠어요?) 이 발생했을 때 배리어 서버 PC에서 이것에 접근할 수 있는지를 결정합니다. Never를 선택하면 접근할 수 없게 되므로 클라이언트 PC를 직접 조작하여 예/아니오를 눌러 줘야 해요. As Needed는 서버 PC에서 접근은 가능한데, 순간적으로 마우스가 서버 PC의 중앙으로 튕기게 됩니다. Always는 항상 접근할 수 있게 됩니다. 지금은 윈도우가 서버인 상태이므로, 신경쓸 필요 없이 기본값을 쓰도록 할게요. 윈도우가 클라이언트라면 Always를 선택하는 것이 사용하기 편할 거예요.
  • Minimize to System Tray: 이 프로그램을 닫을 때 배리어가 꺼지지 않고, 시스템 트레이에 최소화될지를 결정합니다. 설정 창이 닫혀도 키보드와 마우스 공유를 계속해야 하니 설정해 줘야죠!
  • Start Barrier on startup: 프로그램이 실행될 때 키보드와 마우스 공유를 시작한 채로 실행될지를 결정합니다. 설정을 완료한 이후 프로그램 실행을 신경 쓰고 싶지 않다면 선택해야 합니다.

  • Enable SSL: 서버-클라이언트 간 연결 시 SSLSecure Sockets Layer 암호화를 할지 결정합니다. 이 옵션이 켜져 있지 않으면 네트워크상에 키보드와 마우스 움직임의 패킷이 노출돼요!
  • Require client certificate: 클라이언트가 서버에 연결할 때 인증서가 필요할지 결정합니다. 위와 마찬가지 이유로 설정하는 것이 좋아요.

그러나 SSL과 인증서 관련 설정으로 배리어 연결이 잘되지 않을 때도 있는데요. 이 문제에 대해서는 뒤에서 설명할 거예요.

이제 설정 창을 끄고, 다시 기본 화면으로 돌아가 서버 설정(C)를 눌러 봅시다. 사실, 이 과정은 클라이언트 설정을 끝내고 하는 것이 이해가 빠르긴 한데요. 어느 PC의 설정인지 헷갈릴 수 있으니 이 단락에서 한 번에 설명하도록 할게요.

Barrier 설정 - 서버 설정

이 화면은 연결할 PC들의 화면이 어떻게 연결될지 설정하는 곳이에요. 저는 리눅스 PC를 윈도우 PC의 오른쪽에 두고 쓸 거예요. 오른쪽 위의 모니터 그림을 끌어서 중앙의 윈도우 PC 그림 옆에 둡니다. 그럼 이렇게 이름없음 이라는 기본값으로 지정이 되는데요. 이 아이콘을 더블클릭해 봅시다.

Barrier 설정 - 화면 설정

그럼 이제 연결할 클라이언트의 식별자를 정할 수 있어요. 화면 이름(N) 부분에 이 위치에 연결할 클라이언트의 이름을 넣어 주면 됩니다. 이 이름은 보통 PC의 식별자가 되는데요. 이전 글에서도 확인할 수 있지만, 제 리눅스 PC의 이름은 Banyazavi-LinuxPC이거든요. 이 이름을 넣으면 돼요. 물론 이 이름을 클라이언트의 배리어 설정에서 변경할 수 있으니 정확한 이름을 찾으려고 애를 쓸 필요는 없어요. 지금 Banyazavi-LinuxPC로 설정했다는 것만 기억하면 됩니다!

Barrier 설정 - 서버 설정 완료

이름을 지어주고 난 후의 서버 화면 설정 지도입니다. PC를 세 대 이상 연결하려면 여기서 PC 연결 정보를 추가해 주면 되겠죠? 저는 두 대밖에 없으니까 여기서 설정을 마칩니다.

Barrier 설정 - 서버 시작

이렇게 배리어 윈도우 서버의 설정은 완료되었어요. 오른쪽 아래의 시작(S) 버튼을 눌러 배리어 서버를 실행시키고, 이제 리눅스에도 배리어를 설치하러 갑시다.

Barrier Linux 클라이언트 설치

리눅스용 배리어는 설치 파일을 내려받을 필요가 없어요. snapflatpak에 패키지가 등록되어 있어, 명령어 한 줄로 설치할 수 있거든요! 저는 우분투에 기본 포함된 snap 패키지 관리 도구로 설치해 볼게요. 명령어는 아래와 같아요.

$ sudo snap install barrier

이 한 줄만 입력하면 설치는 끝이에요! 설정이 끝났다고는 안 했어요

Barrier Linux 클라이언트 설정

Barrier 설정 - 언어 선택

여기도 언어 선택이 있죠. 네, 한국어입니다.

Barrier 설정 - 서버/클라이언트 선택

이번에는 클라이언트를 선택해야죠. 서버는 윈도우니까요.

Barrier 설정 - 설정

이번에도 Barrier > Change Settings (F4)에 들어가서 기본 설정을 할게요. 화면 이름(R)이 중요합니다. 아까 서버의 상호작용 설정할 때 입력한 화면 이름 Banyazavi-LinuxPC을 넣어 주면 돼요!

그리고 나머지 다른 설정은 윈도우 때와 똑같은데, 여기선 하나를 더 선택합니다.

  • Hide on startup: 프로그램 실행 시 시스템 트레이에 숨긴 채로 시작하는 옵션이에요. 이상하게 배리어 리눅스는 부팅 시 자동 시작이 되지 않아서 시작 프로그램에 직접 등록을 해 주어야 하는데요, 그럼 부팅할 때마다 설정 화면이 뜨게 되거든요. 매번 설정할 필요는 없으니 기본적으로 숨긴 채로 시작하도록 설정합니다.

자, 이제 시작 프로그램에 등록해야 하는데요. 우선 배리어의 실제 경로가 어떻게 되는지를 알아봅시다. 터미널에 아래 명령어를 입력해 보세요.

$ which barrier
/snap/bin/barrier

snap을 통해 설치한 배리어는 /snap/bin/barrier에 실행 파일이 있네요. 이 경로를 잘 기억하시고요.

시작 프로그램에 이 프로그램을 등록해 봅시다. Zorin OS는 설정의 세션 및 시동을 열면 되고, 우분투는 설정의 시작 프로그램을 선택하면 됩니다. 그리고 + 버튼 또는 추가를 선택해서 아래와 같이 추가해 주세요.

시작 프로그램 추가

이름설명은 다른 시작 프로그램과 구별되도록 지어주면 됩니다. 명령에는 아까 확인한 실행 파일의 위치인 /snap/bin/barrier를 넣어 주면 되고요. 트리거에는 이 명령이 언제 실행될지를 결정하면 되는데요. 로그인할 때 (on login) 이 가장 좋겠죠. 그리고 확인(O)을 눌러 등록을 완료합니다.

Barrier 설정 - 클라이언트 시작

자 이제 배리어의 기본 화면으로 돌아가서, 아래의 서버 IP를 입력해 줍시다. 제 윈도우 PC는 192.168.0.10으로 IP를 고정해 놨어요. 그리고 서버와 마찬가지로 시작(S) 버튼을 누르면 서버에 연결이 될 거예요!

SSL 인증서 없음 문제 해결

네, 연결이 안 되는 분들도 있을 거예요. 앞에서 설명한 준비 사항에 문제가 없다면 대부분은 SSL 인증서의 문제입니다. 배리어 설정 화면의 Barrier > Show Log (F2) 메뉴를 열어 연결 로그를 보면, 아래 유형의 오류가 발생하며 연결되지 않을 때가 있어요.

# Windows
ERROR: ssl certificate doesn't exist: C:\Users\Banyazavi\AppData\Local\Barrier\SSL\Barrier.pem

# Linux
ERROR: ssl certificate doesn't exist: /home/banyazavi/snap/barrier/682/.local/share/barrier/SSL/Barrier.pem

이 오류는 SSL을 활성화하는데 필요한 인증서가 없다는 뜻이에요. 이 문제를 해결하려면,

간단한 해결 방법

SSL을 안 쓰면 되겠죠! 서버와 클라이언트 양쪽에 Enable SSLRequire client certificate 옵션을 끄면 됩니다. 그러면 연결이 잘 될 거예요.

이딴 걸 해결법이라고 아까 보안이 우려될 수 있다고 했으니, 보통은 이 방법보다는 다음 방법이 낫겠죠.

좋은 해결 방법

오류 내용을 잘 읽어보면 SSL 인증서가 없다는 뜻이니까, 인증서를 만들어 위의 경로에 넣어 주면 됩니다.

SSL 인증서를 하나 생성해 볼게요. 리눅스 터미널에 다음 명령을 입력해 주세요. 결과 파일을 옮겨야 하니 바탕 화면 등 파일을 쉽게 확인할 수 있는 경로에서 명령을 실행하는 것이 편리합니다. 유효 기간은 365일로 지정했는데, 각자의 상황에 따라 기간을 늘려도 괜찮아요.

$ openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout Barrier.pem -out Barrier.pem

이 명령을 실행하고 나면, Barrier.pem 이라는 파일이 생기게 돼요. 이 파일을 SSL 인증서 파일이 존재하지 않는다는 경로에 복사해 넣어 주면 됩니다.

저는 리눅스의 다음 경로에 파일을 넣어 주면 되겠네요. /home/banyazavi/snap/barrier/682/.local/share/barrier/SSL/Barrier.pem 아마 여러분도 사용자 이름을 제외하고는 비슷한 위치일 거예요.

이 파일을 메일이나 공유 폴더 등의 방법으로 윈도우에도 보내줍시다. 윈도우의 경로는 이렇게 되겠네요. C:\Users\Banyazavi\AppData\Local\Barrier\SSL\Barrier.pem

사실 SSL 인증서를 하나 더 만들어 각각 쓰는 것이 원칙이지만, PC의 소유자가 동일인이라면 굳이 그럴 필요까지는 없어요.

그리고 다시 배리어의 시작(S) 버튼을 누르면, 서버와 클라이언트에 각각 아래와 같은 화면이 뜨며 연결이 될 거예요.

Barrier 연결 - 클라이언트 인증

Barrier 연결 - 서버 인증

(제 인증서의 핑거프린트는 보안상 가렸습니다)

Yes를 눌러 서로의 인증서를 허용해줍시다. 사실 이 화면은 SSL 인증서를 활성화한 후, 각 서버와 클라이언트를 최초 연결할 때 떠야 하는 장면이에요. 이제 SSL을 통한 보안 연결도 끝났습니다.


그리고 남은 이야기

프로그램 설치에 초점을 두고 설명하는 바람에, 배리어의 진짜 장점을 마지막에 소개하게 되네요. 배리어는 클립보드 공유가 됩니다! 다른 PC에서 복사한 내용을 붙여넣을 수 있어요.

배리어의 단점은 일부 백신이나 금융 앱에서 이 프로그램을 보안 위협으로 간주한다는 거예요. 동작 방식이 원격 제어 도구나 키로거와 같은 해킹 툴과 유사하기 때문입니다. 이런 상황에서는 안타깝지만 잠시 배리어를 끄고 사용해야 합니다.

한가지 주의할 점으로, 윈도우의 시작 프로그램은 로그인 전에 실행이 되는데요. 리눅스는 시작 프로그램이 로그인 이후에 실행되기 때문에, 부팅 후 리눅스 클라이언트의 첫 로그인은 공유받은 키보드로 할 수 없어요. 이 이유로 저는 실제로는 이 글과 반대로 리눅스를 서버로, 윈도우를 클라이언트로 해서 씁니다.

댓글남기기