Jetson 보드에서 WireGuard를 설치하고, 커널 모듈이 없는 상황에서도 userspace 버전(wireguard-go)을 이용하여 VPN 연결을 구성하는 방법을 정리했습니다. 이 글은 Jetpack 6.1, AGX Orin + D315 Carrier Board 기준으로 작성되었습니다.
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
# 저장소 클론
cd ~
git clone https://git.zx2c4.com/wireguard-go
cd wireguard-go
# 빌드
make
# 실행파일 복사
sudo cp wireguard-go /usr/local/bin/
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에서는 종종 충돌남)
# 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-gouserspace 방식을 사용하는 경우에는wg-quick사용이 불가능하며, 위와 같이 수동으로 설정해야 합니다.
userspace 방식은 systemd 연동이 복잡하므로, 아래처럼 스크립트를 만들어 /etc/rc.local 혹은 crontab @reboot에 등록하는 방식을 추천합니다.
#!/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 -e
@reboot /usr/local/bin/wg_start.sh
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이렇게 하면 Jetson에서도 WireGuard VPN을 userspace 방식으로 안정적으로 실행할 수 있습니다.