2017年10月28日土曜日

OpenVPN を TAP(ブリッジ)→ TUN(ルーター)へ変更

基本的に VPN と NFS を使った利用環境は構築できたので、最後に少しでも VPN を最適化しておきたくなり、OpenVPN のモードを TAP(ブリッジ)から TUN(ルーター)へ変更することにした。

.ovpn

まずはサーバー(DD-WRT)側と、クライアント側(Mac、Linux)双方で、.ovpn 中の dev 設定を tap から tun に変えることが基本となる。

dev tun

クライアント側はこれだけで他にやることはない。一方、サーバー側ではルーターモード体制に伴ういくつかの副作用的な状況を解決するための設定が必要となる。

サーバー(DD-WRT)側

設定中で tun にする以外に、VPN 専用のサブネットの設定が必要になる。DD-WRT の設定の、TUN / TAP を選択する直下の Network と Netmask の部分がそれである。ここの例では 192.168.11.0/24 としてみた。

ブリッジモードではクライアントはそのままサーバー側のサブネット(192.168.0.0/24 とする)に参加する形となり、VPN サーバーが DHCP サーバーとしてクライアントに IP プールの中から一つ割り当てる形だった。ルーターモードでは、VPN 用のサブネット(192.168.11.0/24)丸ごとが IP プールとなりそれをクライアントに割り当てる。なので、VPN クライアントはサーバー側の本来のサブネットには直接参加しない形となるので、VPN 用のサブネットからサーバー側の本来のサブネットへとアクセスするためのルーティング設定が必要となる。そのために、DD-WRT の Additional Config においてクライアントにプッシュする形でルーティング設定をセットする。

push "redirect-gateway def1 bypass-dhcp"

※ "route 192.168.11.0 255.255.255.0" を別途 push する必要はない。redirect-gateway でリダイレクトされる Gateway 設定に同じ route 情報は含まれている。

さらに、これで VPN サブネット側のクライアントがサーバー側の本来のサブネットにアクセスできるようになったが、反対にサーバー側の本来のサブネット(192.168.0.0/24)の機器から VPN クライアントの属する VPN サブネット(192.168.11.0/24)側にアクセスできるようにもする必要がある。

このために、サーバー側のブロードバンドルーター(192.168.0.1 とする)の設定で、静的ルーティング設定として 192.168.11.0/24 のゲートウェイが DD-WRT の稼動する VPN サーバー(192.168.0.2 とする)であることを設定する。


以上で、ルーターモードで正常に稼動するようになった。OpenVPN では一般にルーターモード(TUN)が推奨されているように思われるが、まず体制を確立するのが簡単なのはブリッジモード(TAP)だと思うので、初めて挑戦する人にはブリッジモードで試すことをお勧めする。一方、レイヤー 2 の余計なパケットが流れなくなるので、トラフィック的にはルーターモードの方がより安定していることは確かである。

0 件のコメント:

コメントを投稿