pfSense를 이용한 OpenVPN-p2p

이번에는 pfSense를 이용하여 두개(혹은 2개이상)의 사이트를 VPN 터널을 이용하여 연결하는 과정을 알아보도록 하겠다.

아래처럼 Site A와B를 연결하여 사설망인 192.168.100.0 네트워크와 192.168.200.0  네트워크를 연결하여

원격지 네트워크의 리소스(프린터,팩스,전화 등등)을 이용하도록 하는 것이다.

아래 설명되는 IP 주소는 아래 그림을 기준으로 한다.

Site A의 pfSense 가 서버 Site B의  pfSense 가 클라이언트가 되어 서로 연동이 되는 과정을 살펴보도록 하자.

OpenVPN 말고도 ipsec등을 이용해서도 연동이 가능하나 일단 가장 간편하게 구성이 가능한  OpenVPN으로 구성해 보도록 하자.

OpenVPN 서버(Site A)

VPN->OpenVPN-> Servers -> Add  를 선택하여 서버를 추가해준다.

일반설정
Server Mode: Peer to Peer(Shared Key)

참고: OpenVPN의 서버모드

  • Peer to Peer (SSL/TLS) – Site to Site 연결모드로 6개 이상의 사이트들을 연동할 때 사용하기를 권장함
  • Peer to Peer(Shared Key) – Site to Site 연결모드로 6개 미만의 사이트들을 공유키를 가지고 연결함.
  • Remote Access (SSL/TLS) – 원격 접속 모드로 인증서를 이용하여 사이트에 연결
  • Remote Access (User Auth) –  원격 접속 모드로 사용자ID와 비번을 이용하여 연결
  • Remote Access (SSL/TLS + User Auth) – 인증서와 사용자 정보를 이용하여 연결

기타 나머지는 그대로 두도록 한다.

암호화 설정

공유키를 생성하도록 하며 여기서 생성된 공유키는  OpenVPN 클라이언트(site B)에서 사용된다.

Shared Key: Checked

아래처럼 shared key가 생성이 된다.

터널설정

Site to Site를 연결하기 위한 설정

IPv4 Tunnel Network: 10.0.0.0/24

* site A와 site B에서 사용하지 않는 네트워크를 하나 생성해서 터널네트워크로 사용한다.

IPv4 Remote Network(s): 192.168.200.0/24 (Site B의 사설망을 적어준다)
Compression: 터널을 통과하는 패킷 압축을 사용할 것인지 여부인데 모르면 그냥 기본값으로 둔다.

Save 를 눌러서 설정을 마친다.

마치고 나서 편집모드로 들어가서  암호화 과정에서 생성한 shared Key를 메모장이나 적당한 곳에 복사해두도록 하자.

이것으로 서버쪽 설정은 모두 마무리 되었다.

 

OpenVPN 클라이언트(Site B)

VPN->OpenVPN->Clients 에 가서 Add를 눌러서 클라이언트를 추가한다.

서버쪽 설정과 동일하게 Server Mode를 선택한다.

Server Mode: Peer to Peer (Shared Key)
Server Host or address: OpenVPN서버의 WAN  IP address 또는 도메인

 

암호화 설정

Auto generate: Uncheck

Shared key: 서버쪽에서 생성된 공유키를 복사해서 그대로 입력한다.(copy & paste)

터널 설정

IPv4 Tunnel Network: 10.0.0.0/24(Site A와 동일하게 적어준다)
IPv4 Remote Network(s): 192.168.100.0/24 (Site A의 사설망을 적어준다)

입력 후  Save 해서 종료한다. 저장 후 VPN->OpenVPN->Clients에 아래와 같이 Client가 추가가 된다.

Site to Site 연결하기

Site A의 pfSense-> Status->OpenVPN 에서 VPN서버 실행확인

Site B의 pfSense-> Status->OpenVPN 에서 VPN Client 실행확인

A와B사이트가 연결이 되면 위처럼 Status up 상태로 되며 에러가 난다면 로그등을 확인해 보도록 하자.

정상적으로 연결이 되었다면 192.168.100.0/24 네트워크와 192.168.200.0/24 네트워크와 통신이 되는 것을 확인할 수 있다.

 

pfSense를 이용한 OpenVPN 서버 구성하기

이 강좌는 OpenVPN을 이용하여 VPN을 구성한다.

VPN은 터널링을 통해서 데이터들이 암호화 되어 전송이 되므로 중간게 패킷을 가로채거나 수정하기가 어렵기 때문에

보호되어야 될 네트워크는 가급적 VPN을 이용하여 엑세스 하는 것이 조금 더 안전하다.

pfSense는 여러가지 VPN구성을 지원한다.(IPsec,L2TP,openVPN)

각각의 장단점들이 있고 구성에 따라서 속도들도 약간씩은 차이가 난다. 상황에 맞게 골라서 사용하면 된다.

나름 비교가 잘되어 있는 사이트를 참고해보도록 하자.(https://ko.vpnmentor.com/blog/vpn-protocol-comparison-pptp-vs-l2tp-vs-openvpn-vs-sstp-vs-ikev2/)

pfSense에서는 정말 간단하게 VPN 서버를 구성할 수 있다.

pfSense가 설치되어 있다고 가정하고 기본적으로 WAN,LAN으로만 구성이 되어있는 환경을 기준으로 구성을 해보도록 한다.

대부분의 경우 VPN을 구성하는 경우 일반적으로 아래처럼 두가지 정도의 형태로 구성을 한다.

  1. 다수의 클라이언트에게 특정 네트워크에  VPN 터널을 이용해서 연결하는 형태
  2. Site to Site(원격 사무소와 메인사무소등을 하나의 네트워크로 연결하는 형태)

 

일단 첫 번째 형태의 원격접속용 OpenVPN서버를 구성해도록 하겠다.

기본 네트워크 구성은 아래와 같다고 가정하고 구성해보도록 하자.

OpenVPN 서버구성하기
pfSense에서 제공해주는 OpenVPN 마법사를 이용해서 간단히 10분 정도만 투자하면 훌륭한 VPN 서버를 구성할 수 있다.

  1. OpenVPN 구성마법사 실행(VPN->OpenVPN->Wizards)
  2. 인증 구성
    (Local database 말고 windows AD,LDAP,RADIUS등을 이용해서 유저인증이 가능하다.)
  3. CA 설치(인증서버)
  4. 서버인증서 추가
  5. OpenVPN 서버 셋업
    대부분은 기본값으로 두고 필요한 정보들만 입력해주면 된다.
    가장 중요한 부분은 터널 설정인데 Tunnel NetworkLocal Network만 잘 설정해주면 된다.
    터널 네트워크는 VPN클라이언트와 VPN서버와 터널로 연결할때 사용할 네트워크 대역이다.
    클라이언트,서버 양쪽 모두 사용하지 않고 있는 사설망으로 잡아주면 된다.
    로컬 네트워크는 VPN 서버를 통해서 접속할 내부 네트워크 대역을 적어주면 된다.
    즉  pfSense 방화벽의  LAN(혹은 추가적인 사설네트워크)를 적어주면 된다.




  6. 방화벽 설정
    자동으로 방화벽룰을 추가하는 부분이며 추가해주지 않는다면 나중에 수동으로 추가해 줘야 한다.
    위의 과정을 마치면 아래와 비슷한 화면을 만나게 될 것이다.
  7. VPN사용자 추가
    pfSense web config-> System->User Manager -> 사용자 추가
    보안을 강화하기 위해서 VPN서버 접속시 SSL/TLS + 사용자ID/PASSWD를 이용해서 접속하게 하는게 좋으므로
    사용자 인증서도 반드시 생성해두도록 한다.(Certificate 체크)
    Descriptive name 에는 사용자를 구분할 수 있는 정보를 넣어주도록 하자.
  8. VPN서버 설정 변경
    서버 인증 방식을 변경해 준다. (VPN->OpenVPN)
    Server Mode를 SSL/TLS+User Auth로 설정해주도록 한다.
  9. OpenVPN export툴 설치
    인증서와 서버 접속 정보를 쉽게 내보내기를 해주는 도구를 설치하도록 한다.
    System->Package Manager-> Available Packages-> Openvpn-client-export


    정상적으로 설치가 되었다면 VPN->OpenVPN메뉴에 아래와 같이 client export 탭이 생겨난다.
  10. VPN클라이언트 내보내기
    VPN->OpenVPN-> Client Export
    각 사용자 별로  인증서와 서버 접속정보(.ovpn) 파일을  PC의 적당한 곳에
    다운로드(Standard Configurations->Archive) 한 다음 압축을 풀어두고
    OpenVPN client를  PC에 설치하고 VPN서버에 접속하면 된다.
    OpenVPN 클라이언트 설치 URL도 링크가 되어 있으니 다운로드 받아서 설치하면 된다.
    필자의 경우 MacOS를 사용중이라 Tunnelblick 과 Viscosity 를 사용 중이다.
    Windows 사용자의 경우에는 Windows installer 버전을 받아서 설치하면 된다.

VPN client를 이용해서 OpenVPN서버에 접속 후 LAN서버와 통신이 된다면 모든 설정이 마무리가 된다.
VPN서버에 접속 후 서버에서 설정한  Tunnel network 가 클라이언트쪽에 생성이 되면 정상적으로 터널링이 된 것이다.