さくらのクラウドにCentOS6でVPNルーターを構築する


前回、VyOSで簡単にVPNルーターを構築してみましたが、ルーター兼自社社員専用グループウェアをインストールしたWEBサーバーを構築したい場合は、CentOSで構築するという手もあります。ネットワーク構成は前回と一緒で、eth0にグローバルIPアドレスが付与され、eth1にプライベートIPアドレスを自分で付与することにします。

nwmap_centos_20150218

eth1へのIPアドレス付与は、 /etc/sysconfig/network-scripts/ifcfg-eth1 を直接作成して編集します。

$ cat << _EOL_ | sudo tee /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
NETMASK=255.0.0.0
IPADDR=10.0.0.10
_EOL_

■ PPTPサーバー インストール

pptpdパッケージをインストールします。CentOSでは、このパッケージはepelリポジトリにありますので、epelリポジトリがない場合は、あらかじめインストールしておいてください。さくらのクラウドやさくらのVPSではepelリポジトリが最初からインストールされ、有効化されているので、次のようにいきなりインストールしてしまいましょう。

$ sudo yum install pptpd

■ PPTPサーバー 設定

・ /etc/pptpd.conf 編集

自分自身のIPアドレスと、VPNクライアントに配布するIPアドレスの範囲を指定します。

$ sudo cp -p /etc/pptpd.conf{,.orig}
$ cat << _EOL_ | sudo tee -a /etc/pptpd.conf
localip 10.0.0.10
remoteip 10.0.0.231-240
_EOL_

・ /etc/ppp/chap-secrets 編集

VPNクライアントが使うアカウントを、以下のパラメーターで設定します。

アカウント名: nullpopopo
パスワード: P@sSw0rD

$ sudo cp -p /etc/ppp/chap-secrets{,.orig}
$ echo "nullpopopo pptpd P@sSw0rD *" | \
awk '{print $1"\t"$2"\t"$3"\t"$4}' | \
sudo tee -a /etc/ppp/chap-secrets

・ /etc/ppp/options.pptpd 編集

ms-dns 133.242.0.3
ms-dns 133.242.0.4

の2行を、以下のコマンドで追記します。

$ sudo cp -p /etc/ppp/options.pptpd{,.orig}
$ echo 133.242.0.{3,4} | sed -e 's/[[:space:]]/\n/g' | \
sed -e 's/^/ms-dns /g' | sudo tee -a /etc/ppp/options.pptpd

 

■ pptpd起動

以下のコマンドでpptpdを起動します。

$ sudo chkconfig pptpd on
$ sudo service pptpd start

 

■ パケット転送許可

CentOSのカーネルパラメーターは、デフォルトでパケット転送を拒否しています。以下のコマンドで値が0になっています。

$ sudo sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 0

このままでは、次の手順 NAT設定を行ってもうまく通信できないので、sysctl.confを編集してパケット転送を許可してあげることにします。

$ sudo cp -p /etc/sysctl.conf{,.orig}
$ sudo vi /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 0

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

にします。

vimを使わず、sedで編集する場合は、以下のコマンドです。

$ sudo sed -i 's/net.ipv4.ip_forward[[:space:]]*=[[:space:]]*0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf

ここまで終わったら、sysctlコマンドで反映し、確認してみましょう。

$ sudo sysctl -p
$ sudo sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 1

上記のように「net.ipv4.ip_forward = 1」と表示されていればOKです。

 

■ iptablesのNATルール作成

iptablesの設定ファイルをあらかじめ保存しておきます。

$ sudo service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

それではルールを作成しましょう。

$ sudo cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.orig
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
$ sudo iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
$ sudo iptables --append FORWARD --in-interface eth0 -j ACCEPT
$ sudo service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

PPTPサーバー側の設定は以上です。

 

■ PPTPクライアント (CentOS6)から接続してみる

・ pptpクライアントインストール

$ sudo yum install pptp pptp-setup

・ VPN接続先初期設定

$ sudo pptpsetup --create "SAKURA" --server "133.242.xxx.xxx" --username "nullpopopo" --password "P@sSw0rD" --encrypt

・ VPN接続

以下のコマンドでVPN接続します。

$ sudo pppd call SAKURA updetach
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
CHAP authentication succeeded
MPPE 128-bit stateless compression enabled
local  IP address 10.0.0.231
remote IP address 10.0.0.2

VPNがつながったらルーティング設定をしましょう。 (先にVPN経由のルーティングを設定してからeth0のデフォルトゲートウェイを削除する。順番を間違えないこと。)

$ sudo route add -net 10.0.0.0 gw 10.0.0.10 netmask 255.0.0.0 dev ppp0
$ sudo route delete default
$ sudo route add default gw 10.0.0.10

あとは、VPNサーバー 10.0.0.10 や同じネットワークにある他のノードにpingが飛ぶこと、VPNサーバーを経由してインターネットに出られることが確認できればOKです。

 

■ VPN切断

以下のコマンドでVPNを切断し、ブロードバンドルーターへのルーティングを追加します。

$ sudo pkill -f "pppd call SAKURA updetach"
$ sudo route add default gw 192.168.0.254

 

以上です。ね、簡単でしょう?

[amazonjs asin="4798121770" locale="JP" title="DVD付 CentOS徹底入門 第3版"]