Debian GNU/Linux での pptpd 設定 (nat しない場合)
※ VPS 等で pptpd を設定し、nat する場合は、「Debian GNU/Linux での pptpd 設定 (nat する場合)」を参照下さい。
以前、VPS において、pptpd の設定を行ったが、これはグローバル IPv4 の割り当てが 1 個のみで、VPN クライアントはこの IPv4 を共有して出ていくように、VPN 用のプライベートネットワークから nat する構成だった。
今回は、PPTP クライアントの IPv4 アドレスが、その LAN のネットワーク内と同一ネットワーク内に存在するような設定を行ってみた。
例えば、自宅のルータで、GRE と TCP 1723 を LAN 内のサーバに通信できるようにしておいて、外部から自宅へ VPN 接続をする用途を想定している。
■前提
- ネットワーク内において、いくつかのプライベート IP アドレスが自由に使用できる環境である。
- 今回は 192.168.1.0/24 な一般的な家庭内 LAN を想定。
- VPN 側に割り当てられる IPv4 アドレスは、他の機器で使用されていない、されない事。
- OS は Debian GNU/Linux 6.0 squeeze を利用した。
- PPTP サーバ名は localpptpd とする。
■想定するネットワーク
- ネットワークアドレス : 192.168.1.0/24
- デフォルトゲートウェイ : 192.168.1.1
- DNS サーバ : 192.168.1.1
- pptpd を設定するサーバ : 192.168.1.2 (インタフェースは eth0)
- VPN クライアントに割り当てる IPv4 アドレス : 192.168.1.201 ~ 192.168.1.210 (サーバ側では ppp0 ~ ppp9 のインタフェースと通信する)
■設定
サーバ側設定手順としては、以下の通り。
・pptpd をインストール
# apt-get install pptpd
・/etc/pptpd.conf を修正
option /etc/ppp/pptpd-options
logwtmp
localip 192.168.1.2
remoteip 192.168.1.201-210
※ localip はサーバ自身の eth0 の IPv4 アドレスを指定する。
※ remoteip には、VPN クライアントに割り当てる IPv4 アドレスを指定する。
・/etc/ppp/pptpd-options を修正
name localpptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.1 # DNS サーバを指定
proxyarp
nodefaultroute
lock
nobsdcomp
mtu 1280
mru 1280
※ mtu と mru の指定をしておかないと、接続できないサイトなどが出る可能性がある。
・/etc/ppp/chap-secrets に PPTP 接続するアカウントを設定
ユーザ名 localpptpd パスワード *
※上記のような書式で指定する。
・pptpd を再起動
# /etc/init.d/pptpd restart
・iptables のルールに以下を追加。
# iptables -P FORWARD DROP
# iptables -A INPUT -i eth0 -p 47 -d 192.168.1.2 -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp --dport 1723 -d 192.168.1.2 -j ACCEPT
# iptables -A INPUT -i ppp+ -j ACCEPT
# iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
# iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT
# iptables -A FORWARD -i ppp+ -o ppp+ -j ACCEPT
※必要に応じて、上記の設定が恒常的に有効となるように何らかの方法で設定する。
・/etc/sysctl.conf を修正
net.ipv4.ip_forward = 1
を追加。
・/etc/sysctl.conf の設定内容を有効とする
# sysctl -p
・必要に応じて、pptpd への接続制限
/etc/hosts.allow, /etc/hosts.deny にて pptpd への接続制限を設定。
■結果
以下の通り、一応正常に通信できたことを確認。
- 自宅ルータ側で、GRE プロトコルと、TCP 1723 を今回設定した自宅サーバにスルーする様に設定。
- iPhone でクライアント側設定し、3G 経由で自宅ルータの IPv4 アドレス宛 (自宅サーバ) サーバ側に、PPTP 接続が行えることを確認。
- その上で、自宅 LAN 内の機器にアクセス可能であることを確認。
- さらに、自宅ルータに当たっている IPv4 アドレスから、インターネットへ出て行っていることを確認。
- VPN 接続されている機器同士での ping 疎通が出来ていることを確認。
Tags: Debian GNU/Linux, pptp, vpn

