raspberry piを VPNサーバ かつ DNSサーバ化

raspberry piVPNサーバ (openswan) かつ adblock DNSサーバ (pihole)化

(効用)
1) 自宅内WiFi接続のWeb surfingで、自動的にAdblockがなされる。
2) 外出時、スマホiPhone)等で自宅にVPN接続で、通信の暗号化・Web surfingのAdblock・自宅のコンピュータにアクセス、が可能となる。

導入記、および導入時ハマった箇所のメモ。

(A) VPNサーバ(L2TP)

(1) openswanの導入

> sudo apt-get install openswan xl2tpd lsof
途中、X.509証明書は create > self-signed ...

confファイル等の修正 (参考:http://nlinux.nikkeibp.co.jp/2016/11/article/ )
Openswan-xl2tpd.zipをダウンロード・解凍

> sudo vi /etc/ipsec.conf
#VPNサーバーのアドレス
left=xx.xx.xx.xx (サーバとなるraspberry piIPアドレス

> sudo vi /etc/xl2tpd/xl2tpd.conf
ip range = xx.xx.xx.xx-xx.xx.xx.xx    (アサインするIPアドレスの範囲。DHCPサーバが割り振る範囲と重ならないように)
; VPNサーバーのIPアドレス
local ip = xx.xx.xx.xx

> sudo vi /etc/ipsec.secrets
: PSK "xxxxxxxxxx" (共有パスワード)

> sudo vi /etc/ppp/chap-secrets
#ユーザー名  パスワード
"xxx" * "xxx" * (必要に応じて追加)

> sudo vi /etc/sysctl.conf
# クライアントからの通信をLAN内に転送
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

> sudo vi /etc/ppp/options.l2tpd.lns
ms-dns xx.xx.xx.xx (DNSサーバ (次段のpihole)のIPアドレス

> sudo service ipsec restart
> sudo service xl2tpd restart
ipsec, xl2tpd 両方必要 (ハマッたその1)

(2) 外部からの接続を受け付けるルータ (xx.xx.xx.xx)に、外部からのUDPポート 500, 4500を、VPNサーバ(xx.xx.xx.xx)に転送させる設定を入れる。(各ルータの設定法を参照。)

(3) raspberry pi 起動時に /etc/init.d/ipsecが走らない、、、
raspberry piのWeb GUI画面(https://xx.xx.xx.xx/raspberry piIPアドレス

> sudo raspi-config (ハマッたその2)
3 Boot Options > B2 Wait for Network at Boot > Yes 


(B) Adblock DNSサーバ (piholeの導入)

https://pi-hole.net/ を参照し、curl ...で指示に従ってインストール。lighttpdも入れておく。
> curl -sSL https://install.pi-hole.net | bash

インストールが済めば、web browserで、https://xx.xx.xx.xx/admin で、piholeのweb画面を出せる。

(1) Loginパスワードの設定
インストール時にパスワードが設定されるが、、、気がつかなかったら、以下のコマンドで再設定可。VPNサーバを立てるためraspberry piは外部からのアクセスを許可するので、securityのためログインパスワードは必須。

> pihole -a -p

(2) 以下、piholeのweb画面で左パネルのsettingで設定。

> DNS画面
- Customに、xx.xx.xx.xx (raspberry piIPアドレス

- Interfaces... に、[Listen on all interfaces]を選択。(ハマッたその3)
VPNサーバとDNSサーバが共立するにはこの選択が必要。(ここが解るまでに見当違いなtry&errorを相当繰り返した、、、、)

> DHCP画面

上流の光ファイバールータで DNSraspberry piを選択出来れば良いのだが、softbank光ユニットではDNSは独立に指定出来ない(ハマッたその4)。このような時のため、piholeがDHCPサーバ機能を用意している。

- 上流ルータのDHCP機能を停止、したいが、softbank光ユニットは disableボタンが無い、、、。家庭内で固定IPアドレスを振る範囲のみを残す。

- piholeのDHCPのenableを選択。割り振るIPアドレスの範囲が、他(上流ルータ、VPNサーバ)が指定する範囲と重ならないように注意。Gatewayは、raspberry piのアドレスでも上流ルータのアドレスでも問題ない様子。

以上で終了。

(ハマッたところ)
> sudo service ipsec restart
> sudo service xl2tpd restart
ipsec, xl2tpd 両方必要 (ハマッたその1)

> sudo raspi-config (ハマッたその2)
3 Boot Options > B2 Wait for Network at Boot > Yes 

- Interfaces... に、[Listen on all interfaces]を選択。(ハマッたその3)

softbank光ユニットではDNSは独立に指定出来ない(ハマッたその4)

記:
2018/10/26
Raspberry pi3: Raspbian GNU/Linux 8 (jessie)