OpenVPNサーバーのiptablesについて

2010年4月30日

OpenVPNで、サーバー側のネットワークにあるその他のPCにクライアント側から接続する方法

クライアント側ネットワーク 192.168.123.0/255.255.255.0
サーバー側ネットワーク 192.168.11.0/255.255.255.0
OpenVPNネットワーク 10.8.0.0/255.255.255.0

OpenVPNサーバーが192.168.11.9の場合、
OpenVPNサーバー内において、
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 192.168.11.0/24 -j SNAT –to-source 192.168.11.9

これで192.168.123.13から192.168.11.3などに接続出来るようになる。
pingも通ることを確認する。

:追記:

この手法だと、OpenVPNサーバー側のLAN内PCが正常にルーティング出来なくなるようである。
そのため、この手法は使用せず、

OpenVPNサーバー側のLAN内のサーバー

で、
[Linux]
route add -net 10.8.0.0 mask 255.255.255.0 gw 192.168.11.9(OpenVPNサーバー)

[Windows]
route add  10.8.0.0 mask 255.255.255.0 192.168.11.9

とする。

:追記:
route add でのルーティングはいまいち上手くいかない。
server.conf

push “route 192.168.11.0 255.255.255.0"
をすると、元々192.168.11.0/24にいるPC群は全て192.168.11.9を利用しようとするからかもしれない。

従って、OpenVPNを利用して接続する場合は条件付けを行う必要がある。

外部PC ————————– ルーター —— OpenVPNサーバー ——— その他サーバー
(OpenVPNクライアント)         121.1.253.153       192.168.11.9              192.168.11.24
202.222.19.99                 192.168.11.1
192.168.123.13

OpenVPNサーバーのserver.confでは
push “route 192.168.11.0 255.255.255.0"
として、OpenVPN側のローカルLANのネットワークを教える。
さらに
/sbin/iptablesでルーティングを行う(上述を参照)。

こうすると、
外部PCから192.168.11.24にpingを送ることが可能。
ただし、その他サーバーはOpenVPNサーバーに対してVPN接続することは出来ない。
これを行うとネットワークがうまくいかなくなる。
おそらくだが、OpenVPNを起動していると10.8.0.1と192.168.11.1のどちらに送るのか保証出来ないからでは?
※OpenVPNサーバー内でさらにルーティングして外に出るようにすれば問題無いのかもしれないが。

つまり、OpenVPN側LANではVPN接続するとインターネットが出来なくなるので注意。
ということ。
OpenVPNはあくまで外部ネットワークから社内LANにアクセスする場合にのみ使用せよ。ということ。

2007/08/18

古いサーバー(RedHat)などに入れてOpenVPNを構築すると、
すぐにタイムアウトしてしまったり、ルーティングがうまくいかなかったりする。
もしかしたらルーターの問題かもしれないが、これは要調査が必要。