일단 라즈베리파이를 샀는데 도저히 어디에 써먹을지 모르겠어서 쳐박아뒀다면 Pi-hole을 활용해보길 강력히 추천한다. 물론 가상화 서버 내의 vm에서 돌리는 것도 가능하다.

먼저 뭐 하는 것들인지부터 보자. Pi-hole은 네트워크 선에서의 애드블록이다. 그 자체가 DNS 패스스루의 기능을 하며 DNS 쿼리중에 블랙리스트로 차단된 광고들을 걸러버린다. 파이홀이 설치된 기기를 라우터에서 DNS로 설정하게 되며, 그로인해 그 라우터 하에 있다면 기기를 가리지 않고 광고 차단이 되는 시스템. DNS 선에서부터 막아버려 아예 요청도 하지 않으니 웹 로딩 시간도 줄어든다. 특히 애드블록 설정이 힘든 ios 기기에서 발군의 성능. 유투브 광고까지 막아버리지만 국내 광고 업체들은 별로 포함이 안돼있다는 단점도 있다.

OpenVPN은 따로 별로 설명이 필요 없지 싶다. 집 밖에서 인터넷을 할때 VPN을 연결해 놓으면 모든 정보들이 터널을 통해 서버로 이동되어 상대적으로 훨씬 안전한 인터넷을 즐길 수 있다는게 장점. 부차적으로 모든 집안의 기기들을 로컬로 연결할 수 있다는 장점도 있다. 핸드폰으로 이동중에 연결해서 사용해도 위치 서비스 같은건 정상적으로 작동한다.

이 두개를 같이 설정하게 되면 집 밖에서도 VPN을 통해 안전한 인터넷 + 애드블록의 기능까지 사용 가능하다는 엄청난 시너지가 나온다. 내 서버는 데비안에서 돌아가는 중이며 스크립트를 사용하면 매우 쉽게 설정할 수 있다. 공개된 스크립트들 이므로 크게 보안은 신경쓰지 않았다. 일단 이렇게 하면 워낙 편하기에;;

데비안 8.8을 기준으로 설명하며, 우분투 16.04에서도 정확히 같은 방법으로 설치했다.

다음은 OpenVPN과 Pi-hole 모두 설정할때의 기준이며, Pi-hole만 설정할 경우 OpenVPN 설치 과정을 건너뛰고 Pi-hole만 설치하면 된다. 또 추가적인 설정 부분도 건너뛰면 된다.

cd /home/username 으로 홈폴더로 이동해서먼저 OpenVPN을 설치해준다.

wget https://git.io/vpn -O openvpn-install.sh

sudo bash openvpn-install.sh

을 통해 스크립트를 다운받아 실행해준다. 이 스크립트는 추후에 ovpn파일을 만드는데도 쓰이니 걍 홈폴더에 받는다.

이어서 curl과 Pi-hole을 설치해준다.

sudo apt-get install curl

curl -L https://install.pi-hole.net | bash

Pi-hole로 VPN 커넥션과 네트워크 모두 애드블록을 하고 싶다면 위 동영상처럼 interface를 tun0으로 설정해준다.

OpenVPN을 설치하지 않았다면 interface를 eth0으로 설정하면 된다. 다음 과정도 OpenVPN을 설치했을 경우만 따라하면 된다.

OpenVPN과 같이 쓸거라면 추후로 몇가지 설정이 더 필요하다. 우선 /etc/openvpn/server.conf 파일에 수정이 좀 필요하다.

sudo nano /etc/openvpn/server.conf

여기서

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

이 부분을

push "route 192.168.X.0 255.255.255.0"
push "dhcp-option DNS 192.168.X.XX"

이렇게 고쳐준다. 굵은 글씨의 192.168.x.x 부분은 각자의 네트워크 사정에 맞게 수정해야 한다.

  1. 내부 네트워크가 192.168.1.1~255 라면 192.168.1.0로 첫 줄을 수정한다. 10.0.1.1~255라면 10.0.1.0 이런식으로 설정.
  2. 두번째줄은 Pi-hole을 설치한 서버의 ip주소를 넣어주면 된다. ifconfig/ip로 알아보자.

/etc/dnsmasq.d/01-pihole.conf 파일도 수정이 필요하다.

sudo nano /etc/dnsmasq.d/01-pihole.conf

여기 맨 아래 부분에 다음 두 줄을 추가해준다.

listen-address=127.0.0.1
listen-address=192.168.x.x

두번째 줄에 192.168.x.x 부분은 Pi-hole이 설치된 기기의 ip주소로 바꿔서 입력하자.

서버를 재부팅하고, 라우터에 DNS 항목을 Pi-hole이 설치된 기기 ip 주소로 바꿔준 후 라우터도 재부팅하면 그 라우터 아래 모든 기기에서 파이홀이 작동한다. OpenVPN 클라이언트와 ovpn 파일을 이용해서 외부에서 VPN연결을 해도 역시 파이홀이 작동한다.