2012年11月16日

VPNサーバーの構築

えー。初めてVPNサーバーの構築に挑みました。

ネットワーク系に強い知人に依頼して、既に構築済の環境があるのだけど、

Server機がちょっと過負荷になって来たので^^;

Server機は、OpenBlocks600という製品を利用していて、OSはSSD/LINUXという限られたハードウェアリソースでも

性能を発揮できるようにされた独自Linuxディストリビューションが搭載されている。

今回は、機器自体を通常サーバーに変更するので、上記のディストリビューションに拘る必要はない。

ということで、馴染みのあるCentOSを採用w

まあ、情報は色々あるし、鍵や、設定ファイル系は既存の環境を流用するため敷居も低いはずなのでトライ!!

ちなみに環境はCentOS6 , Openvpn 2.2.2-1.el6

まず、yumでさくっとインストールしようと思ったら、CentOS標準のリポジトリにはOpenVPNが無いみたい。

Fedoraプロジェクトのリポジトリ(EPELリポジトリ)を追加すれば利用できるようなのでやってみる。

wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
rpm --import RPM-GPG-KEY-EPEL-6
rm -f RPM-GPG-KEY-EPEL-6

vi /etc/yum.repos.d/epel.repo

----- 以下の内容で新規作成 -----

[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0

--------------------------------

yum --enablerepo=epel install openvpn

おー。無事に入った。

次に、OpenVPNサーバーの鍵と証明書を作るのだけど、今回は既に環境があるので鍵は流用するので省略。

ちなみに、build-key-server コマンドを使ってやるらしい。

既存の環境から、鍵と証明書を取ってきて、/etc/openvpn/keys配下に配置した。

ca.crt dh1024.pem server.crt server.key

次は設定ファイル。これも流用。内容は以下の感じ。

port 1194
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.0.0
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"

max-clients 255
max-routes 255

client-config-dir /etc/openvpn/ccd

route 192.168.2.0 255.255.255.0
〜〜〜
route 192.168.254.0 255.255.255.0

client-to-client
keepalive 10 120
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
#log-append /var/log/openvpn.log
verb 3

次は、IPマスカレードの設定が必要。これも既存のを流用〜。

肝となる部分は以下だと思われる。

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

さて、こんな感じで起動してみたところ、サーバー、クライアントともにtun0が出来た^^

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:72 errors:0 dropped:0 overruns:0 frame:0
TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:5864 (5.7 KiB) TX bytes:6228 (6.0 KiB)


これで通信できるはずだったのだけど、クライアントからサーバーへは通信できるのだが、

サーバー経由で同一セグメントのPCに通信できない、

サーバーからクライアントがうまくいかないなど、VPNとしては微妙な挙動をする。。。

F/Wは恐らく問題ないと思っていたので、ルーティング関係を疑いつつ、既存の環境と見比べる・・・

route の結果も特に変わらず、何が違うのかなぁとしばらくハマっていると、

なんか、既存の環境には、/etc/openvpn/ccdにファイルがいっぱいある。

それぞれの内容は、iroute 192.168.2.0 255.255.255.0 となっている。

とりあえず、これらをごっそりと持ってきた所、で、き、た!!!

どうもサーバー側は、クライアントがNATしてくることを前提にしているっぽくて、

発信元アドレスがサーバー側が認識していないレンジにあるからうまくいかないから、

OpenVPNのCCDにirouteを追加するんだよー的なものを後で見つけた。なるほどね。

server.confに記載していた、route 192.168.2.0 255.255.255.0〜route 192.168.254.0 255.255.255.0も

似たような理由なのでしょうね。あまり他のサイトでは見かけないからなんぞや?って思ってたけど。

ということで一応の完成!!結局、既存環境のをパクってきただけだけどね^^;
posted by hana at 11:19| Comment(0) | TrackBack(0) | Linux関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック