CentOSにVPNサーバ(pptp)を構築




投稿日:

VPNを構築する場合、Linuxではその使い易さからよくpptp形式のVPNを利用します。
そこで用いられるのがPoptopというpptpサーバです。VPNサーバでも構築しやすく、ユーザも利用がしやすい方式です。
今回はそのインストールと基本的な構築に関してとなります。


pptpdのインストール

パッケージでインストール可能です。

http://poptop.sourceforge.net/yum/beta/packages/
こちらから最適なパッケージを選びましょう。

uname -a コマンド等で自分のマシンを確認し、合うrpmを選択します。


今回はこちらを選択。

# wget http://poptop.sourceforge.net/yum/beta/packages/pptpd-1.4.0-1.rhel5.i386.rpm

インストール。

# rpm -Uvh pptpd-1.4.0-1.rhel5.i386.rpm
警告: pptpd-1.4.0-1.rhel5.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 862acc42
準備中...                ########################################### [100%]
   1:pptpd                  ########################################### [100%]



pptpdの設定

以下が設定ファイルです。

/etc/pptpd.conf
/etc/ppp/options.pptpd
/etc/ppp/chap-secrets
/etc/sysctl.conf

/etc/pptpd.conf

#vi /etc/pptpd.conf

connections 10
localip 111.111.111.111 
remoteip 192.168.1.150-155

・connections 最大接続数。remoteipのipの数でも最大接続数は絞れます
・localip このVPNサーバのIPを指定
・remoteip VPNクライアント用に割り振りたいIPを設定


/etc/ppp/options.pptpd

#vi /etc/ppp/options.pptpd

ms-dns 8.8.8.8
ms-dns 8.8.4.4
mtu 1400

こちらの設定はデフォルトでOKですが、上記のように、DNSとmtuの設定をしておきましょう。
dnsは、8.8.8.8などでOKですし、mtuは、1400でandroidやPCからの接続に問題ありませんでした。



/etc/ppp/chap-secrets

#vi /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client        server  secret          IP addresses
# UN
hogehoge      *       hogehogehoge      *

こちらではユーザの設定をします。
clientユーザ名 宛先サーバ  パスワード IP addresses の順番で書きます。
※ 実際はユーザもPWも相当長くて複雑に設定してしまうのが良いです。今回は事前にFWで絞っていること前提なので、サーバもIPも全開です。


/etc/sysctl.conf

ipv4転送許可をします。

# vi /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

1に変更。

確認。

# /sbin/sysctl -p
net.ipv4.ip_forward = 1



その他懸念事項

・SELinuxを無効にしましょう。

確認

# /usr/sbin/getenforce
Enforcing

# /usr/sbin/setenforce 0
# /usr/sbin/getenforce
Permissive

#  vi /etc/selinux/config
SELINUX=disabled

動的にOFFになっているだけなので、再起動してdisabledにしましょう。


・ログを出す。

ログを使って接続等を確認したければ、/etc/pptpd.confのdebugを有効にします。

#vi /etc/pptpd.conf

# TAG: debug
#       Turns on (more) debugging to syslog
#
debug

rsyslog.conf(syslog.conf)に”debug”を追記します。

#vi /etc/rsyslog.conf

 *.=debug;\
        news.none;mail.none     -/var/log/pptpd



反映

pptpdの再起動で反映させます。

# /etc/init.d/pptpd restart
Shutting down pptpd:                                       [  OK  ]
Starting pptpd:                                            [  OK  ]
Warning: a pptpd restart does not terminate existing
connections, so new connections may be assigned the same IP
address and cause unexpected results.  Use restart-kill to
destroy existing connections during a restart.



FWやルーターの設定で、通しておく事を忘れずに。


接続環境

# /sbin/ifconfig

これで、ppp0をみると接続状態が確認できる。








参考

以下を参考にさせて頂きました。

CentOS 6.4でPPTP VPNサーバーを構築 – DRY(日本やアメリカで働くエンジニア日記)
http://d.hatena.ne.jp/ke-16/20130329/1364579787