旅モバ

旅、モバイル、サーバ関連(Linux,FreeBSD)、クラウド・Webサービス、その他PCの話題など。

CentOS6にpptpdをインストールしてPPTP接続できるようにする

iPhoneAndroidPPTP VPNで接続したかったので、CentOS6にインストールしてみましたのでメモとして設定方法を残すことにします。

yum

yum -y pptpd

/etc/pptpd.conf

option /etc/ppp/options.pptpd
logwtmp
debug
connections 10
localip 192.168.20.1
remoteip 192.168.20.2-10

/etc/ppp/options.pptpd

以下の設定を追加(それ以外は標準のままとする)

ms-dns 8.8.8.8
ms-dns 8.8.4.4
mtu 1280
mru 1280

/etc/ppp/chap-secrets

以下の記述を追加する
user…接続ユーザー名
password…接続パスワード

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
user * password *

iptables

以下の設定を追加する。

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.20.0/255.255.255.0  -j MASQUERADE ! -d 192.168.0.0/16

内部でスタティックルーティングを構成している場合、ルーティングしているネットワークをIPマスカレードから除外する必要があるので、「! -d 192.168.0.0/16」という表記を追加する(プライベートIP等)。(これを設定しないとルーティングすべきトラフィックがルーティングされずにデフォルトゲートウェイから外部に出てしまう)なお、「192.168.0.0/16」は環境に応じてよしなにしてください。

設定例
#!/bin/bash

VPN="10.1.0.1/32"
LAN="192.168.0.0/16"

/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP

/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -s $VPN -j ACCEPT
/sbin/iptables -A FORWARD -s $VPN -j ACCEPT
/sbin/iptables -A INPUT -s $LAN -j ACCEPT
/sbin/iptables -A FORWARD -s $LAN -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

/sbin/iptables -A INPUT -f -j LOG --log-level debug --log-prefix 'FRAGMENT DROP:'
/sbin/iptables -A INPUT -f -j DROP

/sbin/iptables -A INPUT -p tcp --dport 4126 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -d 255.255.255.255 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset

/sbin/iptables -N PINGOFDEATH
/sbin/iptables -A PINGOFDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
/sbin/iptables -A PINGOFDEATH -j LOG --log-level debug --log-prefix 'PINGDEATH DROP:'
/sbin/iptables -A PINGOFDEATH -j DROP
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j PINGOFDEATH

/sbin/iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
/sbin/iptables -A INPUT -p 47 -j ACCEPT

iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.20.0/255.255.255.0  -j MASQUERADE ! -d 192.168.0.0/16