ページ

2011年4月10日日曜日

CentOSでPPTP

西友に行くと、精肉コーナーには肉がなく、かわりにソーセージで埋め尽くされていた。CO-OPに行くと精肉コーナーには何もなかった。一昨日の余震の影響だろうか。別に肉がなくても生活には困らないのだけど、ガランとした陳列棚を見ると少し心細い思いがする。


さて地震以来の困りごとのひとつは、研究室へのVPNが使えないことだった。Google Scholarで論文を発見しても、大学のネットワークからでないとダウンロードできない場合が多い。研究室の建物が大きな被害を受けて立ち入り禁止になってしまった今、自宅から論文をダウンロードする手段が必要。震災以降web/mail用に教授が設置してくださった仮サーバーのroot権限をもらい、PPTPを導入することになった。意外に手こずったのでメモ。
サーバーOSはCentOS 5.5。本体はLet's noteで、NICはグローバルの1本のみ。この配下にPPTPによるVPNを作る試み。

1、pptpdのインストールと設定
参考サイトに詳しく書かれているので割愛。VPNを接続するところまでは特に問題なくできたが、VPN経由で外部のホストに接続するには以下の設定が必要。

2、iptablesの設定
/etc/sysconfig/iptables を編集する。
今回はVPN接続の目的が学内ネットワーク経由でのweb閲覧であるので、フォワーディングとマスカレードの設定が必要。

まずpptpインターフェースのフォワーディングを素通しする設定。グローバルに接続されたインターフェースのファイアーウォールを適切に設定していれば、これでも問題ないと思う。
“-A FORWARD -j RH-Firewall-1-INPUT” よりも前に以下を追記。
-A FORWARD -i ppp+ -j ACCEPT
-A FORWARD -o ppp+ -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

そしてPPTPで使うGREプロトコルとTCPポート1723へのINPUTを受け取る設定。
“-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited ”よりも前に以下を追記。
-A RH-Firewall-1-INPUT -p gre -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT

3、OSのルーティング機能を有効化
/etc/sysctl.confを開いて、"net.ipv4.ip_forward" の値を1に変更。
net.ipv4.ip_forward = 1

4、マスカレードの設定
以下を実行。
$ iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
$ iptables save       # iptablesファイルに設定を書き出し
$ chkconfig iptables on   # システム起動時にiptablesを自動起動
$ /etc/rc.d/init.d/iptables restart   # iptablesを再起動
ここで eth0 はグローバル側のインターフェース、192.168.1.0/24 はpptpクライアント側に割り当てたネットワークアドレスとサブネットマスクを適切に設定する。

/etc/sysconfig/iptablesファイルを直接編集した部分とiptablesコマンドで設定した部分とがあって、あまりスマートではないけれども、以上で目的は達成。

【 主に参考にしたサイト 】
http://yanagi-oomori.blogspot.com/2010/03/centos-54pptp.html
http://blog.kirie.net/linux/56.html
http://akagi.jp/blog/archives/15.html

1 件のコメント:

匿名 さんのコメント...

iptablesの設定で悩んでいました。
記述の順番が原因だったとは、おかげさまで
解決しましたありがとうございます。