[pfSense] 17. IPsec : pfSense 사이트 간 VPN으로 두 네트워크 잇기

pfSense 홈랩 방화벽 17편 - 사이트 간 VPN

작성자

카테고리:

* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

(pfSense 홈랩 방화벽 ⑰)

원격 접속이 '사람 한 명'이 들어오는 거라면, 사이트 간(site-to-site) VPN은 네트워크 통째로를 잇는다. 집 LAN과 사무실 LAN을 연결해, 양쪽 기기가 마치 같은 건물에 있는 것처럼 서로 접근하게 만든다. 전통적으로 이 자리엔 IPsec을 많이 쓴다.

graph LR
  A[집 LAN 192.168.10.0/24] --- PA[pfSense A]
  PA -->|IPsec 터널| PB[pfSense B]
  PB --- B[사무실 LAN 192.168.20.0/24]

Phase 1 / Phase 2 — 무엇을 맞춰야 하나

사이트 간 IPsec의 90%는 ‘양쪽 설정을 똑같이 맞추기‘다. 두 단계로 나뉜다. Phase 1(IKE)은 두 방화벽이 서로를 인증하고 안전한 협상 채널을 세우는 단계고, Phase 2(ESP)는 실제 트래픽을 실어 나르는 단계다. 아래 항목이 한 글자라도 어긋나면 터널이 안 선다.

단계역할양쪽에서 일치해야 할 것
Phase 1 (IKE)상호 인증·관리 채널암호화·해시·DH 그룹·PSK(사전공유키)·피어 IP
Phase 2 (ESP)실제 데이터 터널로컬/원격 네트워크(서로 거울처럼), 암호화 제안

직접 세워보기 — 두 pfSense로 터널 올리기

랩(4편)에 pfSense VM을 하나 더 만들어 서로 다른 LAN(10.0.0/24와 20.0.0/24)을 주면, 실제 절차는 양쪽에서 이렇다.

  1. VPN > IPsec > Tunnels에서 Phase 1 추가 — Remote Gateway=상대 WAN IP, 인증=Mutual PSK(양쪽 동일 문자열), 암호화 제안 AES256-GCM/SHA256/DH14 같은 세트를 양쪽 동일하게.
  2. 그 P1 아래 Phase 2 추가 — Local Network=내 LAN 서브넷, Remote Network=상대 LAN 서브넷(서로 거울!). 제안도 동일 세트로.
  3. Firewall > Rules > IPsec 탭에 통과 허용 규칙을 양쪽에 추가 — 터널이 서도 이 규칙이 없으면 트래픽은 막힌다.
  4. Status > IPsec에서 Connect를 누르고 Established를 확인.

✅ 확인 — 한쪽 LAN의 클라이언트에서 상대 LAN 클라이언트로 ping이 통하면 완성이다. 일부러 한쪽 P2의 원격 네트워크를 틀리게 바꿔보고, 아래 로그 절에서 어떤 메시지가 찍히는지 관찰해 보면 진단 감각까지 함께 잡힌다.

가장 흔한 실패 — 서브넷이 겹칠 때

집도 사무실도 192.168.1.0/24를 쓰면, 터널이 서더라도 라우팅이 안 된다. 어느 쪽이 ‘로컬’이고 ‘원격’인지 구분이 안 되기 때문이다. 그래서 사이트 간 VPN을 놓을 땐 양쪽 LAN 대역을 반드시 다르게 설계한다 — 예: 집 192.168.10.0/24, 사무실 192.168.20.0/24. 공유기 기본값을 그대로 쓴 두 집을 잇는다면 이 함정에 십중팔구 걸린다.

안 될 때 — 어느 단계에서 멈췄나부터

증상을 Phase 1 / Phase 2 / 통신 셋으로 나눠 보면 원인이 좁혀진다. Status > IPsec과 로그(VPN > IPsec > 로그)로 어디까지 올라갔는지 먼저 확인한다.

  • Phase 1이 안 뜬다 — PSK 오타, 암호화 제안 불일치, 피어 IP, 그리고 방화벽에서 UDP 500·4500과 ESP 허용 여부.
  • Phase 1은 뜨는데 Phase 2가 안 뜬다 — 양쪽 Phase 2의 로컬/원격 네트워크가 서로 거울처럼 맞는지.
  • 터널은 섰는데 통신이 안 된다 — 방화벽 IPsec 탭에 통과 규칙이 있는지, 서브넷 겹침, 라우팅.

로그 읽는 법 — 어디서 멈췄는지는 로그가 말한다

Status > System Logs > VPN의 IPsec(charon) 로그는 처음엔 암호처럼 보이지만, 몇 가지 열쇠 문구만 알면 단계 진단이 된다.

received NO_PROPOSAL_CHOSEN error notify
  → Phase 1 암호화 제안 불일치 — 양쪽 암호화·해시·DH를 대조하라

parsed INFORMATIONAL_V1 ... AUTHENTICATION_FAILED
  → PSK 불일치 — 사전공유키 오타(공백 포함) 확인

IKE_SA established ... but no matching CHILD_SA config found
  → Phase 1은 성공, Phase 2 네트워크 정의가 거울이 아님

retransmit 1 of request with message ID 0
  → 상대가 무응답 — 피어 IP, UDP 500/4500 차단 여부

요령은 로그에서 맨 처음 나온 에러를 잡는 것이다 — 그 뒤로 이어지는 재시도·타임아웃은 전부 첫 에러의 메아리다.

IPsec vs OpenVPN·WireGuard — 뭘 고를까

사이트 간을 굳이 IPsec으로 하는 이유는 상호운용성이다. 상대가 시스코·미크로틱 같은 다른 장비여도 IPsec은 표준이라 잘 붙는다. 반대로 양쪽 다 pfSense거나 설정이 단순한 걸 원하면, 요즘은 WireGuard(설정 줄 수가 훨씬 적다)나 OpenVPN이 더 편하다는 평이 많다. ‘상호운용성=IPsec, 간결함=WireGuard’로 기억하면 선택이 쉽다.

VPN 세 방식을 봤으니, 다음 편은 방향을 바꾼다. 내가 들어가는 게 아니라, 내 트래픽을 상용 VPN으로 내보내 우회하는 구성이다.

자주 묻는 질문 (FAQ)

사이트 간 VPN이 뭔가요?

두 지점(예: 집과 사무실)의 네트워크를 통째로 잇는 것입니다. 각 지점 기기들이 서로 내부망처럼 통신합니다.

IPsec과 OpenVPN 사이트 간 VPN 중 뭘 고르나요?

상대가 다른 벤더 장비면 표준 IPsec이 호환에 유리하고, 양쪽 다 pfSense면 OpenVPN/WireGuard가 설정이 쉽습니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다