간마늘작업소

[WireGuard VPN] 1.Podman Container를 이용한 WireGuard VPN 설치 본문

작업물/WireGuard VPN

[WireGuard VPN] 1.Podman Container를 이용한 WireGuard VPN 설치

간마늘 2022. 6. 21. 20:50

0.개요

  • HAProxy를 화이트리스트 IP 방식으로 쓰고 있어서 기본적으로는 외부에서 개인 서버에 접근할 수 없음.
  • 집 내부나 회사의 경우 IP를 등록해뒀으니 상관이 없으나 시시각각 변경되는 스마트폰/태블릿 컴퓨터 IP는 대응하기 어려움.
  • 그래서 VPN 도입을 결정함.
  • WireGuard를 선택한 이유
    https://tech.devsisters.com/posts/wireguard-vpn-1/

 

1.설치하기

  • Podman을 이용해서 설치.
  • 개인 서버와 같이 두지 않고 라즈베리파이 3에 CentOS 7을 올려서 별도의 서버를 구축.
yum install podman
  • WireGuard 이미지 : docker.io/linuxserver/wireguard:latest
podman pull docker.io/linuxserver/wireguard:latest
podman run -d\
   --name=wireguard\
   --cap-add=NET_ADMIN\
   --cap-add=SYS_MODULE\
   -e PUID=$UID\
   -e PGID=$(id -g $USER)\
   -e TZ=Asia/Seoul\
   -e SERVERURL='서버 URL 혹은 공인 IP'\
   -e SERVERPORT=22143\
   -e PEERS=5\
   -e PEERDNS=8.8.8.8\
   -e INTERNAL_SUBNET=192.168.0.0\
   -p 22143:51820/udp\
   -p 22144:51821/tcp\
   -v /home/podman-volume:/config\
   -v /lib/modules:/lib/modules\
   --sysctl="net.ipv4.ip_forward=1"\
   --sysctl="net.ipv4.conf.all.src_valid_mark=1"\
   docker.io/linuxserver/wireguard
  • 연동 방법 설정
    • SERVERURL에는 사용할 서버 URL이나 서버의 공인 IP를 등록.
    • PEERS는 생성할 계정의 숫자라고 이해하면 됨.
      • PEERS=5는 5개의 계정을 생성한다는 의미.
    • UDP/51820과 TCP/51821을 적당한 포트에 포트포워딩.
      • 방화벽 설정에서 UDP/51820은 외부 포트포워딩이 활성화 되어있음.
    • Podman Volume으로 Container 내부 설정 디렉토리와 연결.

 

2.방화벽 설정

firewall-cmd --permanent --zone=public --add-port=22143/udp
firewall-cmd --reload
firewall-cmd --zone=public --list-all
  • 방화벽 설정 외부 포트포워딩 적용.
  • 방화벽을 비활성화했다면 넘어가도 됨.

  • 공유기를 사용할 경우, 공유기 포트포워딩 설정은 등록해줘야함.
    • VPN 서버 방화벽이 비활성화 되었다 하더라도 해당 설정은 해줘야함.

 

3.systemd 등록

podman generate systemd wireguard  > /etc/systemd/system/podman_wireguard.service
cat /etc/systemd/system/podman_wireguard.service

systemctl status podman_wireguard.service

 

4.기타

ip link add cni-podman0 type bridge
  • 필자의 경우, Podman의 Bridge 네트워크가 자동으로 생성되지 않는 문제가 발생했음.
  • 이를 수동으로 생성해야 했음.
  • 만약, VPN 서버가 재부팅된다면 그 때마다 자동으로 생성되게끔 해야함.
vi /etc/rc.d/rc.local
(전략)

ip link add cni-podman0 type bridge
  • 하단 적당한 위치에 추가하고 저장.
chmod +x /etc/rc.d/rc.local

systemctl enable rc-local.service

'작업물 > WireGuard VPN' 카테고리의 다른 글

[WireGuard VPN] 2.WireGuard VPN 사용을 위한 설정  (0) 2022.06.21
Comments