가벼운 P2P 메쉬 VPN을 Tinc로 만드는 방법

Tinc는 Linux, Windows 및 macOS에서 사적인 피어 투 피어(P2P) 메쉬 네트워크를 생성하는 간단한 방법을 제공하는 오픈 소스 가상 사설망(VPN) 어댑터입니다. OpenVPN 및 Wireguard와 유사하게, 여러 컴퓨터를 다양한 네트워크 토폴로지를 통해 단일 가상 LAN으로 연결할 수 있습니다. 여기서는 Tinc를 사용할 때의 이점과 간단한 Tinc 기반 메쉬 네트워크를 설치하고 만드는 방법을 보여줍니다.
Wireguard와 OpenVPN 대신 Tinc를 사용하는 이유는?
Tinc의 다른 VPN 데몬에 대한 독특한 판매 포인트는 메쉬 네트워크로 설계되었다는 점입니다. 이는 Wireguard와 달리 네트워크 조건의 변화에 쉽게 적응할 수 있음을 의미합니다. 이를 통해 네트워크 연결이 불안정한 컴퓨터에서도 더 견고하게 작동합니다.

그 외에도 Tinc는 OpenVPN과 같은 전통적인 VPN에서 기대할 수 있는 대부분의 기능을 제공합니다. 여기에는 NAT 환경을 통과하고, 암호화된 터널을 만들며, LAN 전용 애플리케이션을 연결하는 기능이 포함됩니다.

마지막으로, Tinc는 네트워크 내의 모든 연결을 P2P로 만들기 위해 노력합니다. 이는 자동 피어 검색을 통해 이루어질 수 있으며, 공개적으로 접근 가능한 Tinc 서버와 협조할 수도 있습니다. 결과적으로 Tinc VPN 내의 연결은 견고할 뿐만 아니라 빠르고 반응성이 뛰어납니다.
알고 계시면 좋습니다: 어떤 VPN을 선택할지 결정하지 못하셨나요? Wireguard와 OpenVPN의 성능을 비교한 기사를 확인해 보세요.
Linux에 Tinc 설치하기
Tinc 설치의 첫 단계는 시스템이 최신 상태인지 확인하는 것입니다. 우분투에서 다음 명령을 실행하세요:
sudo apt update &&sudo apt upgrade -y우분투 패키지 저장소에서 Tinc를 직접 다운로드하고 설치합니다:
sudo apt install tinc
다른 리눅스 배포판에 Tinc를 설치하려면 해당 시스템에 적합한 패키지 관리자를 사용하세요. 예를 들어, 나는 Fedora에서 프로그램을 가져오기 위해 sudo dnf install tinc를 실행해야 합니다.

터미널 세션을 열고 tincd --version을 실행하여 Tinc가 제대로 설치되었는지 확인하세요.

Tinc로 기본 메쉬 네트워크 만들기
Tinc가 여러분의 컴퓨터에 설치된 후, 이제 첫 번째 Tinc 기반 네트워크를 구성할 수 있습니다. “/etc/tinc” 내부에 새 폴더를 만드세요. 이 폴더는 여러분의 Tinc 노드와 관련된 모든 파일을 포함하게 됩니다:
sudomkdir-p/etc/tinc/mynetwork/hosts선호하는 텍스트 편집기를 사용하여 새 구성 파일을 만드세요:
sudonano/etc/tinc/mynetwork/tinc.conf새 구성 파일 내에 다음 코드를 붙여넣으세요:
Name = mynode
Device = /dev/net/tun참고: 일부 리눅스 배포판에서는 “/dev” 내에서 tun 어댑터의 위치가 변경될 수 있습니다. 시스템에 맞는 정확한 경로를 찾으려면 다음 명령을 실행하세요:
find/dev -name*tun*-type c“hosts” 폴더 아래에 Tinc 노드의 이름으로 텍스트 파일을 생성하고 그 안에 다음 내용을 붙여넣으세요:
Subnet = 192.168.11.1/32
Address = YOUR-MACHINE-IP-ADDRESS-HERE
Port = 655“Address” 변수를 여러분의 머신의 IP 주소로 대체하세요. ip addr을 실행하여 찾을 수 있습니다.

참고: 공개적으로 접근 가능한 VPN을 만들고 싶다면 머신의 공인 IP 주소를 제공해야 합니다.
머신의 호스트 파일을 저장한 후, “/etc/tinc/mynetwork” 아래에 두 개의 파일을 만듭니다:
sudotouch/etc/tinc/mynetwork/tinc-{up,down}
sudochmod +x /etc/tinc/mynetwork/tinc-(up,down}“tinc-up” 파일을 열고 그 안에 다음 Bash 코드를 붙여넣으세요. 이는 Tinc를 위한 가상 네트워크 인터페이스를 생성하고 그 인터페이스에 IP 주소를 할당합니다:
#!/bin/sh
ip linkset$INTERFACE up
ip addr add 192.168.11.1/32 dev $INTERFACE
ip route add 192.168.11.0/24 dev $INTERFACE파일을 저장한 후, “tinc-down” 파일을 열고 그 안에 다음 내용을 붙여넣습니다. 이는 “tinc-up”과 반대의 작업을 수행하여 Tinc 인터페이스에서 IP 주소를 해제하고 해당 인터페이스를 머신에서 제거합니다:
#!/bin/sh
ip route del 192.168.11.0/24 dev $INTERFACE
ip addr del 192.168.11.1/32 dev $INTERFACE
ip linkset$INTERFACE down
Tinc 노드의 키 쌍을 생성하려면 tincd를 실행하세요:
sudo tincd -n mynetwork --generate-keys=4096Enter 키를 두 번 누르면 개인 및 공용 키의 기본 저장 위치를 수락합니다.

첫 번째 Tinc 클라이언트 추가하기
새 Tinc 클라이언트를 추가하려면, 우선 두 번째 머신에 Tinc가 제대로 설치되었는지 확인하세요.

mkdir -p로 Tinc 구성 디렉토리 구조를 만듭니다.
선호하는 텍스트 편집기를 사용하여 두 번째 머신의 Tinc 클라이언트 구성 파일을 생성하세요:
sudonano/etc/tinc/mynetwork/tinc.conf두 번째 머신의 구성 파일 내에 다음 줄을 붙여넣으세요:
Name = myclient
Device = /dev/net/tun
ConnectTo = mynode“/etc/tinc/mynetwork/hosts” 아래에 Tinc 머신의 이름으로 파일을 생성합니다. 이 경우, 두 번째 머신의 이름을 “myclient”로 정했으므로 “myclient”라는 이름의 파일을 생성할 것입니다:
sudonano/etc/tinc/mynetwork/hosts/myclient새 호스트 파일 안에 다음 블록의 코드를 붙여넣습니다. 이는 첫 번째 노드와 유사하게, Tinc 데몬의 네트워크 구성을 지정합니다:
Subnet = 192.168.11.2/32
Port = 655새 호스트 파일을 저장한 후, 두 번째 머신에서 “tinc-up” 및 “tinc-down” 스크립트를 생성하세요:
sudotouch/etc/tinc/mynetwork/tinc-{up,down}
sudochmod +x /etc/tinc/mynetwork/tinc-{up,down}선호하는 텍스트 편집기를 사용하여 tinc-up 파일을 열고, 그 안에 다음 블록의 코드를 붙여넣습니다:
#!/bin/sh
ip linkset$INTERFACE up
ip addr add 192.168.11.2/32 dev $INTERFACE
ip route add 192.168.11.0/24 dev $INTERFACEtinc-up 파일을 저장한 후, tinc-down 파일을 열고 그 안에도 다음 코드 줄을 붙여넣습니다:
#!/bin/sh
ip route del 192.168.11.0/24 dev $INTERFACE
ip addr del 192.168.11.2/32 dev $INTERFACE
ip linkset$INTERFACE downTinc 클라이언트 구성을 완료하기 위해 키 쌍을 생성합니다:
sudo tincd -n mynetwork --generate-keys=4096
Tinc 메쉬 네트워크 실행하기
이 시점에서 두 개의 적절히 구성된 Tinc 데몬이 있습니다. 그러나 이 두 Tinc 데몬을 연결하여 Linux에서 P2P VPN을 만들어야 합니다. 이를 위해, Tinc 노드의 호스트 구성 파일을 클라이언트로 복사하고 그 반대의 경우도 마찬가지입니다.
먼저 노드의 터미널 세션을 열고 “/etc/tinc/mynetwork/hosts” 디렉토리로 이동하세요:
cd/etc/tinc/mynetwork/hosts이 디렉토리 내의 구성 파일을 복사하여 클라이언트로 전송합니다. 내 경우에는 scp를 사용하여 이 파일을 ssh를 통해 보낼 것입니다:
scp ./mynode YOUR-CLIENT-IP-ADDRESS:~
참고: 이 예제에서는 scp를 사용했지만, 플래시 드라이브를 활용하여 수동으로 전송할 수도 있습니다.
클라이언트 머신으로 가서 방금 클라이언트로 전송된 호스트 파일을 클라이언트의 “/etc/tinc/mynetwork/hosts” 폴더로 복사합니다:
sudocp-v ~/mynode /etc/tinc/mynetwork/hosts/그 후, 클라이언트 머신에서 scp를 실행하여 클라이언트의 호스트 파일을 노드로 다시 전송하세요:
scp/etc/tinc/mynetwork/hosts/myclient YOUR-NODE-IP-ADDRESS:~클라이언트의 호스트 파일을 노드의 호스트 디렉토리에 복사합니다:
sudocp ~/myclient /etc/tinc/mynetwork/hosts/덧붙여서: 인터넷에서 개인 정보를 걱정하고 계신가요? Linux PC의 개인 정보 보호와 보안을 개선할 수 있는 방법을 알아보세요.
Tinc 메쉬 네트워크 시작하기
모든 설정이 완료된 Tinc 네트워크를 시작하려면 각 호스트에서 다음 명령을 실행하세요:
sudo tincd -n mynetworkTinc 인터페이스를 통해 노드 간에 통신할 수 있는지 간단한 핑을 통해 확인하세요:
ping-c5 192.168.11.2
마지막으로, VPN이 시스템 시작 시 작동하도록 Tinc 서비스를 활성화하세요:
sudo systemctl enable--now [email protected]Tinc로 P2P 메쉬 VPN을 생성하는 방법을 배우는 것은 이 멋진 컴퓨터 네트워킹의 세계를 탐색하는 첫 걸음입니다. 이 기술의 복잡한 세계에 대해 더 깊이 알아보려면 VPN에 대한 종합적인 개요를 확인해 보세요.
이미지 제공: Growtika via Unsplash. 모든 수정 및 스크린샷은 Ramces Red가 작성했습니다.