Jetson (로봇)에서 WireGuard VPN 설정 (userspace 방식)

Jerman·2025년 5월 7일

Jetson 보드에서 WireGuard를 설치하고, 커널 모듈이 없는 상황에서도 userspace 버전(wireguard-go)을 이용하여 VPN 연결을 구성하는 방법을 정리했습니다. 이 글은 Jetpack 6.1, AGX Orin + D315 Carrier Board 기준으로 작성되었습니다.


✅ 준비 사항

  • Jetson Ubuntu 환경 (Jetpack 6.1)
  • root 또는 sudo 권한
  • 서버 측 WireGuard 설정 완료 상태 (공개키, endpoint, AllowedIPs 정보 등)

1. Go 설치

sudo apt update
sudo apt install wget tar git -y

# Go 1.20 이상 다운로드
sudo rm -rf /usr/local/go
wget https://go.dev/dl/go1.23.1.linux-arm64.tar.gz
sudo tar -C /usr/local -xzf go1.23.1.linux-arm64.tar.gz

# 환경변수 설정
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc

# 확인
go version  # go version go1.20.12 linux/arm64

2. wireguard-go 빌드 및 설치

# 저장소 클론
cd ~
git clone https://git.zx2c4.com/wireguard-go
cd wireguard-go

# 빌드
make

# 실행파일 복사
sudo cp wireguard-go /usr/local/bin/

3. WireGuard 설정 파일 작성 (wg0.conf)

sudo mkdir -p /etc/wireguard
sudo nano /etc/wireguard/wg0.conf

예시 설정:

[Interface]
PrivateKey = <Jetson의 privatekey>
Address = 11.0.0.xx/32

[Peer]
PublicKey = <서버의 publickey>
Endpoint = your.server.ip:51820
AllowedIPs = 11.0.0.0/32 (실제로 0.0.0.0/0 으로 하면 네트워크가 다 터져서 큰일납니다)
PersistentKeepalive = 25

💡 DNS 설정은 필요하지 않으면 생략 가능 (Jetson에서는 종종 충돌남)


4. WireGuard userspace 실행

# wireguard-go userspace 실행
sudo wireguard-go wg0

# 설정 반영
sudo wg setconf wg0 /etc/wireguard/wg0.conf

# IP 설정 및 인터페이스 활성화
sudo ip link set wg0 up
sudo ip addr add 11.0.0.10/32 dev wg0
sudo ip route add 11.0.0.0/24 dev wg0

❌ 에러: Error: Unknown device type. → 커널 모듈 없을 때 나타남 → wireguard-go로 해결

⚠️ 주의: wg-quick up wg0 명령은 커널 모듈 기반 환경에서만 작동합니다. wireguard-go userspace 방식을 사용하는 경우에는 wg-quick 사용이 불가능하며, 위와 같이 수동으로 설정해야 합니다.


5. 자동 실행 설정 (선택)

userspace 방식은 systemd 연동이 복잡하므로, 아래처럼 스크립트를 만들어 /etc/rc.local 혹은 crontab @reboot에 등록하는 방식을 추천합니다.

예시: /usr/local/bin/wg_start.sh

#!/bin/bash
/usr/local/bin/wireguard-go wg0
sleep 1
wg setconf wg0 /etc/wireguard/wg0.conf
ip link set wg0 up
ip addr add 10.0.0.10/32 dev wg0
ip route add 10.0.0.0/24 dev wg0
chmod +x /usr/local/bin/wg_start.sh

crontab 등록

crontab -e
@reboot /usr/local/bin/wg_start.sh

6. 연결 확인

sudo wg
ping 10.0.0.1   # 서버 IP 확인

🚩 트러블슈팅

  • modprobe: FATAL: Module wireguard not found: 커널 모듈 미지원 → wireguard-go 사용해야 함
  • wg-quick up wg0: 사용하면 안 됨 (wireguard-go 직접 실행 방식과 충돌)
  • sudo wg 명령어가 없다면: sudo apt install wireguard-tools
  • 꼭 서버의 ip와 publickey를 신규로 추가한 경우 서버의 wireguard는 꼭 down 후 다시 up 하기.

📄 참고


이렇게 하면 Jetson에서도 WireGuard VPN을 userspace 방식으로 안정적으로 실행할 수 있습니다.

profile
To be a ML Engineer

0개의 댓글