WireGuard VPN을 이용하여 외부에서 내부로 포트포워딩 없이 쉽게 접속하는 방법을 알아보겠습니다.
- 서버 설치
# apt -y install wireguard
wireguard 설치를 진행합니다.# ip route show default

로 네트워크명을 확인합니다.
위 명령어로 확인 시 ens3로 보여 해당 네트워크 명을 기준으로 진행하겠습니다.# cd /etc/wireguard/
# umask 077
# wg genkey | tee server.key | wg pubkey > server.pub
# wg genkey | tee client1.key | wg pubkey > client1.pub
/etc/wireguard 디렉토리에 키를 개인 키와 퍼블릭 키를 생성합니다.
client1.key, client1.pub, server.key, server.pub가 생성된 것을 확인합니다.
# cat > /etc/wireguard/wg0.conf <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(cat server.key)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE[Peer]
# client1
PublicKey = $(cat client1.pub)
AllowedIPs = 10.8.0.2/32
EOF
위에서 생성한 키 값을 EOF를 통해서 /etc/wireguard/wg0.conf 파일을 생성하여 입력해줍니다.# chmod 600 /etc/wireguard/wg0.conf

# vi /etc/sysctl.d/99-wireguard.conf
/etc/sysctl.d 디렉토리에 99-wireguard.conf 파일을 생성하여 아래 사진과 같이 값을 입력해 줍니다.
# sysctl –system
# sysctl net.ipv4.ip_forward
/etc/sysctl.d/99-wireguard.conf에서 설정한 값을 적용해주고
값이 적용 되었는 지 확인해줍니다.# ufw allow 51820/udp
# ufw allow OpenSSH
# ufw enable테스트를 위해 ssh와 wireguard에서 사용하는 51820 포트 룰셋을 추가 후 ufw 방화벽을 활성화합니다.

# systemctl enable –now wg-quick@wg0
# wg show
wireguard를 실행 후 적용 되었는 지 확인합니다.
- Client 설치
# cat > /etc/wireguard/client1.conf <<EOF
[Interface]
PrivateKey = $(cat client1.key)
Address = 10.8.0.2/24[Peer]
PublicKey = $(cat server.pub)
Endpoint = 서버공인IP:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25
EOF클라이언트 키를 생성해줍니다.
클라이언트 키는 연결에 사용할 윈도우 PC에 옮겨줍니다.

https://www.wireguard.com/install/
위 페이지에 접속하여 윈도우 버전으로 다운로드 받은 후 실행해줍니다.

설치한 프로그램 실행 후 ‘파일에서 터널 가져오기’를 통해서 옮긴 client 설정파일을 불러옵니다.

아래 화면은 적용한 화면입니다.

아래 사진은 서버이며, 아래 wg0가 VPN ip입니다.

아래 사진은 클라이언트 ip입니다.

위 질의는 인터페이스 활성화 전 질의 값이며, 활성화 후에는 정상적으로 질의가 되는 점을 확인할 수 있습니다.

이상으로 포트포워딩 없이 외부에서 내부로 접근하는 방법을 알아봤습니다.
이 글은 본인의 실제 경험과 학습을 기반으로 직접 작성하였으며, AI는 참고용으로만 활용하였습니다.
감사합니다.





