Wireguard 세팅기

2026. 5. 11. 00:42·Infra

이전 글에서는 Proxmox 위에 OPNsense를 설치하고,

WAN과 내부 가상 LAN을 나누어 홈랩 네트워크의 기본 구조를 구성했습니다.

최종적으로 제 홈랩은 외부 인터넷과 내부 네트워크 사이에 OPNsense를 두는 형태가 되었습니다.

고생많이 했다...

외부 인터넷
→ OPNsense WAN
→ OPNsense 방화벽
→ OPNsense LAN
→ Proxmox 내부 가상 LAN
→ Proxmox / 내부 VM / CML

이렇게 구성하면 Proxmox 관리 페이지나 내부 VM들이 WAN에 직접 노출되지 않기 때문에 보안상 훨씬 안전합니다.

하지만 문제가 하나 생깁니다.

외부에서 제 홈랩에 어떻게 접속할 것인가입니다.

저는 학교나 외부에서 맥북을 사용하는 시간이 많기 때문에,

집이나 랩실 네트워크 안에 직접 있지 않아도 Proxmox 관리 페이지와 내부 VM에 접근할 수 있어야 했습니다.

그렇다고 Proxmox 관리 페이지를 공인 IP로 직접 열어두는 것은 위험합니다.

Proxmox는 가상화 서버 전체를 관리하는 관리자 페이지이기 때문에, 외부에 그대로 노출하면 보안상 좋지 않습니다.

그래서 선택한 방식이 WireGuard VPN입니다.

1. 왜 WireGuard를 사용했는가


WireGuard는 VPN을 구성하기 위한 오픈소스 기술입니다.

VPN은 외부에 있는 장비를 마치 내부 네트워크에 있는 것처럼 연결해주는 기술입니다.

예를 들어 학교에서 맥북을 사용하고 있더라도,

WireGuard로 연결하면 맥북이 제 홈랩 내부망에 들어와 있는 것처럼 통신할 수 있습니다.

쉽게 말하면 외부에서 내부망으로 들어오는 안전한 전용 통로를 만드는 것입니다.

제가 원하는 구조는 다음과 같았습니다.

맥북
→ 인터넷
→ OPNsense WireGuard
→ 내부 가상 LAN
→ Proxmox 관리 페이지 / 내부 VM / CML

여기서 중요한 점은 외부에서 바로 Proxmox로 접속하는 것이 아니라는 점입니다.

외부 접속은 먼저 OPNsense의 WireGuard로 들어오고,

그 다음 OPNsense가 내부망으로 트래픽을 전달하는 구조입니다.

즉, Proxmox 관리 페이지는 여전히 내부망에만 존재합니다.

외부에 직접 열려 있는 것은 Proxmox가 아니라 WireGuard 접속 포트뿐입니다.

이 구조를 사용하면 외부에서는 WireGuard 인증을 통과한 장비만 내부망에 접근할 수 있습니다.

그래서 단순히 포트를 열어두는 방식보다 훨씬 안전하게 홈랩에 접근할 수 있습니다.

2. WireGuard 구조 설계

WireGuard를 설정하기 전에 먼저 어떤 네트워크 대역을 사용할지 정리했습니다.

제 홈랩 내부망은 다음과 같이 구성되어 있습니다.

OPNsense LAN IP: 192.168.20.1/24
Proxmox 관리 IP: 192.168.20.2/24
내부 네트워크 대역: 192.168.20.0/24

그리고 WireGuard 접속용 대역은 내부망과 겹치지 않는 별도의 대역으로 구성했습니다.

예시로 정리하면 다음과 같습니다.

WireGuard 대역: 172.16.0.0/23
WireGuard 서버 주소: 172.16.0.1
맥북 WireGuard 주소: 172.16.0.x


여기서 중요한 점은 WireGuard 대역과 기존 내부망 대역이 서로 달라야 한다는 점입니다.

예를 들어 내부망이 192.168.20.0/24인데 WireGuard도 같은 대역을 사용하면 라우팅이 꼬일 수 있습니다.

그래서 WireGuard는 172.16.0.0/23처럼 별도의 대역으로 분리했습니다.

정리하면 역할은 다음과 같습니다.

192.168.20.0/24
= 홈랩 내부망

172.16.0.0/23
= WireGuard VPN 접속망


맥북은 WireGuard에 연결되면 172.16.0.x 주소를 받습니다.

그리고 OPNsense를 통해 192.168.20.0/24 내부망으로 접근하게 됩니다.

이때 맥북에서 Proxmox에 접속하는 흐름은 다음과 같습니다.

맥북 172.16.0.x
→ WireGuard 터널
→ OPNsense 172.16.0.1
→ OPNsense LAN 192.168.20.1
→ Proxmox 192.168.20.2:8006

3. OPNsense에서 WireGuard 설정

이제 OPNsense에서 WireGuard를 설정합니다.

OPNsense 웹 관리 페이지에 접속한 뒤 WireGuard 메뉴로 이동합니다.


WireGuard 설정에서 먼저 Instance를 생성했습니다.

 



Instance는 쉽게 말해 WireGuard 서버 역할을 하는 설정 묶음입니다.

OPNsense가 WireGuard 서버처럼 동작하고, 맥북은 여기에 접속하는 클라이언트가 됩니다.

Instance 설정에서는 다음과 같은 값을 지정했습니다.

Name: HomeWireGuard
Listen Port: 51820 또는 사용 중인 포트(저는 다른걸로 했습니당)
Tunnel Address: 172.16.0.1/23

여기서 Listen Port는 외부에서 WireGuard로 접속할 때 사용하는 포트입니다.

예를 들어 51820을 사용한다면, 외부 맥북은 다음과 같은 목적지로 접속하게 됩니다.

공인 IP 또는 DDNS 주소:51820


4. 맥북 Peer 설정

WireGuard에서는 서버와 클라이언트를 Peer라고 부릅니다.

Peer는 WireGuard에서 서로 통신할 상대방을 의미합니다.

OPNsense 입장에서는 맥북이 Peer이고, 맥북 입장에서는 OPNsense가 Peer입니다.

OPNsense에서 맥북용 Peer를 추가했습니다.

맥북 Peer에는 다음과 같은 정보가 들어갑니다.

Name: MacBook
Public Key: 맥북 WireGuard에서 생성한 공개키
Allowed IPs: 172.16.0.x/32

 




여기서 Allowed IPs가 중요합니다.

OPNsense 쪽 Peer 설정에서 Allowed IPs는 "이 Peer가 어떤 IP를 사용하는지"를 의미합니다.

예를 들어 맥북에 172.16.0.10을 줄 예정이라면 다음처럼 설정할 수 있습니다.

Allowed IPs: 172.16.0.10/32

/32는 딱 하나의 IP만 의미합니다.

즉, 이 Peer는 172.16.0.10이라는 주소를 가진 맥북이라는 뜻입니다.

반대로 맥북 쪽 WireGuard 설정에서도 Allowed IPs가 있습니다. 여기서는 의미가 조금 다릅니다.

맥북 쪽 Allowed IPs는 "어떤 목적지로 가는 트래픽을 WireGuard 터널로 보낼 것인가"를 의미합니다.

저의 경우 맥북에서 홈랩 내부망에 접근해야 하므로 다음 대역을 넣어야 합니다.

Allowed IPs: 172.16.0.0/23, 192.168.20.0/24

여기서 172.16.0.0/23은 WireGuard VPN 대역이고, 192.168.20.0/24는 홈랩 내부망입니다.

이 부분이 처음에 가장 헷갈릴 수 있습니다.

헷갈려서 설정 꼬였던건 비밀


OPNsense의 Peer Allowed IPs는 "상대방이 어떤 IP를 쓰는지"에 가깝고,

맥북의 Allowed IPs는 "어떤 목적지로 갈 때 VPN을 탈 것인지"에 가깝습니다.

정리하면 다음과 같습니다.

OPNsense 쪽 Peer Allowed IPs
= 맥북에게 할당한 WireGuard IP

맥북 쪽 Allowed IPs
= VPN으로 보내고 싶은 목적지 대역

이 차이를 이해해야 WireGuard 설정이 훨씬 쉬워집니다.

(기본적인 것이지만 매우중요)


5. WAN 방화벽 룰 설정

WireGuard가 외부에서 접속되려면 OPNsense WAN에서 WireGuard 포트를 열어줘야 합니다.

외부 맥북은 인터넷을 통해 OPNsense의 WAN 주소로 접근합니다.

이때 WireGuard 포트가 방화벽에서 막혀 있으면 Handshake가 되지 않습니다.

그래서 WAN 인터페이스에 WireGuard 포트를 허용하는 룰을 추가했습니다.

예시는 다음과 같습니다.

Interface: WAN
Protocol: UDP
Destination: WAN address
Destination Port: 설정한 포트
Action: Pass



여기서 중요한 점은 WireGuard는 TCP가 아니라 UDP를 사용한다는 점입니다.

따라서 Protocol을 TCP로 열면 정상적으로 동작하지 않습니다.

또 Destination은 OPNsense의 WAN address로 잡는 것이 자연스럽습니다.

외부에서 OPNsense의 WAN IP로 WireGuard 접속을 시도하기 때문입니다.


6. WireGuard 인터페이스 방화벽 룰 설정

WAN에서 WireGuard 포트를 열었다고 해서 끝은 아닙니다.

WAN 룰은 외부에서 WireGuard 터널에 접속하는 것만 허용합니다.

하지만 터널에 들어온 뒤 내부망으로 이동하는 트래픽은 WireGuard 인터페이스 룰에서 따로 허용해야 합니다.

처음에 헷갈렸던 부분이 바로 이 지점이었습니다.

외부에서 들어오니까 전부 WAN 룰에서 처리된다고 생각하기 쉽지만,

WireGuard 터널이 맺어진 뒤의 트래픽은 WireGuard 인터페이스 기준으로 봐야 합니다.

즉, 맥북에서 Proxmox로 접속하는 트래픽은 다음과 같이 들어옵니다.

맥북
→ WAN으로 WireGuard 접속
→ WireGuard 터널 생성
→ WireGuard 인터페이스
→ LAN 내부망
→ Proxmox

따라서 WireGuard 인터페이스에도 내부망 접근을 허용하는 룰이 필요합니다.

예시는 다음과 같습니다.

Interface: WireGuard(OPNSense에선 보통 OPT라고 표현)
Protocol: any 또는 필요한 프로토콜
Source: WireGuard net or any
Destination: 192.168.20.0/24
Action: Pass




처음 테스트할 때는 Destination을 any로 넓게 열어 통신 여부를 확인할 수 있습니다.

하지만 최종적으로는 필요한 대역이나 포트만 허용하는 것이 좋습니다.

예를 들어 Proxmox 관리 페이지 접근만 허용하고 싶다면 다음처럼 좁힐 수 있습니다.

Source: WireGuard net
Destination: 192.168.20.2
Destination Port: 8006


7. 맥북에서 WireGuard 설정

이제 맥북 WireGuard 앱에서 터널 설정을 추가합니다.

맥북 설정에는 크게 Interface 영역과 Peer 영역이 있습니다.

Interface는 맥북 자신에 대한 설정입니다.

예시는 다음과 같습니다.

[Interface]
PrivateKey = 맥북 Private Key
Address = 172.16.0.10/32
DNS = 선택 사항

Peer는 OPNsense 서버에 대한 설정입니다.

예시는 다음과 같습니다.

[Peer]
PublicKey = OPNsense WireGuard Public Key
Endpoint = 공인 IP 또는 DDNS 주소:설정포트
AllowedIPs = 172.16.0.0/23, 192.168.20.0/24
PersistentKeepalive = 25

공개키는 안지워도 됐으나 공인IP부분 지우면서 같이 지웠습니당.


여기서 PersistentKeepalive는 NAT 환경에서 연결을 유지하기 위해 사용하는 설정입니다.

맥북이 공유기나 학교 네트워크 뒤에 있으면, 중간 NAT 장비 때문에 연결 상태가 끊긴 것처럼 보일 수 있습니다. 이때 PersistentKeepalive를 25초 정도로 설정하면 주기적으로 작은 패킷을 보내 연결을 유지하는 데 도움이 됩니다.

단, 이 값이 없다고 항상 안 되는 것은 아닙니다. 하지만 외부망에서 안정적으로 접속하려면 설정해두는 편이 좋습니다.


8. 접속 테스트

설정이 끝났다면 맥북에서 WireGuard 터널을 활성화합니다.

먼저 OPNsense WireGuard 대역으로 ping 테스트를 해볼 수 있습니다.

ping 172.16.0.1

이 테스트는 맥북에서 OPNsense의 WireGuard 주소까지 통신이 되는지 확인하는 과정입니다.

그 다음 내부망 게이트웨이로 ping을 보냅니다.

ping 192.168.20.1

여기까지 된다면 맥북에서 OPNsense LAN까지 도달하는 것입니다.

마지막으로 Proxmox 관리 IP로 접근을 테스트합니다.

ping 192.168.20.2

 

 

 

그리고 브라우저에서 Proxmox 관리 페이지에 접속합니다.

https://192.168.20.2:8006

 



제가 원했던 최종 목표는 바로 이 부분이었습니다.

외부에 있는 맥북에서 WireGuard를 켜고, 내부망 주소인 192.168.20.2로 Proxmox에 접속하는 것입니다.

이렇게 하면 Proxmox 관리 페이지를 공인 IP에 직접 노출하지 않고도 외부에서 안전하게 관리할 수 있습니다.


 

9. 문제를 겪었던 부분

WireGuard 설정을 하면서 가장 헷갈렸던 부분은 Handshake와 실제 내부망 접근이 서로 다르다는 점이었습니다.

WireGuard Handshake가 된다는 것은 맥북과 OPNsense 사이에 VPN 터널이 만들어졌다는 뜻입니다.

하지만 Handshake가 된다고 해서 바로 Proxmox까지 접속된다는 뜻은 아닙니다.

예를 들어 다음과 같은 상황이 있을 수 있습니다.

WireGuard Handshake는 성공
하지만 192.168.20.2 Proxmox 접속 실패

이 경우 원인은 여러 가지가 될 수 있습니다.

첫 번째는 맥북 쪽 Allowed IPs에 내부망 대역이 빠진 경우입니다.

맥북 설정에서 AllowedIPs에 192.168.20.0/24가 없으면,

맥북은 Proxmox로 가는 트래픽을 WireGuard 터널로 보내지 않습니다.

두 번째는 OPNsense의 WireGuard 인터페이스 룰이 부족한 경우입니다.

WAN에서 WireGuard 포트만 열어두고,

WireGuard net에서 내부망으로 가는 룰을 만들지 않으면 터널 이후의 트래픽이 막힐 수 있습니다.

(제 경우가 위의 경우와 같았습니다. 2시간은 삽질하며 해결했다는 슬픈 이야기가...

이게 또 인프라의 매력아니겠습니까 ㅋㅋㅋㅋㅋ)

세 번째는 Proxmox 자체 방화벽이나 내부 장비의 응답 경로 문제입니다.

OPNsense까지는 도달했지만 Proxmox에서 응답이 돌아오지 않으면 ping이나 웹 접속이 실패할 수 있습니다.


이 문제를 정리하면 다음과 같습니다.

Handshake 성공
= 맥북과 OPNsense 사이의 VPN 터널 생성 성공

Proxmox 접속 성공
= VPN 터널, 라우팅, 방화벽 룰, 내부망 응답까지 모두 정상

즉, Handshake는 시작점이고, 내부망 접근은 그 다음 단계입니다.

이 차이를 이해하고 나니 문제를 훨씬 명료하게 볼 수 있었습니다.


 

10. 최종 마무리

이번 구성의 최종 흐름은 다음과 같습니다.

맥북
→ WireGuard 터널
→ OPNsense WAN
→ OPNsense WireGuard
→ OPNsense LAN
→ Proxmox 내부 가상 LAN/Bridge
→ Proxmox / 내부 VM / CML

이 구조를 사용하면 외부에서 Proxmox 관리 페이지를 직접 노출하지 않아도 됩니다.

외부에서는 WireGuard 포트만 열어두고,

실제 Proxmox나 내부 VM들은 OPNsense 뒤쪽 내부망에 그대로 둘 수 있습니다.

이번 WireGuard 구성에서 가장 중요했던 포인트는 다음과 같습니다.

1. WireGuard 대역과 내부 LAN 대역을 분리해야 함
2. WAN에는 WireGuard UDP 포트 허용 룰이 필요함
3. WireGuard 인터페이스에는 내부망 접근 허용 룰이 필요함
4. 맥북 AllowedIPs에는 접근하려는 내부망 대역이 포함되어야 함
5. Handshake 성공과 내부망 접속 성공은 다른 단계임
6. Proxmox 관리 페이지는 WAN에 직접 노출하지 않는 것이 안전함

(노출해보시면 알게되실 겁니다...미리 알게 해주신 선배님께 감사를 돌립니다.)


이번 설정을 통해 외부에서도 맥북으로 제 홈랩에 안전하게 접근할 수 있는 기본 구조를 만들 수 있었습니다.

(동생이 자꾸 자기 노트북 왜 가져가서 쓰냐고 난리펴서 스트레스 받았었는데 그 스트레스에서 드디어 해방)

처음에는 WireGuard Handshake, AllowedIPs, WAN 룰, WireGuard 룰이 각각 어떤 역할을 하는지 헷갈렸습니다.

하지만 흐름을 하나씩 나눠보니 결국 핵심은 단순했습니다.

외부에서 들어오는 문은 WAN에서 WireGuard 포트로 열고,
터널 안에서 내부망으로 가는 길은 WireGuard 룰에서 허용하고,
맥북은 AllowedIPs를 통해 어떤 목적지를 VPN으로 보낼지 정하는 구조였습니다.

이렇게 해서 OPNsense 기반 홈랩 네트워크에 WireGuard를 붙이고,

외부 맥북에서 Proxmox와 내부 VM에 접근할 수 있는 구성을 마무리했습니다.

저작자표시 비영리 변경금지 (새창열림)

'Infra' 카테고리의 다른 글

Proxmox 위에 Cisco Modeling Labs 설치해서 네트워크 실습 환경 만들기  (0) 2026.05.11
OPNsense 설치  (0) 2026.05.10
Proxmox 세팅  (0) 2026.05.09
'Infra' 카테고리의 다른 글
  • Proxmox 위에 Cisco Modeling Labs 설치해서 네트워크 실습 환경 만들기
  • OPNsense 설치
  • Proxmox 세팅
heishooni@gmail.com
heishooni@gmail.com
Linux, Cloud, Network 핵심 이론과 실무 구축 과정을 기록합니다. 인프라 엔지니어를 지향하는 기술 블로그이자 트러블 슈팅 저장소입니다.
  • heishooni@gmail.com
    heishooni
    heishooni@gmail.com
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Network
      • Infra
      • 개인공부 N
        • network
        • OS N
        • 자료구조
        • Java
      • TroubleShooting
      • Personal
  • 블로그 메뉴

    • 홈
    • 방명록
  • 공지사항

  • 인기 글

  • 최근 글

  • 링크

    • https://github.com/heishooni
    • https://hooni.nangman.cloud/
  • 태그

    zsh
    NangmanInfra
    네트워크 #network #CGNAT
    WISOFT
    teleport
    AWS Summit
    hushlogin
    bgp hijacking
    WireGuard
    MacOS
    KIRO
    hyperplane
    개발자 설정
    Protocol
    MTR
    Infra
    CML
    Stateful
    Last login
    Devian
    터미널 꾸미기
    네트워크
    troubleshooting
    Stateless
    network
    opnsense
    OS
    proxmox
    ipsec
    homelab
  • hELLO· Designed By정상우.v4.10.6
heishooni@gmail.com
Wireguard 세팅기
상단으로

티스토리툴바