WireGuard로 프라이빗 네트워크에 접속하기
모든 Fly.io 조직에는 앱들이 서로 연결할 수 있는 프라이빗 네트워크가 제공되며, WireGuard를 사용하면 어디서든 이 네트워크에 접속할 수 있어요. 이 블루프린트에서는 WireGuard 피어(peer)를 만들어 프라이빗 네트워크에 연결하는 방법을 단계별로 안내합니다.
출처: 문서
본문
모든 Fly.io 조직에는 모든 앱이 서로 연결될 수 있는 프라이빗 네트워크가 제공돼요. 마이크로서비스가 서로의 엔드포인트를 호출해야 하거나, Flycast를 사용해 사용하지 않을 때 프라이빗 앱을 꺼두고 싶을 때 매우 편리합니다. 하지만 이것은 앱에만 국한된 것이 아니에요. WireGuard로 이 네트워크에 접속할 수 있습니다.
이 블루프린트는 프라이빗 네트워크에 WireGuard 피어를 만들고 연결해서 어디서든 접근할 수 있게 하는 방법을 보여줍니다.
사전 준비
시작하려면 다음이 필요해요.
- fly.io 계정
flyctl설치 (https://fly.io/docs/hands-on/install-flyctl/)- WireGuard 클라이언트 설치
단계
WireGuard 피어를 만들려면 다음 정보가 필요해요.
- 피어를 만들 조직(예: 개인 조직).
- 여러분에게 가장 가까운 Fly.io 리전.
- 피어 이름(예: 컴퓨터의 호스트네임).
- 설정을 저장할 파일 이름.
$ fly wg create --help
Add a WireGuard peer connection to an organization
Usage:
fly wireguard create [org] [region] [name] [file] [flags]
조직 목록은 fly orgs list로 확인할 수 있어요.
$ fly orgs list
Name Slug Type
---- ---- ----
Xe Iaso personal PERSONAL
devrel-demos devrel-demos SHARED
가장 가까운 리전은 fly platform regions 또는 문서의 리전 페이지에서 확인할 수 있어요.
$ fly platform regions
이 모든 것을 염두에 두고 명령을 조립해 봅시다. 각 단계에서 명령을 하나씩 쌓아가는데, 다 끝날 때까지 엔터를 누르면 안 돼요.
기본 명령 fly wireguard create로 시작합니다.
$ fly wireguard create
개인 조직에 만들고 싶으므로 조직 이름으로 personal을 입력할게요.
$ fly wireguard create personal
저는 오타와(Ottawa)에 있으니 몬트리올 리전 yul을 사용할게요.
$ fly wireguard create personal yul
제 컴퓨터 호스트네임은 Camellia이므로 피어 이름으로 그걸 사용할게요.
$ fly wireguard create personal yul camellia
마지막으로 WireGuard가 불러올 수 있도록 camellia.conf로 저장할게요.
$ fly wireguard create personal yul camellia camellia.conf
그런 다음 명령을 실행하고(이제 엔터를 눌러도 돼요) 완료되면 WireGuard 앱을 엽니다.
설정 파일에서 터널을 가져온 뒤 켜세요. macOS에서 WireGuard 앱이 VPN 연결을 관리하도록 허용할지 물어볼 수 있어요. 묻는다면 수락(Accept)을 눌러야 네트워크에 들어갈 수 있어요.
위 영상은 macOS에서 WireGuard 설정을 가져오는 방법을 보여줍니다. 단계를 정리하면 다음과 같아요.
- "Import tunnel(s) from file" 버튼을 클릭합니다.
- 아까 저장한 설정 파일을 선택합니다.
- "Activate" 버튼을 클릭합니다.
- macOS에서 WireGuard 앱이 VPN 연결을 관리하도록 허용할지 물어보면, 신뢰한다면 "Allow"를 클릭합니다.
Linux 시스템에서는 wg-quick을 사용할 수 있어요.
wg-quick up camellia.conf
연결을 테스트하려면 _api.internal에 ping을 보내 보세요 (macOS에서는 IPv6 주소이므로 ping6 _api.internal을 실행해야 해요).
$ ping6 _api.internal -c4
PING6(56=40+8+8 bytes) fdaa:3:9018:a7b:9285:0:a:602 --> fdaa:3:9018::3
16 bytes from fdaa:3:9018::3, icmp_seq=0 hlim=64 time=9.741 ms
16 bytes from fdaa:3:9018::3, icmp_seq=1 hlim=64 time=49.103 ms
16 bytes from fdaa:3:9018::3, icmp_seq=2 hlim=64 time=97.667 ms
16 bytes from fdaa:3:9018::3, icmp_seq=3 hlim=64 time=14.726 ms
--- _api.internal ping6 statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 9.741/42.809/97.667/35.111 ms
Ollama 인스턴스로 연결을 테스트하려면 빈 폴더에서 다음 명령으로 실행할 수 있어요 (끝나고 나서 지우는 걸 잊지 마세요!).
fly launch --from https://github.com/fly-apps/ollama-demo --no-deploy
fly ips allocate-v6 --private
fly deploy
그런 다음 방금 만든 인스턴스의 호스트네임(예: xe-ollama.flycast)으로 OLLAMA_HOSTNAME 환경 변수를 설정하고 다음 명령을 실행하면 됩니다.
export OLLAMA_HOST=http://xe-ollama.flycast
ollama run llama3 "Why is the sky blue? Explain in a single sentence."
그러면 모델이 다음과 같은 답변을 할 거예요.
The sky appears blue because of a phenomenon called Rayleigh scattering, where shorter wavelengths of light (like blue and violet) are scattered more than longer wavelengths (like red and orange) by tiny molecules of gases like nitrogen and oxygen in the Earth's atmosphere.
이제 끝났습니다! 프라이빗 네트워크에 들어와서 모든 앱과 Machines를 마치 바로 옆에 있는 것처럼 접근할 수 있어요.