WireGuard · 2026-02-02

UFW와 iptables로 WireGuard 방화벽 설정

UFW와 iptables를 함께 이용해 WireGuard 트래픽을 제어하고 NAT·포워딩을 안전하게 구성하는 상세 설정법과 검증 절차

작성일 : 2026-02-02 ㆍ 작성자 : 관리자
post
목차

개요

WireGuard는 간단하고 빠른 VPN이다. 그러나 기본 네트워크 정책만으로는 충분하지 않은 경우가 많다. UFW는 사용이 쉬운 프런트엔드 방화벽이며, iptables는 세부 제어가 가능한 저수준 도구다. 두 가지를 조합하면 관리 편의성과 세밀한 규칙을 동시에 확보할 수 있다. 본문은 UFW WireGuard 설정과 iptables WireGuard 규칙을 함께 적용하는 절차를 설명한다.

왜 UFW와 iptables를 함께 쓰는가

장점

  • UFW로 기본 허용·차단 정책을 간단히 관리
  • iptables로 NAT와 포워딩, 고급 매칭 조건 처리
  • 둘의 조합으로 서비스별 예외 처리와 성능 조절 가능

준비 사항

  • WireGuard 설치 및 기본 인터페이스(wg0) 구성
  • 서버의 공인 인터페이스 이름 확인(예: eth0 또는 enp3s0)
  • UFW 설치 및 활성화 상태 확인

WireGuard 기본 설정 예시

서버 측 설정은 /etc/wireguard/wg0.conf에 저장된다. 키와 포트를 미리 준비한 상태를 가정한다.

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32

UFW 기본 정책과 허용 규칙

UFW는 포트 수준에서 접근을 제어하는 용도로 설정한다. WireGuard UDP 포트는 명확히 허용한다. 또한 내부 네트워크 포워딩을 허용하려면 /etc/ufw/sysctl.conf와 /etc/default/ufw에서 포워딩을 활성화해야 한다.

# WireGuard 포트 허용 (예: 51820 UDP)
ufw allow 51820/udp

# SSH 허용 예시
ufw allow 22/tcp

# 기본 정책 설정 예시
ufw default deny incoming
ufw default allow outgoing

# UFW 재시작
ufw enable

포워딩 활성화

/etc/default/ufw에서 DEFAULT_FORWARD_POLICY="ACCEPT"로 변경 후 UFW를 재시작하면 기본 포워딩 동작이 허용된다. 다만 세부 NAT 규칙은 iptables로 관리하는 것이 안전하다.

iptables로 NAT 및 포워딩 규칙 적용

WireGuard 트래픽을 인터넷으로 라우팅하려면 NAT(MASQUERADE)와 포워딩 허용이 필요하다. 아래 예시는 wg0에서 eth0로 나가는 트래픽을 NAT 처리하는 규칙이다.

# IPv4 포워딩 허용 (sysctl로 설정)
echo 1 > /proc/sys/net/ipv4/ip_forward

# NAT 테이블에 MASQUERADE 추가
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE

# FORWARD 체인에 허용 규칙 추가
iptables -A FORWARD -i wg0 -o eth0 -s 10.0.0.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o wg0 -d 10.0.0.0/24 -m conntrack --ctstate ESTABLISHED -j ACCEPT

UFW와 충돌 피하기

UFW가 내부적으로 iptables 규칙을 생성하므로 수동으로 추가한 규칙이 초기화될 수 있다. 이를 피하려면 다음 방법 중 하나를 선택한다.

  • UFW의 before.rules와 after.rules에 NAT·포워딩 규칙을 넣는다.
  • 부팅 시 실행되는 스크립트로 iptables 규칙을 복구한다.

before.rules 예시 (UFW 통합)

/etc/ufw/before.rules에 NAT 규칙을 추가하면 UFW가 적용될 때 함께 로드된다. 파일 상단에 NAT 블록을 넣는 형태가 일반적이다.

# /etc/ufw/before.rules 예시 추가 부분
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
COMMIT

실전 예제: 전체 흐름 요약

  • WireGuard 구성 파일 준비 및 서비스 시작
  • UFW로 포트(51820/udp)와 SSH 등 기본 서비스 허용
  • /etc/default/ufw에서 포워딩 정책 ACCEPT로 설정
  • /etc/ufw/before.rules에 NAT 규칙 추가 또는 iptables 직접 적용
  • sysctl로 net.ipv4.ip_forward 활성화
  • 규칙 적용 후 연결 검증

연결과 규칙 검증

검증은 단계별로 진행하는 것이 바람직하다. 먼저 WireGuard 인터페이스의 IP 할당과 피어 연결 상태를 확인한다. 그다음 외부로의 패킷 전달과 포트 변환이 제대로 되는지 확인한다.

# WireGuard 상태 확인
wg show

# 인터페이스 IP 확인
ip addr show wg0

# 라우팅 확인
ip route show

# 실제 패킷 흐름 확인 (서버에서 외부로 핑)
ping -c 3 8.8.8.8

주의사항 및 권장 설정

  • UFW의 규칙 변경 시 before.rules와 after.rules를 함께 검토
  • iptables 규칙은 재부팅 이후에도 유지되도록 저장 및 복원 절차 필요 (예: iptables-persistent)
  • WireGuard 포트는 기본 51820 대신 서비스 환경에 맞춰 변경 가능
  • 로그를 통해 포워딩 및 차단되는 트래픽을 주기적으로 확인

결론

WireGuard UFW 방화벽 구성을 iptables 규칙과 함께 적용하면 관리성과 보안성을 동시에 확보할 수 있다. 핵심은 UFW로 기본 접근을 제어하고, iptables로 NAT와 포워딩 같은 정밀 제어를 담당시키는 구조다. 마지막으로 변경 사항은 단계별로 검증하면서 적용하는 것이 안전한 운영에 도움이 된다.

UFW WireGuard 설정 iptables WireGuard 규칙 WireGuard UFW 방화벽 WireGuard 설정 UFW 설정 Linux 방화벽 VPN 보안 iptables 규칙 서버 보안