SSブログ

VPNを構築しよう・その6・ルーティングモードでのOpenVPNサーバセットアップ [Linux(Network/VPN)]

 こんどは、「ルーティングモード」でのOpenVPNサーバセットアップについて書いておく。

 その2までは全く一緒。違うのはここから。

 その4との差分としては、手順1は不要なのでばっさり省略する。ブリッジモードではないのでブリッジユーティリティは必要ないのであった。
 手順2・手順3はそのまま実行する。ここの手順は全く一緒なのであった。
 手順4は、以下のとおり。
1./etc/sysctl.confの修正は実施する。
2.sample-scriptディレクトリからコピーするファイルは、openvpn.initのみ。
3./etc/init.d/networkをコピーしたり編集したりする作業は実施するが、bridge-startとかbridge-stopとかの追記は省略。(コピーしてないからね!)

 で、server.confについては内容が若干変わるので、まずはサンプルから。
[root@nanako openvpn]# cat server.conf
# OpenVPNサーバ設定ファイル

# openvpnデーモンのパーミッション設定
user    nobody
group   nobody

# ポート設定
port    1194
proto   udp

# デバイス設定
dev     tun

# 証明書・鍵ファイル設定
ca      /etc/openvpn/keys/ca.crt
cert    /etc/openvpn/keys/nanako.crt
key     /etc/openvpn/keys/nanako.key
dh      /etc/openvpn/keys/dh1024.pem

# ネットワーク設定
server  192.168.9.0 255.255.255.0
ifconfig-pool-persist   /etc/openvpn/ip-pool.txt

# ルーティング設定
push    "route 192.168.1.0 255.255.255.0"

# 接続設定他
client-to-client
keepalive       10 120
comp-lzo
max-clients     5
persist-key
persist-tun

# ログ設定
status          /var/log/openvpn-status.log
log             /var/log/openvpn.log
verb            3

 ルーティングモードでは、仮想ネットワークデバイス名の指定には「dev tun」と書く。
 また、「server」の設定項目には、VPNクライアントがつながる専用の仮想ネットワークセグメントを用意する。このサーバ「nanako」は、192.168.1.2が本来のIPアドレスだとすると、VPNクライアントに払いだしているIPアドレスのセグメントは192.168.9.0/255.255.255.0というネットワークアドレス帯になる。なお、先頭のアドレス(ここでは「192.168.9.1」はOpenVPNサーバが使用するので、実際に払いだされるアドレスの先頭は「192.168.9.2」からということになる。


 で、ルーティングモードはブリッジモードで実施しなかった作業が1個追加で必要となる。
 ルーティングモードでは、VPNクライアントは「クライアント用の仮想的なネットワークセグメント」に接続されるので、このままでは本来のネットワーク帯にアクセスすることが出来ない。(閉じ込められた状態)そこで、OpenVPNサーバにルーティングの設定を導入しなければならない。さらに、本来のネットワークに接続されているサーバ等に、「クライアント用の仮想的なネットワークセグメント」にパケットが帰るための設定が必要になる。

 クライアント用の仮想的なネットワークセグメントから、本来のネットワークへの通信を透過するには、iptablesを使うのが一般的だと思う。その一例を示すと…
 iptables -t nat -A POSTROUTING -s 192.168.9.0/24 -o eth0 -j MASQUERADE
 とかこんな具合だろうか。NICのデバイス名とかIPアドレスとかは適切に変更してもらいたい。また、あて先のIPアドレスを縛りたい場合もその辺は適切に修正してくれたまえ。(笑)

#iptablesについてはまたの機会に…

 で、一方、本来のネットワークからクライアント用の仮想的なネットワークに通信を返すための設定には、/etc/sysconfig/static-routesを編集するとか、routeコマンドでその場しのぎをするとかあると思う。一例を示すと…
 (/etc/sysconfig/static-routesに以下の行を書き加える)
any net 192.168.9.0 netmask 255.255.255.0 gw 192.168.1.2

 (routeコマンドで対応する場合)
route add -net 192.168.9.0 netmask 255.255.255.0 gw 192.168.1.2

 アドレスとかは適宜適切なものに直して欲しい。(はにゃ~?うぃんどうず?なにそれおいしいの?)
 さらっと解説すると、「192.168.9.0」は、VPNクライアントが接続される仮想的なネットワークのアドレス帯。その後ろの「netmask」に続く値は、仮想的なネットワークアドレス帯に対するネットマスク値。「gw」に続くアドレスは、OpenVPNサーバの本来のアドレス

 これで、仮想的なネットワークアドレス帯と本来のネットワークアドレス帯との間を行ったり来たりすることが出来るようになった。

 なお、ルーティングモードで使用した場合、たとえば自宅内や会社の中のWebサーバ、あるいはsambaサーバでIPアドレスに基づいて制限をかけている場合は、そのままではVPNクライアントからの接続が許可されないので設定変更が必要になる。

 たとえば、Apache2のhttpd.confにこう書いてあったとする。
deny from all
allow from 192.168.1.

 自宅内ネットワーク、あるいは会社内のネットワークで「192.168.1.ナントカ」からのアクセスは受け付ける設定になっているとする。この場合、VPNクライアントのソースアドレスは「192.168.9.ナントカ」になるので、allowされないことになる。
 VPNクライアントからのアクセスも許可する場合は、
deny from all
allow from 192.168.1. 192.168.9.

 というように、allow fromの箇所にVPNクライアント用の仮想的なネットワークアドレス帯からのアクセスも許可するよう追記する必要が生じる。もちろん、VPN経由でのアクセスを許可しない箇所については、追記しないように。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。