안녕하세요 대무무입니다.
이전 글에서 Tailscale 이라는 WireGuard 기반 Mesh VPN 서비스를 소개해드렸는데요.
오늘은 Site-to-Site 방식이 무엇인지와 Tailscale 에서 유사하게 설정하는 방법에 대해 알려드리려 합니다.
Site-to-Site VPN?
두 개 이상의 서로 다른 물리적 위치에 있는 네트워크 간 Private 한 하나의 가상 네트워크를 구축한 것을 뜻합니다. 주로 서로 다른 사무실 혹은 다른 지역에 위치한 기업의 지점들이 인터넷을 통해 마치 하나의 사설 네트워크로 보이게끔 설정 가능합니다. 아래 그림과 같이 네트워크 A 와 B 가 존재하는데 물리적으로는 A 네트워크와 B 네트워크 간 통신을 수행하려면 외부 인터넷을 통해 공개된 외부 IP 주소(혹은 도메인 주소) 를 통해 가능하죠. 그러나 Site-to-Site VPN 을 A, B 네트워크간 적용하게 되면 하나의 가상 네트워크가 구축되며 A 네트워크에 있는 디바이스(컴퓨터, 노트북, 서버...) 에서 B 네트워크의 로컬 주소를 통해 통신이 가능하고 반대로 B 네트워크의 디바이스 또한 A 네트워크의 디바이스와 통신이 가능합니다. VPN 의 보안이 적용되어 있다면 어플리케이션 레벨에서 보안을 적용하지 않아도 VPN 터널링 단계에서 보안이 적용되므로 보안성이 증가합니다.
Tailscale 로 로컬 네트워크와 연결하기
Tailscale 에서 Site-to-Site 를 유사하게 적용하는 방법은 한 네트워크에 속한 디바이스에 Tailscale 의 Subnet Router 기능을 활성화하는 방법입니다. Subnet Router 기능은 게이트웨이 역할을 하며 Tailscale 네트워크에서 물리적 서브넷으로 트래픽을 중계합니다. 아래 그림에서 보면 Tailscale 네트워크 내 서버(100.10.23.12, 192.168.0.4) 에 Subnet Router 기능을 활성화시켜 Tailscale 네트워크 내 다른 디바이스들이 192.168.0.x 대역(B Network) 으로 통신을 가능하게 합니다. 그러나 B 네트워크 내 다른 디바이스들이 Tailscale 네트워크의 디바이스들로 통신하는 것은 해당 설정만으로는 불가능합니다. 이 기능은 단순하게 특정 네트워크의 디바이스에서 Tailscale 클라이언트를 설치할 수 없는 경우(클라이언트가 지원하지 않는 임베디스 디바이스, 대량의 장치들을 연결해야 하는 경우) 대체 방안으로 적용하는 방법이라 생각해주시면 될 것 같습니다.
Linux 기반 디바이스에 Subnet Router 기능을 적용하는 방법에 대해 설명하겠습니다. Tailscale 클라이언트가 설치되어 있고 Tailscale 네트워크에 속한 디바이스여야 합니다.
1. IP Forwarding 활성화
sysctl.conf 파일에 설정을 추가하고 적용하는 방식입니다. 아래 명령을 실행시켜주세요.
$ echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
$ echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p /etc/sysctl.conf
2. 클라이언트에서 Subnet Router 모드 활성화
다음 명령을 통해 tailscale 클라이언트가 Subnet Router 기능을 활성화하도록 합니다.
$ sudo tailscale up --accept-routes --advertise-routes=192.168.0.0/24
3. Tailscale 관리 콘솔에서 확인 및 추가 설정
이후 Tailscale 관리 콘솔에 접속하시면 다음과 같이 Subnets 라고 표시가 되어야 합니다. 이후 관리 콘솔의 해당 노드 설정에서 Edit route settings... 를 클릭한 후 나온 창에서 Subnet routes 를 승인시켜주시면 됩니다.
설정 1가지를 더 해줘야 하는데요. 바로 해당 노드의 key 만료를 비활성화해야 합니다. 키의 경우 기본적으로 3개월마다 만료되는데 키가 만료되면 통신이 모두 끊어지니 비활성화를 해야 합니다. 관리 콘솔의 해당 노드 설정에서 Disable key expiry 를 클릭해주시면 됩니다.
Reference
Tailscale Subnet Router Official Site
2024.01.05 수정사항
- '클라이언트에서 Subnet Router 모드 활성화' 시 Linux 의 경우 --accept-routes 인자 추가 필요함
'인프라' 카테고리의 다른 글
[인프라 / Docker] MongoDB (with Replica-Set) (0) | 2024.01.08 |
---|---|
[인프라 / Docker] 나만의 전자 도서관 Calibre-Web (1) | 2024.01.04 |
[인프라 / VPN] Tailscale 설명 및 간단 사용 방법 (1) | 2024.01.01 |
[인프라 / Docker] WireGuard VPN (1) | 2023.12.30 |
[인프라 / Docker] Nginx Proxy Manager(NPM) (1) | 2023.12.29 |