ネットワーク系に強い知人に依頼して、既に構築済の環境があるのだけど、
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も
似たような理由なのでしょうね。あまり他のサイトでは見かけないからなんぞや?って思ってたけど。
ということで一応の完成!!結局、既存環境のをパクってきただけだけどね^^;